
1) 【一句话结论】
中低频策略数据管理需通过标准化流程整合多源数据(交易所API、Wind等),重点处理数据延迟、缺失值、异常值,并确保时间与字段一致性,为策略回测提供高质量输入。
2) 【原理/概念讲解】
数据获取和处理的核心是“多源接入-清洗-一致性验证”闭环。
3) 【对比与适用场景】
| 数据源类型 | 实时性 | 字段覆盖 | 延迟 | 适用策略类型 | 注意点 |
|---|---|---|---|---|---|
| 交易所API(Level-2) | 分钟级实时 | 交易细节(买卖盘、成交量、成交额) | 1-5分钟 | 日内交易、事件驱动策略 | 需低延迟,避免信号延迟影响 |
| Wind | 日频历史 | 财务、估值、新闻、宏观数据 | 1-2天 | 价值、成长、基本面策略 | 数据更新滞后,需结合实时数据 |
4) 【示例】(伪代码+工具说明):
# 假设使用Airflow调度任务,每5分钟获取交易所数据,每日获取Wind数据
from exchange_api import get_minute_data # 交易所API接口
from wind_api import get_daily_data # Wind接口
import pandas as pd
from datetime import datetime
# 获取分钟级数据(最近60分钟)
minute_data = get_minute_data(
start_time=datetime.now() - pd.Timedelta(minutes=60),
end_time=datetime.now(),
symbols=['000001.SZ'] # 股票代码
)
# 获取日频数据(最近30天)
daily_data = get_daily_data(
symbols=['000001.SZ'],
start_date='2023-01-01',
end_date='2023-12-31'
)
def clean_minute_data(df):
# 统一字段命名
df.rename(columns={'last_price': '收盘价', 'volume': '成交量'}, inplace=True)
# 处理缺失值(前向填充)
df['收盘价'].fillna(method='ffill', inplace=True)
df['成交量'].fillna(0, inplace=True)
# 异常值处理(3σ原则)
mean_vol, std_vol = df['成交量'].mean(), df['成交量'].std()
df['成交量'] = df['成交量'].apply(
lambda x: x if (mean_vol - 3*std_vol < x < mean_vol + 3*std_vol) else mean_vol
)
return df
minute_cleaned = clean_minute_data(minute_data)
daily_cleaned = clean_daily_data(daily_data) # 同理处理日频数据
# 时间聚合(分钟数据→日频)
minute_cleaned['time'] = pd.to_datetime(minute_cleaned['time'])
minute_cleaned = minute_cleaned.set_index('time').resample('B').last() # B=工作日
5) 【面试口播版答案】
面试官您好,中低频策略数据管理的关键是构建多源数据整合流程。首先,数据源接入:通过交易所Level-2接口获取分钟级实时行情(价格、成交量等),通过Wind获取日频历史数据(财务、估值等)。然后,数据清洗阶段:统一字段命名(比如把交易所的“close”改成“收盘价”),处理缺失值(分钟数据用相邻分钟值填充,日频用前/后交易日填充),异常值用3σ原则检测并修正。接着,确保数据一致性:时间上把分钟数据按5分钟聚合为日频,与Wind数据对齐;字段上统一单位(如价格都是元,成交量都是股);还用版本控制记录数据源和处理逻辑,方便排查问题。这样就能为策略回测提供高质量数据。
6) 【追问清单】
7) 【常见坑/雷区】