反转、机器学习与每周调仓
这批样本里,增加特征几乎没有改善 Ridge 的平均排序。加密每周调仓减少了交易,计入成本后在多数窗口超过每日趋势。它与等权对照相比,优势还不明确。这段历史此前已经研究过,本轮结果仍需用新数据确认。
美股模型学到了什么
每月最多选 500 个来源候选,依据此前 20 个完整的 XNYS 交易日。冻结数据覆盖 2025-09-25 至 2026-10-20,共有 658472 个候选与日期组合。历史证券身份和类型仍不完整,不能把候选池当作已经核实的普通股全集或历史指数成分股。
本轮预测下一交易日常规时段内,末笔有效成交相对首笔有效成交的涨跌。缺少下一日标签时保留缺失。这些价格尚未通过实际成交验收,信号在收盘时可用也只是近似假设。
简单反转给当天涨跌加负号,把跌得多的候选排在前面。排序相关性用 Rank IC 表示,数值越高,分数靠前的候选后来通常表现越强。它衡量排序,还不能告诉我们组合挣了多少钱。
| 模型 | 7 月 27 日至 8 月 21 日 | 8 月 24 日至 9 月 21 日 | 9 月 22 日至 10 月 19 日 | 60 天平均 |
|---|---|---|---|---|
| 简单反转 | 0.016285 | 0.000497 | 0.069205 | 0.028662 |
| Ridge,六项特征 | 0.020962 | −0.000037 | 0.064979 | 0.028635 |
| Ridge,仅当天涨跌 | 0.016285 | 0.000497 | 0.069205 | 0.028662 |
| Ridge,其余五项特征 | 0.004375 | −0.010123 | 0.004021 | −0.000576 |
| 浅层梯度提升树 | 0.012298 | 0.017525 | 0.006387 | 0.012070 |
表中日期均为 2026 年,每段计划检验 20 个交易日。有标签的候选与日期组合分别为 10000、10000、9954,最后一段缺少 46 个标签。各段出现过的不同身份分别有 539、531、526 个,单日仍最多 500 个。整段超过 500 是因为名单按月更新。
只用当天涨跌的 Ridge,在三段中都给出了与反转完全相同的排序。六特征 Ridge 有 30 天超过反转,60 天平均略低于反转。去掉当天涨跌后,其余特征几乎没有排序效果。树模型有 34 天超过反转,平均相关性仍更低。胜出的天数和差距大小反映不同情况,需要一起看。
网页也保留了按当天涨跌排序、统一预测为零的对照。统一预测为零时,所有分数相同,排序相关性无法计算。模型和零预测可以比较预测误差,两条原始排序规则尚未校准成收益预测,不报告其误差平方。
模型怎样检验
研究沿用可选的 predictive 环境,使用 scikit-learn 1.7.2。每段测试前至少有 126 个日历训练日期,最后 20% 用于内部验证。同一天的候选始终放在一起,训练标签的结束时点必须严格早于下一阶段的决策时点。缺失值估算和 Ridge 缩放只学习训练数据。
Ridge 对三组特征分别比较 alpha 为 0.1、1、10 的设置。六项原始特征是当天涨跌、日内价格范围、相对成交额、报价价差、有效报价分钟占比、有成交分钟占比。另两组分别只保留当天涨跌,以及只保留其余五项。机器键仍使用 session_return、range_fraction、relative_dollar_volume、median_spread、quote_fraction、active_fraction。
树模型使用 HistGradientBoostingRegressor,最多 100 轮、7 个叶节点,每个叶节点至少 100 个样本。学习率为 0.05,L2 惩罚为 1.0,最多 63 个分箱,随机种子为 42,只比较深度 2 和 3。提前停止关闭,避免随机划出的验证样本替代时间顺序检验。三段都选中了深度 3。
参数按内部验证期的每日排序相关性平均值选择,至少需要 20 个有效日期,每天至少 30 个不同候选。相关性相差不超过 1e-12 时,先比较平均预测误差,再按参数声明顺序决定。无法计算的组保留原因。本轮实际拟合 45 次,使用单工作进程、最多两个计算线程,子进程上限 1200 秒,没有扩展搜索或自动重试。
本轮还按月份、此前成交额和当天价差分组。分界只看特征日期完整候选池,先分组,再检查后来的标签。首版代码用了有标签的样本来确定分界,回归测试已复现并修复。修正只读取冻结输入和 12 份已保存的预测文件,重新汇总分组,没有新增拟合。原报告保留备查,预测值和整段结果没有变化。系数方向和分组比较只帮助理解样本,尚不能说明因果关系。
加密少交易以后怎样
数据仍是原来的 8 个固定现货币种、12 个独立窗口。每个窗口预热 252 天,计分 90 天。运行前核对了原有冻结清单和 8 份行情文件。这些数据尚不能代表按历史时点还原的完整币种市场。
严格趋势规则选择价格高于 200 日均线的币,再按 40% 年化波动目标限制总持仓,不加杠杆。每周策略首次配置后,只在周一 UTC 决策日期调整,其余日期持有原来的币数和现金。持仓比例会随价格变化,信号和风险变化可能要等到下一周才处理。计算仍近似按当天收盘价格决策,再经历下一日涨跌。
本轮保留五个账户。每日趋势和每日等权对照沿用原规则,再加入每周趋势、同日历等权、每天匹配敞口的等权对照。同日历对照在相同日期调整,目标总持仓比例相同,之后的实际比例可能不同。敞口对照每天匹配每周趋势账户当时投在币上的比例,所用信息早于下一日涨跌,但它会更频繁地交易。网页同时列出换手和平均持仓比例。
单边总成本分别按 35 和 50 个基点计算,每买卖一笔金额收取 0.35% 或 0.50%。这是费用情景,尚未对应具体交易场所的费率表。
| 每周趋势与谁比较 | 单边总成本 | 胜出的窗口 | 配对收益变化中位数 |
|---|---|---|---|
| 每日趋势 | 35 个基点 | 7/12 | +2.512 个百分点 |
| 每日趋势 | 50 个基点 | 8/12 | +2.879 个百分点 |
| 同日历等权 | 35 个基点 | 5/12 | −0.383 个百分点 |
| 同日历等权 | 50 个基点 | 5/12 | −0.475 个百分点 |
| 每天匹配敞口的等权 | 35 个基点 | 5/12 | −0.268 个百分点 |
| 每天匹配敞口的等权 | 50 个基点 | 5/12 | −0.326 个百分点 |
平均累计换手从每日趋势约 9.78 倍降至每周趋势约 4.02 倍。每次交易金额除以当时账户净值,再累加,得到累计换手。35 个基点时,各窗口平均净收益从 10.62% 升至 13.48%,50 个基点时从 9.02% 升至 12.81%。这些都是分别起算的 90 天账户均值,不能当作年收益或连续账户表现。每日基线已复现,历史公开快照保持完整。
120 个含费账户和对应的 120 个零费账户全部完成,整批运行上限为 600 秒。各费用情景重新计算现金、持仓与净值,费用由账户现金和交易资金承担。零费账户按相同规则独立运行,持仓漂移和敞口对照也重新计算,因此成本影响包含账户路径随费用发生的变化。日线仍无法证明盘口深度、滑点、容量或真实做市成交,USDT 也不同于 USD。
复现与后续观察
先配置绝对路径 DATA_ROOT,把 UV_PROJECT_ENVIRONMENT 放在仓库外。真实运行需要项目数据目录下的一次性预约,绑定协议、输入哈希、代码、依赖锁和输出位置。同一协议与输入换目录或改代码,都不能自动获得新预算。已有结果或状态不明的启动记录会被拒绝。
这两条预约运行命令需要包含相应 uv.lock 的源码目录,启动前会核对记录中的锁文件哈希。它们尚不检查已安装包内部是否被任意修改,请按下面的锁定环境命令安装。
cd research/equity-lab
uv sync --locked --group dev --extra predictive
uv run --locked --extra predictive python -m equity_lab.predictive.incremental_cli --help
cd research/crypto-mm
uv sync --locked --group dev
uv run --locked python -m crypto_mm.daily.weekly_cli --help
两条命令都需要 --input、--output、--reservation。根项目通过子进程和带版本的文件调用研究包。新的公开文件 incremental-research.v1.json 只保留汇总,门禁检查字段、日期、样本数与配对账户身份,再核对经过审查的规范化哈希。中英文页面使用同一组事实。原始数据、逐候选预测、系数和本地运行记录继续留在仓库外。
后续人工观察仍是一份未启用的提案,包含简单反转与完整 Ridge,以及每周趋势和两个等权对照。新数据评估前,需要固定模型和协议哈希、数据截止时间与最早观察日期。树模型保留在历史结果里,单个时期较好还不足以提升其候选地位。已有六候选登记保持原状,本轮未启用调度。
美股正式收益评估仍需要带日期的身份和证券类型证据、公司行动覆盖,以及成交价格与成本验收。扩大全市场和增加更深模型留在后续。原有引擎、交易目标交接与券商行为保持现状。