- 傅里叶周期分解择时:把价格拆成可交易的正弦分量
月度/季度/年度周期是技术分析最古老的假设,但能写成可证伪、可量化的策略吗?本文用 numpy 从零实现对数收益的傅里叶分解,把 1024 天合成价格拆成 21 日/63 日/252 日三个可交易正弦,周期图三处明显出峰,最小二乘拟合恢复振幅 0.0076/0.0055/0.0050(真实 0.008/0.006/0.0045)。用 63 日相位符号生成 ±1 择时信号:年化 Sharpe 6.20 vs 买入持有 0.24,1024 天累计对数收益 5.17 vs 0.22——周期相位确实可交易。附完整 numpy 实现与四张真实计算图。
9 min Chinese - 时间序列基础模型:用预训练大模型做零样本金融预测
NLP/CV 里『预训练一个大模型、下游零样本/少样本迁移』的范式,正被搬进金融时间序列。本文用 150 个合成『市场』实验,证明:在 100 个历史市场上学的共享权重,能直接在 50 个未见市场上做一步收益预测,且对数据稀缺的尾部市场并不更差——这是『基础模型』范式的核心卖点。附完整 Python 与四张真实计算图。
11 min Chinese - 分数阶差分与平稳性:在保留记忆和通过 ADF 之间求平衡
所有教科书都教你「价格不平稳,差分一次变收益」——可这一刀下去,序列的记忆被砍得干干净净:本文合成序列里一阶差分与原对数价格的相关系数只剩 0.005,「现在贵还是便宜」这个信息彻底蒸发。López de Prado 的分数阶差分主张只差 d=0.37 这么多:刚好通过 ADF(p=0.039),同时保住 91.1% 的记忆,捕捉真实均值回归成分的相关系数 0.416(一阶差分只有 0.073)。但本文最硬的发现是反面:FFD 的固定窗口截断本身会伪造平稳性——在真实 I(1) 的纯随机游走上做同样的 d=0.37 分数阶差分,窗宽 311 时 ADF 错误拒绝率高达 73%,窗宽 1669 时飙到 93%,而名义水平只有 5%。同一个数据生成过程换 20 个种子,d* 从 0.00 摆到 0.55(标准差 0.138);τ 从 1e-2 调到 1e-5,同一个 d 的记忆保留从 99.8% 掉到 29.2%;FFD 与扩张窗口两种实现在同一 d 下相关系数仅 -0.10。四项对抗式检验全过:置换 300 次真实 Sharpe 0.68 超 95 分位 0.53(p=0.020)、随机游走上因果 z 的 Sharpe -0.02 干净归零、全样本 z 的 look-ahead 在随机游走上凭空刷出 0.40(高阶)。
20 min Chinese - Hurst 指数与均值回归:用长记忆判别趋势还是反转
用固定随机种子(20260801)的受控模拟验证 Hurst 指数的两种主流估计量。核心发现:在真值完全已知的分数布朗运动上,R/S 分析和 DFA 都能把 H<0.5(均值回归)、H=0.5(随机游走)、H>0.5(趋势)三种世界分开,但代价不对称——R/S 在随机游走上系统性上偏(N=64 时 +0.13、N=4096 仍 +0.046,把 0.5 估成 0.55),DFA 几乎无偏(各样本量偏差都在 ±0.01 内)却方差更大(N=64 标准差 0.18 vs R/S 的 0.11)。有限样本是这个指标的命门:短窗口下你分不清『H=0.55 是真趋势还是 R/S 的偏差』。把 H 拿去做实时 regime 判别时,滚动窗口内均值回归段的 H 中位 0.32、随机游走段 0.46 确实可分(识别准确率 61.4%),H 门控均值回归策略 Sharpe 3.63 也确实高于无条件版本 3.20——但对抗式检验给出最重要的警告:在一个真实 H 恒等于 0.5、不存在任何长记忆的纯随机世界里跑同一套滚动 H 门控策略,100 次里最高也能刷出 Sharpe 1.12,均值锚在 0——用滚动 H 挑时点,一半的『alpha』是估计噪声在自我实现。四项对抗式检验全过。
19 min Chinese - Discord 异常子序列:用最不像别处的片段捕捉市场异常
Discord 是 Matrix Profile 的另一半:MP 曲线的低谷是模体(有孪生兄弟的重复形态),最高峰就是 discord——全序列里最找不到相似者的子序列,天然的无监督异常检测器,不需要定义『什么是异常』,只需要回答『哪段最不像别处』。但本文最重要的发现是一个刻意保留的失败案例:discord 的对比度完全取决于『正常段有多相似』。60 天 × 50 bar 共享日内模板的结构化本底上,三种植入异常(闪崩回补/波动冻结/锯齿振荡)全部被 top-3 discord 精确命中,对比度 2.1×;同样的异常搬到 IID 随机游走本底上,命中 0/3——因为 IID 世界里每一段都独一无二,MP 中位数 7.22 与峰值 7.83 挤在一起,异常淹没在『处处都是异常』的本底里。这解释了为什么 discord 在日内高频数据上是利器、在日线收益上近乎无用。消融实验补齐工程细节:排除区不设则模体端先失效(谷值 3.05→2.13)而 discord 端相对鲁棒;窗口长度 m<异常尺度一半时命中率归零;无异常对照世界的 MP 峰值也有 5.06——discord 分数没有天然阈值,必须用对照分布校准。最无争议的落地:数据质量监控(坏 tick/卡死/拼接错误的形状都独一无二)与流动性冻结检测。
13 min Chinese - DTW 重心平均:对齐时间扭曲后求出K线形态的『平均脸』
『把 20 段 V 形恐慌-回补走势平均一下』听起来无害,但逐点算术平均是形态学的绞肉机:每段下跌时长 5~14 天随机、底部位置随机,逐点平均把错位的底相互抵消——实测平均后的 V 形深度只剩 -0.62,而样本真实平均深度是 -1.03,形态被抹掉 40%。DBA(Petitjean 2011)的解法:先用 DTW 把每段序列与当前重心逐点对齐(允许时间轴伸缩),把对齐到同一坐标的所有点取均值,迭代到收敛。实测 DBA 重心深度 -1.02 几乎完美还原,到样本的平均 DTW 距离从逐点平均的 0.907 降到 0.351(改善 61%),且目标函数单调下降。模板分类实验暴露完整依赖链:V 形单底 vs W 形双底(深度相同、位置时长随机,判别信息只在形状),逐点平均模板+欧氏距离准确率 53%(≈抛硬币)、逐点模板+DTW 50%、DBA 模板+DTW 88%——模板和度量必须同时懂时间扭曲,换任何一半都直接坍塌回随机线。三盆冷水:DTW 对齐自由度本身是过拟合来源(无窗口约束的 DTW 能把任何两段序列都对齐得很像)、DBA 是局部最优且对初始化敏感、『平均形态存在』不等于『形态有预测力』——DBA 只回答形态学问题,交易价值要靠时间外检验另行审判。
13 min Chinese - Shapelet 形态特征:从时间序列里学出最有判别力的子形状
Shapelet(Ye-Keogh 2009)是时间序列分类里最有解释性的特征:不是人工画好的『头肩顶』模板,而是从数据里学出来的、最能区分两类序列的子形状——判别标准是信息增益,特征值是序列到该形状的最小 z-norm 距离。240 条合成价格片段实验(一半在随机位置内嵌深度随机的 V 形恐慌-回补形态、一半纯随机游走):算法在无任何先验下精确还原了植入的 V 形,学出的 28 点 shapelet 单距离特征在测试集上准确率 91.2%、F1 0.91——一维特征、一个阈值、完全可解释,而全序列距离度量在『位置随机』设定下注定失效。信噪比压力测试给出诚实边界:形态深度降到背景波动同量级时准确率坍塌到 52.5% 随机线。与 SAX/Matrix Profile 的分工:MP 找『重复出现的形状』(无监督),shapelet 找『区分类别的形状』(有监督),技术图形分析的科学化版本正是后者。三盆冷水:暴力搜索 O(n²m⁴) 必须近似加速、金融标签又弱又漂移(91% 在金融数据上几乎必然是泄漏)、判别 ≠ 预测——形态搜索空间的多重检验问题比因子挖掘还严重。
18 min Chinese - CUSUM 结构突变检测:用累积和在收益序列里揪出 regime 拐点
你的策略参数是在过去三年数据上估的,可市场早在半年前就换了一套玩法——均值漂了、波动变了,而你的模型还在用旧假设下注。结构突变检测就是给策略装一个『市场换挡』的报警器。本文用纯 numpy 把 CUSUM(累积和检验)从原理到实战完整走一遍:合成一段三状态收益序列(+10bp 上行 → -25bp 下行 → +12bp 回升,两个真实变点在 t=300/600),用去均值累积和把漂移折成不同斜率的段,再用二分分割递归定位——阈值 1.10 下精确检出 [363, 609],与真实 [300, 600] 只差几十天。阈值敏感性扫描揭示核心权衡:阈值太低(<1.0)把噪声也当变点过度分割,太高(>1.4)漏检真拐点,稳健区间 1.0~1.3。在线 Page-CUSUM 单侧检验模拟实时监控:真实下行从 t=300 起,报警在 t=316,检测延迟 16 天——这就是所有序贯检测无法绕开的『延迟 vs 误报』铁律。全文打穿离线 vs 在线检测的根本区别、CUSUM 只检均值漂移对波动突变失灵、检测延迟不可能为零、多变点需递归分割四类核心陷阱(中阶)。
15 min Chinese
返回