每日复盘|2026-10-14
今天是 10 月 14 日,星期三。
今天上午和下午都在学量化,依旧是按照之前确定好的计划,进行每天的学习。
之后,我总结了前三周学习的内容。
具体内容如下:
📄 三周学习脉络
三周下来,手里已经有三份小实验:平安银行的双均线、五只 ETF 的动量轮动、美股上的五日反转。它们看起来像三件作品,其实是同一条实验流水线被加厚了三次。
原料始终是行情。中间依次经过信号、持仓、记账、成本和压力测试。最后交出来的,是一份写明边界的结果。后面几周还是沿着这条流水线往下长,不另起炉灶。
读图时先看主干,再看每一支下面的具体做法。主干是:
数据 → 信号或因子 → 持仓 → 收益与风险 → 成本与衰减 → 稳健性与报告
第一周把整条流水线走通。第二周把“一只标的”换成“一组标的”。第三周把“一条交易规则”换成“一个可以检验的因子”。
flowchart TB
root["从行情走到可复现结论"]
root --> D
root --> S
root --> P
root --> R
root --> C
root --> B
root --> N
subgraph D["数据"]
d1["第一周看一只股票的开高低收和成交量"]
d2["一行就是一天的市场快照"]
d3["研究用收益率,净值靠连乘而不是相加"]
d4["第二周把五只ETF铺成日期对齐的宽表"]
d5["第三周用复权价,股票名单事先定死"]
d6["按最终收益删股票,会把差样本悄悄扔掉"]
end
subgraph S["信号与因子"]
s1["均线把过去的价格抹平,再决定持有或空仓"]
s2["动量在同一天让标的互相排名"]
s3["五日反转把跌得多的股票排到前面"]
s4["去极值、减均值、除标准差都在当天横截面完成"]
s5["因子值高只说明历史排序,还没证明未来会涨"]
end
subgraph P["持仓"]
p1["今天收盘才知道信号,明天才开始持有"]
p2["月频调仓后,权重一直填到下次换仓"]
p3["多头一共半仓,空头一共半仓"]
p4["净敞口为零,市场涨跌不直接进组合"]
p5["毛敞口仍为一,选股带来的风险还在"]
end
subgraph R["收益与风险"]
r1["策略收益用昨天的权重乘今天的收益"]
r2["波动、回撤和夏普一起看赚得晃不晃"]
r3["旁边放买入持有或等权基准,才知道钱从哪来"]
r4["Rank IC 看因子排序和下一日收益是否同向"]
r5["五组收益大致递增,多空才站得住"]
end
subgraph C["成本与衰减"]
c1["单标的数交易次数,多标的改算换手率"]
c2["旧仓全部卖掉再全买新仓,换手率是 2"]
c3["扣掉成本后还剩多少,才谈得上能不能做"]
c4["衰减图看这层预测力能撑过几天"]
end
subgraph B["稳健性与报告"]
b1["参数在看结果之前写好"]
b2["相邻参数差不多,比单格最高更有信息"]
b3["样本外只检验已经冻结的主参数"]
b4["报告先写结果,再写限制和不可靠的地方"]
end
subgraph N["后面继续长"]
n1["先用已有结果写完第三周因子报告"]
n2["第四周做跳过近五日的六十日动量"]
n3["同一股票池上比较它和反转是否同一种下注"]
n4["再补显著性、行业市值暴露和多因子合成"]
n5["最后收成可复现的研究平台和总报告"]
end
每走到一个节点,固定问四句:
- 这一步的对象到底是什么。
- 它凭什么可能有效,对应哪句经济直觉。
- 用哪张表、哪个数来验证。
- 什么样的错误会让这个数看起来很好,其实是假的。
这四句比任何单个指标都更接近量化研究的习惯。下面按图上的六支展开。
数据:先确认你看到的是当时的市场
行情表里,一行是一个时点的市场状态。日线就是这一天的开盘、最高、最低、收盘和成交量,合称 OHLCV。分钟线则是这一分钟的同一组状态。频率变了,行的含义跟着变,后面的信号和收益都会变。
价格和收益率要分开拿。价格 105 是水平,收益率 0.05 是今天相对昨天的变化,R_t = P_t / P_{t-1} - 1。量化里比较、排名、算风险,用的都是收益率。多天积累下来的结果叫净值:把每天的 1 + R 连乘,再减 1。把每天的涨跌幅直接相加,复利会被算丢,一段时间的盈亏会对不上曲线。
第一周只让一条价格序列走完这条链路,标的是平安银行日线。先把“读数据、算收益、画净值”做稳,再谈策略。
第二周的变化只有一个形状:一列价格,变成一张价格矩阵。五行 ETF 来自股票、债券和黄金,走势差得开,排名才有区分度。表要收成宽表,行是日期,列是代码。日期必须对齐。某一天缺了一只,后面的排名和权重会悄悄错位。长表方便拼接原始文件,宽表方便同一天横向比较。
第三周进入大约 50 只美股。价格改用复权收盘价。分红和拆股会让原始价格跳一下,那一跳不是投资者真正赚到或亏掉的收益。复权之后,收益率才接得上。成交量一起留下,用来检查数据还在,第三周的因子本身不用成交量。
股票代码列表在下载前固定。看完回测再删掉表现差的股票,等于用结果挑选样本,样本会被美化。还有一层更隐蔽的问题:池子里多是现在还在交易的公司,退市的公司不在里面。这叫幸存者偏差。差股票如果中途消失,反转和收益都可能被抬高。第三周不伪造历史成分股,只在报告里把这件事写成限制。
这一支要问的是:做决策的那天,这行数据是否已经公开。股票是事先圈定的,还是看完曲线才留下的。
信号与因子:你在赌的到底是哪句话
第一周的信号是时间序列信号。MA20 是过去 20 个收盘价的平均,MA60 是过去 60 个收盘价的平均。均线做的是平滑:把每天的锯齿抹掉,留下慢一点的方向。规则很短,MA20 高于 MA60 就准备持有,低于就准备空仓。这里比较的是同一只股票和它自己的过去。
第二周换成横截面。动量定义为过去 N 日的涨幅,P_t / P_{t-N} - 1,主参数用 60 日。同一天,五只 ETF 放在一起排名,取得分靠前的。这里比较的是同一天的不同标的。时间序列问“它比自己以前怎样”,横截面问“它比今天的同伴怎样”。两个问题都能做策略,验证方式不一样。
第三周不再把规则直接叫策略,而把它叫因子。短期反转是过去 5 日收益率取负:
Factor_{i,t} = -\left(\frac{P_{i,t}}{P_{i,t-5}} - 1\right)
跌得更多的股票,因子值更高。背后的直觉是:很短的窗口里,价格可能被流动性冲击或过度反应推离,冲击过去后,价格有机会往回走。这句话在写代码之前就是假设。数据同不同意,要等 IC 和分组来说。
因子算出来以后,还不能直接拿去排名。极端值会把当天的尺度拉歪。所以每一天单独做四件事:丢掉无效值,按 1% 和 99% 分位数截尾,减去这一天的横截面均值,再除以这一天的横截面标准差。需要排名时,再在当天做成百分位。标准化必须按天、跨股票做。把所有日期混在一起算均值和标准差,未来几天的分布就会漏进今天。
加工之后,因子值高仍然只代表“过去 5 日跌得多”。它还不代表“明天一定会涨”。
这一支要问的是:因子高的那一头,历史上发生过什么。这和你准备下注的经济故事是否是同一件事。
持仓:便签要等到明天才能用
信号是判断,持仓是下一时刻真正拿着的权重。这两个时刻差一天,是整条链路里最容易赚到假钱的地方。
均线、排名、因子都用到当天收盘价。收盘之后,这些数才算得出来。当天的收益率已经结束了。所以不能把今天的信号乘上今天的收益。正确的动作是把信号整体后移一天:今天产生判断,明天开始持有。少了这一步,回测就在用决策当时还不知道的信息,这叫前视偏差。净值会好看,实盘对不上。
第二周不是每天换仓。每月最后一个交易日收盘后重新排名,前两名各配 50%。这份目标权重要用前向填充保持到下次调仓,再整体后移一天,才是回测里的持仓。有持仓的日子,权重加总应该等于 1。前向填充回答“两次调仓之间拿着什么”,后移一天回答“这份名单从哪一天开始生效”。
第三周第一次把持仓做成多空。因子最高的 20% 做多,权重合计 0.5。因子最低的 20% 做空,权重合计 -0.5。净敞口是 0,大盘涨跌不会直接变成组合的涨跌。毛敞口仍是 1,组合还在承担被选中的那些股票自己的涨跌。权重同样后移一天。这是研究用的记账方式。它不保证真实账户借得到券,也不保证能按收盘价成交。
这一支要问的是:持仓里用到的每一条信息,是否都早于它要去赚的那段收益。
收益与风险:先看方向,再看钱晃不晃
单标的时,策略收益就是持仓乘当天收益率。持仓为 1,就吃下整天涨跌。持仓为 0,当天收益记 0。净值是这些策略收益的连乘。旁边放一条买入持有。两条曲线分开,才能看出收益来自规则,还是来自这段时间股票本身在涨。
风险至少看三个数,而且要和收益放在一起看。
- 波动率是收益率的标准差。乘上 \sqrt{252},得到按交易日近似的年化波动。它描述晃动的幅度。
- 最大回撤是净值从自己的历史高点落下的最大比例。它描述最痛的那段回撤,比总收益更接近持有体验。
- 夏普把收益均值和收益标准差放在一起,再按 252 个交易日年化。赚得多,但晃得更厉害,夏普不一定更高。
多标的时,组合收益是昨天各标的权重与今天各标的收益的乘积之和:
R_{p,t} = \sum_i w_{i,t-1} R_{i,t}
权重已经是昨天的。第二周的基准是五只 ETF 每月拉回等权。策略若只是把仓位铺开,净值会和这条基准很像。
第三周在算多空赚钱之前,先问排序有没有方向。Rank IC 是当天因子排名和下一日收益排名的 Spearman 相关。IC 为正,因子越高的股票,下一日收益的排名越靠前。要同时看四样东西:IC 的均值、IC 的标准差、ICIR(均值除以标准差)、以及 IC 为正的天数比例。均值可以很小。只要方向稳,分成组之后仍可能看得出经济上的差别。IC 在统计上站得住,只说明排序关系存在。扣费、换手之后还剩不剩,是后面那一支的事。
分组把这层关系摊开。按因子把股票切成五组。Q5 是因子最高的 20%,Q1 是最低的 20%。若五日反转成立,从 Q1 到 Q5 的收益应大致往上走。多空组合是 0.5 \times Q5 - 0.5 \times Q1。五组若忽高忽低,说明因子和收益的关系不稳定。这时多空净值即使向上,也可能只是两头碰巧拉开了距离。
这一支要问的是:赚到的是因子把股票排对了,还是大盘、少数股票、或某一段行情在帮忙。
成本与衰减:预测力会自己变旧
第一周的成本按交易次数扣。持仓从 0 变成 1,或从 1 变成 0,记一次交易。单边成本先按 0.1% 试。交易越密,同样的毛收益会被削得越薄。
标的一多,就不能再数“买了还是卖了”。要算换手率:当天每个标的权重变化的绝对值加总。上个月的两只全部卖掉,这个月的两只全部买进,换手率是 2。成本后收益等于组合收益减去换手率乘单边成本。等权基准的换手通常低,因为每月只是把权重拉回均等,很少把整组标的换掉。
第三周的多空组合每天都可能重排两端的股票,换手往往比月频轮动更高。所以同样是 0.10% 的单边成本,对它的伤害更大。比较时要看 0%、0.05%、0.10%、0.20% 几档,看结论在哪一档开始站不住。
衰减回答另一个问题:这层排序能看多远。把因子和未来 1 日、2 日、5 日、10 日的收益放在一起。若只有下一日还有同向关系,后面就平了或反了,说明它是很短的预测,拿久了会把信号拿过期。衰减图只描述预测关系。5 日收益和 10 日收益彼此重叠,不能当成一批独立样本去算显著性。
这一支要问的是:扣完成本还剩多少。预测力在第几天附近变弱。
稳健性与报告:好看的一格先放着
参数在打开结果之前写下来,数量也事先限死。第一周只比几组均线,例如 5/20、10/30、20/60、50/200。第二周是动量窗口 20、60、120,再配上持有前 1、2、3 名。第三周是反转窗口 3、5、10 日,分组比例 10%、20%、30%。这些格子的用途,是看邻居是否差不多。整张表里收益最高的那一格,不能命名为最佳参数。用同一段数据既发现规则又证明规则,规则会贴住历史。
样本也要事先切开。第二周在 2025 年 8 月之前选择,之后只做检验。第三周的样本内是 2018 到 2022,样本外是 2023 到 2025。主参数冻结为五日反转、多空各 20%、单边成本 0.10%。看样本外之前,不因为样本内的九组表去改这组参数。样本外变差,说明样本内的好结果可能靠着那段行情,或靠着参数刚好贴合了历史。
报告沿着同一条流水线写,不另起一套叙事。需要回答的是:研究问题是什么,数据从哪来、缺了什么,因子怎么算、怎么去极值,前视偏差怎么挡住,IC 是否稳定,五组是否单调,成本前后差多少,衰减有多快,相邻参数是否稳,样本外还留着多少,幸存者偏差、借券和冲击成本怎么限制结论。摘要先写结果,再写限制。只写“策略有效”,读者无法知道边界在哪。
第三周的 day1 到 day6 已经把这条链路跑完。learning/week3/report.ipynb 还没写。第四周的代码开始之前,先用已有结果把这份报告补上。写的时候不新增因子,不改主参数。
接下来,我应该学习如何写出一篇量化分析报告。从明天开始,先模仿第一篇进行写作。在最开始写的时候,不借助 AI。在我清楚如何去写后,才可以用上 AI。
我逐渐形成新的学习方式。
首先,我了解,一个人每天能够完全集中注意力的时间是有限的,大部分人只在 4 小时左右。
结合我的身体状况,现在不适合久坐。所以,我使用番茄钟,每次学习 45 分钟,就站起来活动 5 分钟。之前没有这样尝试过,现在刚开始实验两天,感觉还不错。
从昨天开始,我在听孙宇晨的播客《财富自由革命之路》。本着践行孙割的原则,我从网盘上找到原文件,没有花一分钱。
有人问,为什么要听这样一个人的播客?确实,孙割人品很渣,但是这不是我听播客要关注的重点。他十年前说的东西,放在现在也丝毫不过时。
他首先说了一个点,财富自由的前提是精神自由。财富自由不是意味着你有足够多的钱,而是你可以自由支配。在一个一线城市,不买房不买车不结婚,全部资产用来进行自我提升,并投资美股。
一个人不能早早就把自己定性,这样最终会丧失无数可能。每个群体都在有意引导你做有利于他们的事情,但是没有人告诉你,如何成全你自己。这也是最近看《乌合之众》得出的一些感受,群体往往是非理性的,那些看似为你好的正确建议,其实很可能从来没有被认真思考过。
言尽于此吧。
然后值得说的一点是健身。我健身跟那个所谓薄肌理论没有半毛钱关系,本质上是认知成长到一定阶段,自然形成的结果。就目前来看,最重要的是坚持下去。当然,我对这一个月的成果还是比较满意的。
今天想说的不多,可能是高效工作一天,有些疲惫。
💬 今日对话摘要(AI 提炼)
每日对话摘要 · 2026-10-15
一、对话摘要
🎯 今日主题:无人工对话,全部为定时任务自动执行——HF 每日论文推送与健身提醒。
✅ 完成的事
- 执行 HuggingFace Daily Papers 每日推送任务:抓取小宇宙播客最新一期约 15 篇论文 → arXiv 反查链接 → 抓取英文摘要,生成
daily_papers_today.json,并同步发布到个人博客 - 执行每日健身提醒(16:00 CST):读取执行方案文件并按「练 3 休 1 · 4 天一轮」推算当日训练内容
💡 新想法
- 论文加工定为「一句话大白话解读 + 中文摘要」双段式,用类比替代术语,面向非专业读者
- 健身循环起始日受感冒中断影响,确立「顺延机制」:身体不适即休息,恢复后由起始日重排
📌 待办/计划
- 论文推送内容较长时拆成 2–3 条消息发送,避免超长
- 依循环推算:10-13 为 Day1(背),今日 10-15 应为 Day3(腿臀+腹)
- 感冒恢复后首练重量与组数各减 20–30%,并确认循环起始日是否再顺延
二、AI 总结
- 心情指数:6
- 关键标签:健康、学习、技术、目标
- 核心收获
- 论文推送全流程自动化跑通
- 感冒后训练需减量 20–30% 再恢复
- 循环中断可用「顺延起始日」重建节奏
- 复杂论文须转为大白话输出
- 待解决问题
- 恢复期训练强度如何逐步递增,尚无明确阶梯
- 博客是否成功发布本期论文待核验
- 明日建议
- 按循环 Day4 安排训练;若仍有症状则继续休息,勿硬上
- 确认新循环起始日并写回方案文件,避免后续推算错位
- 抽查博客文章是否可正常访问,确认推送无截断