Files
MoFin/specs/strategy.json
T

95 lines
6.8 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"module": "strategy",
"version": "1.0",
"purpose": "策略研究模块。策略版本管理、回测、温区自适应路由、三状态模型,以及研究 Tab 的版本迭代对比表格(含综合/普适评分体系)。",
"human_help": {
"title": "策略研究(版本迭代对比)",
"description": [
"本模块是 MoFin 的策略研究面板:管理所有策略版本的迭代历史、回测结果、温区自适应路由(A股/港股独立温区)。",
"策略版本按【适应温区】展开成多行——每行显示该策略在该温区的独立表现(胜率/平均收益/笔数来自 strategy_regime_perf,每日盘后自动重算)。",
"当前温区激活区块按温区分组:当前温区排最前并高亮,组内策略按该温区胜率降序。",
"策略有三种状态:🟢 激活(当前温区路由选中)/ 🔵 可用未激活(候选池内,温区切换即可激活)/ 📚 不可用(已证伪或历史版本,路由不会选中)。",
"数据每日自动更新:strategy_period_rollup17:05 派生 1y/2y/5y 窗口统计)+ regime_perf_daily17:15 重算各温区表现)。"
],
"usage": [
"选择周期(近1月/6月/1年/2年/5年/10年)— 筛选该窗口的回测统计;1m/6m/1y 从最长区间切窗派生,2y/5y/10y 读库(派生行带 derived_from 标记)",
"选择市场(全部/A股/港股)— 港股策略带「港」徽章,A股带「A」",
"点击策略行 — 打开该策略的版本详情(含因子归因、交易明细)",
"▶回测按钮 — 手动重跑该策略回测",
"综合列 — 整体行显示温区加权综合分(按温区时长占比加权),温区行显示该温区的综合分",
"普适列 — 显示普适性评分,格式:分数/信号月数(详见下方说明)"
],
"troubleshooting": [
"某策略某些列空白 → 该周期窗口无数据或样本不足;激活策略缺失时系统自动用 10y 数据补全并标注",
"综合分偏低 → 该策略在适应温区内收益/胜率/夏普/盈亏比/回撤综合评分低,或样本量<40笔/信号月份<6导致置信系数打折",
"v_oversold 在趋势市/震荡市收益低但仍激活 → 激活只看当前温区(trend_down)匹配,其他温区行只是参考",
"普适显示 X/? 月 → 该温区总月份数据缺失(港股温区总月份按港股 market_regime 统计)"
]
},
"ai_spec": {
"apis": [
{
"method": "GET",
"path": "/api/research/strategies?period_tag=<2y>&market=<all|a|hk>",
"returns": "{strategies[{version, name, summary_stats, regime_winrates, regime_weighted, deprecated, state, state_reason, current, market, period_tag, trades_count}], regime_active[], regime_state}",
"description": "策略版本列表。summary_stats 含 win_rate/portfolio/portfolio_full/universalityregime_winrates 为每策略每温区表现;regime_weighted 为温区加权整体综合;state 为三状态(active/available/unavailable);regime_state 为 A股当前温区"
},
{
"method": "GET",
"path": "/api/research/backtest?strategy=<v>&period=<6m>&market=<all|a|hk>&capital=<1000000>",
"returns": "{trades[], summary{}, insights[], year_dist{}} — 回测结果",
"description": "运行指定策略版本回测。end_date 固定 2026-07-24(数据完整截止日),universe=market 支持 A股/港股"
},
{
"method": "GET",
"path": "/api/research/analysis?strategy=<v>",
"returns": "因子归因分析结果",
"description": "指定策略版本的因子归因分析"
},
{
"method": "GET",
"path": "/api/research/trades?strategy=<v>",
"returns": "{strategy, trades[]} — 交易明细",
"description": "指定策略版本的最新交易明细(从 strategy_research.results_json 读取)"
}
],
"dependencies": [
"strategy_lab.py — calc_summary/portfolio_sim/list_strategies 核心计算",
"hk_strategies.py — 港股策略定义(HK_STRATEGIES + strategies_for_regime",
"strategy_router.py — 双市场路由(写 data/strategy_weights.json",
"strategy_period_rollup.py — 每日派生 1y/2y/5y 窗口统计(cron 17:05",
"regime_perf.py / regime_perf_daily.sh — 温区表现重算(cron 17:15",
"strategy_research 表 — 策略版本+回测结果存储(含 market/period_tag/deprecated 字段)",
"strategy_regime_perf 表 — 每策略每温区表现(含温区级组合模拟)",
"market_regime 表 — 温区归因(date→regimemarket 维度)"
],
"constraints": [
"综合分公式(前端计算,整体行):min(ret,100)/100×30 + wr/100×20 + min(max(sharpe,0),20)/20×20 + min(pf,5)/5×15 + (1-min(dd,50)/50)×15,乘以置信系数 conf=min(1,n/40)×min(1,months/6)",
"综合分收益口径:MC 全参与(portfolio_full 优先,消除集中仓挑装运气);温区加权综合按温区时长占比加权各温区表现",
"普适性(strategy_lab.calc_summary):months=信号分布覆盖的月份数;peak_pct=信号最集中月份的占比%;score=信号月份分布香农熵归一化(0-100),分布越均匀越高",
"温区级普适(server._approx_regime_universality):信号月份≈trades/温区月均笔数,score=估算信号月份/温区总月份×100",
"激活判定(strategy_router.route):当前温区胜率≥50 且最佳温区胜率≥50,且未 deprecated",
"三状态派生(不存储):active=∈strategy_weights.activemarkets.hk.activeunavailable=已证伪(deprecated非空)或不在候选池;available=其余(候选池内未激活)",
"候选池:A股=regime_perf 有记录的策略;港股=HK_STRATEGIES 定义的策略",
"回测数据截止 2026-07-24,窗口派生锚定数据末端(非今天),避免回测未重跑时窗口缩水"
],
"must_not": [
"不要在策略代码里硬编码 deprecated 集合(必须从 strategy_research.deprecated 读)",
"不要在策略代码里硬编码激活策略列表(必须读 data/strategy_weights.json",
"不要给派生行(derived_from)覆盖真实研究记录",
"不要用 period_tag 字典序排序取 trades(必须用 LENGTH 降序最长周期优先)",
"不要污染 A股温区(读 market_regime 必须带 market='a' 过滤)"
],
"related_files": [
"server.py — /api/research/* 路由 + 三状态派生 + regime_weighted",
"static/index.html — renderStrategyTable/renderGroupByRegime/renderRegimeRow",
"strategy_lab.py — 核心计算",
"hk_strategies.py — 港股策略",
"strategy_router.py — 双市场路由",
"strategy_period_rollup.py / regime_perf.py / regime_perf_daily.sh — 每日自动更新",
"deploy/profile-scripts/health_monitor_daily.py — 健康度监控",
"docs/decisions/2026-08-15-策略自我进化闭环重构.md — 进化闭环设计"
]
}
}