讯号不是人工判断,而是由 mom-v1.0 动量与平均成本模型 对真实日K批量计算后入库, 再由自动工作循环读取并筛选。核心脚本与调用关系:
app/momentum_model.py 核心算法:3/5日平均成本序列、成本上下归类、70/30切分、T+H收益与胜率/期望统计。app/storage.py(save_momentum_model_for_batch / _merged_rows_for_batch):把真实日K多源合并去重后调用①,并把结果双写入 momentum_cost_daily、cost_expectation 表。autopilot/handlers.py:strategy_compute 触发②重算;factor_backtest → _evaluate_mom_factor 读取样本外结果,判定因子 active/degraded,并登记因子 mom_cost_above_buy_5。autopilot/scripts/render_buyreport.py:读取最新批次样本外结果,按阈值生成 /buyreport/ 报告与提醒。
数据源:真实日K(tencent/sina,本批主源 tencent),表 daily_kline;
全部数字可由上述脚本用生产合并口径原样复算,未使用任何模拟数据。
第一步 · 平均成本线:窗口 n∈{3,5}。优先用窗口内真实成交额对典型价 ((最高+最低+收盘)/3)做成交额加权 VWAP;窗口内有额日≥1 即按可得日加权(amount_vwap / amount_vwap_partial), 窗口完全无成交额时才降级为 n 日收盘均价(close_sma)。
第二步 · 上 / 下判定(函数 _bucket,临界=0 归“之上”):
第三步 · 动作象限:模型对每个交易日分别统计四种情景:成本之上·多头(above_buy)、 成本之下·多头(below_buy)、成本之上·空头/规避(above_sell)、成本之下·空头/规避(below_sell)。 本买入讯号因子 mom_cost_above_buy_5 只采用「3日平均成本之上 · 多头」这一象限。
对满足象限的第 t 日收盘,观察其后 H 个交易日的收益(收盘对收盘,毛口径,未扣佣金/印花税/滑点):
每一笔的 R 汇总后:胜率 = R>0 的笔数 / 总笔数 ×100%; 期望平均收益率 = 所有 R 的算术平均值 ×100%;另给中位数。
按时间顺序把全部交易日固定切成两段(常量 IS_RATIO=0.70,不随机打乱,保证可复算):
分档阈值(严格大于): A 高胜率讯号档 样本外胜率 > 55% 且 期望收益 > 1.5%; B 备存档 胜率 > 51% 且期望为正、但未达 A。因子状态非 active(降级/失效)时一律不入选、不提醒。
20261010162357-fdb15fb3cost_expectation,batch_id=20261010162357-fdb15fb3,即:在样本外 102 次“收盘站上3日平均成本”的情形里,持有5日后上涨占比 59.80%, 平均收益 +2.425%。以最新3日成本 162.380 作参考成本,期望目标价 = 162.380×(1++2.425%/100) = 166.318(即 /buyreport/ 上展示的参考成本→期望目标价)。
注意:当前收盘 157.80 相对3日成本的位置为 -2.82%(收盘在3日平均成本下方); 本页展示的是“最近一次达标批次”的统计结论与参考成本,是否再次满足“成本之上”需以信号触发当日收盘为准。
| 情景(样本外) | T+1 | T+3 | T+5 | T+10 |
|---|---|---|---|---|
| 成本之上 · 多头 | 50.49% n=103 · 均+0.361% | 55.88% n=102 · 均+1.387% | 59.80% n=102 · 均+2.425% | 60.20% n=98 · 均+3.885% |
| 成本之下 · 多头 | 47.19% n=89 · 均+0.310% | 54.55% n=88 · 均+0.646% | 52.33% n=86 · 均+1.027% | 55.29% n=85 · 均+3.595% |
| 成本之上 · 空头/规避 | 49.51% n=103 · 均-0.292% | 44.12% n=102 · 均-1.141% | 40.20% n=102 · 均-1.983% | 38.78% n=98 · 均-2.960% |
| 成本之下 · 空头/规避 | 50.56% n=89 · 均-0.235% | 45.45% n=88 · 均-0.503% | 46.51% n=86 · 均-0.720% | 44.71% n=85 · 均-2.800% |
| 情景(样本外) | T+1 | T+3 | T+5 | T+10 |
|---|---|---|---|---|
| 成本之上 · 多头 | 51.40% n=107 · 均+0.476% | 54.72% n=106 · 均+1.517% | 60.38% n=106 · 均+2.267% | 56.86% n=102 · 均+3.433% |
| 成本之下 · 多头 | 45.88% n=85 · 均+0.163% | 55.95% n=84 · 均+0.446% | 51.22% n=82 · 均+1.163% | 59.26% n=81 · 均+4.151% |
| 成本之上 · 空头/规避 | 48.60% n=107 · 均-0.394% | 45.28% n=106 · 均-1.258% | 39.62% n=106 · 均-1.821% | 42.16% n=102 · 均-2.502% |
| 成本之下 · 空头/规避 | 51.76% n=85 · 均-0.104% | 44.05% n=84 · 均-0.325% | 47.56% n=82 · 均-0.868% | 40.74% n=81 · 均-3.368% |
读法:同一持有期,“成本之上·多头”期望显著为正、“成本之上·空头/规避”期望为负, 两者互为镜像,说明“站上成本时偏多”在该股历史样本外具备方向性;T+1 胜率与期望都较弱, 信号更偏 T+5/T+10 的短中线而非隔日。
脚本:app/momentum_model.py(算法)· app/storage.py(真实K合并与双写)·
autopilot/handlers.py(重算/评估/active闸门)· autopilot/scripts/render_buyreport.py(报告)·
autopilot/scripts/render_signalmethod.py(本页)。表:daily_kline / analysis_batch /
momentum_cost_daily / cost_expectation(data/quantana.db)、research_factor(autopilot/autopilot.db)。