已在 chinext50_regime_project/ 下搭好一条最小可运行闭环:
data/
io.py:读取 CSV / parquet 历史数据sample_data.py:生成 synthetic 创业板50风格日线与 breadth 示例数据features/
price_features.py:价格/波动/ATR/突破/效率等特征breadth_features.py:广度/集中度/扩散背离特征relative_features.py:相对沪深300/科创50/中证1000强弱pipeline.py:统一特征装配入口model/
scores.py:trend/breadth/stress/crowding/repair 五分 + 三个 hazardstate_machine.py:risk_off / repair / trend / chop / euphoric_latepolicy.py:仓位映射、硬 veto、quantized exposure、日变动上限backtest/
engine.py:next-open approximate 回测与指标计算events.py:状态切换事件切片utility.py:net utility 与状态判定walkforward.py:默认 frozen-hypothesis 窗口pipelines/
run_demo.py:端到端 demofrozen_hypothesis_validation.py:先整段算完再按测试窗切片,避免短窗冷启动tests/
chinext50_regime_project/examples/synthetic_chinext50_sample.csvchinext50_regime_project/outputs/demo/daily_ledger.csvchinext50_regime_project/outputs/demo/event_summary.csvchinext50_regime_project/outputs/demo/metrics_summary.jsonchinext50_regime_project/outputs/frozen_validation/frozen_validation_board.csvchinext50_regime_project/outputs/frozen_validation/frozen_validation_summary.jsonpytest 通过(3 个测试)还没有接入真实创业板50历史数据
回测执行层仍是近似版
权重和阈值还没有做真实数据上的 train/test 冻结校准
breadth 层仍然依赖外部聚合表
需要准备一张 point-in-time 日表,至少包含:
dateopen/high/low/close/volumehs300_closestar50_closecsi1000_closepct_constituents_above_20dmapct_constituents_above_60dmapct_new_high_20pct_new_low_20eq_weight_ret_5weighted_ret_5top3_contribution_5corr_spike_20dispersion_20不要在每个测试窗内重选赢家。流程应是:
重点评估:
第一阶段项目目标应是:
而不是直接追求“显著跑赢创业板50”。