worklog

2026-02-19(二):数据字段整理

把策略用到的所有数据字段做一次完整梳理:每个字段是什么、从哪来、在策略里怎么用。这份清单也为将来如果换数据接口做准备。


一、总览

策略总表 strategy_data.csv 共 14 个字段,按用途分为五类:

分类 字段 数量
行情数据 trade_date, open, high, low, close, volume, amount 7 个
均线系统 ma_5, ma_10, ma_20, ma_30 4 个
市场情绪 breadth 1 个
资金热度 heat_z 1 个
流动性 etf_turnover 1 个

数据来源:行情 + 均线 + 热度来自中证500指数(000905.SH),无需复权;广度来自成分股个股数据;换手率来自 510500 ETF。


二、行情数据(7 个字段)

来源:Tushare index_daily 接口,代码 000905.SH(中证500指数)

指数数据天然为全收益口径,不需要复权,不需要处理停牌填充。这比之前用 ETF 数据(需要后复权 + 停牌处理)简单很多。

字段 含义 在策略中怎么用 重要性
trade_date 交易日期 全表主键,所有数据按日期对齐 必须
close 收盘点位 计算均线、判断趋势方向、计算收益率、触发”首阴”信号 必须
high 最高点位 记录入场最高价(entry_high),用于 5 日不创新高止损 必须
open 开盘点位 T+1 执行:买卖信号次日以开盘价执行 必须
amount 成交额 计算 heat_z(资金热度 Z-Score) 必须
volume 成交量 辅助参考,策略核心逻辑不直接使用 辅助
low 最低点位 K 线绘图用,策略核心逻辑不直接使用 辅助

三、均线系统(4 个字段)

全部基于中证500指数的 close 滚动计算:close.rolling(n).mean()

字段 含义 在策略中怎么用 重要性
ma_5 5 日均线(MA_Support) FirstNeg 入场条件:close > ma_5(支撑有效) 必须
ma_10 10 日均线(MA_Trend) FirstNeg 入场条件:close > ma_10(趋势向上) 必须
ma_20 20 日均线 中期趋势参考,策略不直接使用 辅助
ma_30 30 日均线(MA_Filter) FirstNeg 入场条件 + 退出前提(多空分界线) 必须

四、市场情绪(1 个字段)

breadth(市场广度)


五、资金热度(1 个字段)

heat_z(成交额 Z-Score)


六、流动性(1 个字段)

etf_turnover(ETF 换手率)


七、数据检查清单

按重要性排序,如果某个字段缺失会导致什么后果:

字段 缺失后果 重要性
trade_date 无法对齐数据,程序直接报错 必须
close 无法计算信号和收益,策略完全失效 必须
high 无法执行 5 日不创新高止损 必须
open 无法计算 T+1 执行收益 必须
amount 无法计算 heat_z,通用卖出条件失效 必须
ma_30 趋势过滤和 FirstNeg 退出判断缺失 必须
breadth 无法判断冰点/过热,Composite 模式失效 必须
etf_turnover 无法确认首阴买点,FirstNeg 模式不开仓 必须
ma_5, ma_10 FirstNeg 入场的支撑/趋势判断缺失 必须
volume, low, ma_20 辅助字段,不影响策略核心逻辑 辅助

八、Tushare 数据获取汇总

build_strategy_data.py 需要从 Tushare 获取三类数据:

1. 指数日线行情

项目
接口 pro.index_daily()
代码 000905.SH(中证500指数)
获取字段 trade_date, open, high, low, close, vol, amount
优势 指数数据无需复权,直接使用

2. 市场广度(本地计算)

不需要额外调 API——基于本地已有的 stocks_data/(1074 只个股)+ csi500_components_schedule.csv(成分股时间表),在脚本里计算每天的广度。

3. ETF 换手率

项目
接口 pro.fund_daily() + pro.fund_share()
代码 510500.SH(南方中证500ETF)
计算 etf_turnover = vol / fd_share.shift(1)
注意 fd_share 先前向填充(ffill),再 shift(1) 取 T-1 值

最终产出

四步合一:指数日线 → 计算均线和热度 → 计算广度 → 计算换手率 → 合并输出 strategy_data.csv(14 列宽表)。