源文件:research/quant_digests/2026-03-11_0128_lo-pattern-recognition-replication-repo.md
这次不是新论文,而是看一个直接对你更有帮助的第三方复现仓库:SITONGRUC/FOUNDATIONS_OF_TECHNICAL_ANALYSIS。它不是 Lo, Mamaysky, Wang (2000) 的官方代码,但它把论文里的核心流程拆成了几本 notebook:Kernel regression.ipynb、Find Min&Max.ipynb、pattern count.ipynb,很适合拿来理解“形态识别到底怎么落到代码里”。
momentum 里做的 endpoint smoothing + confirmed extrema 思路是同一路。Kernel regression.ipynb 里直接用 statsmodels.nonparametric.kernel_regression.KernelReg 做高斯核回归,带宽用 bw='cv_ls';然后在每个滚动窗口内生成平滑序列。Find Min&Max.ipynb 里用 scipy.signal.argrelextrema 先在平滑序列上找局部高低点,再把 extrema 映射回原始序列附近的点位;pattern count.ipynb 再用 if/else 阈值去匹配 HS / IHS / broadening / triangle 等形态。ret 序列上做,不是为因果、无重绘、在线检测设计的。这份仓库最适合当前 momentum 主线,因为你现在缺的不是“再多一个玄学图形名词”,而是把结构识别拆成工程步骤。它给你的价值主要有三点:
kernel smoothing -> extrema -> pattern rule 这条链很容易先做成最小可运行原型;confirmed extrema 设计;double_top/bottom、head-and-shoulders、pullback_recovery_like。流程固定为:Donchian breakout 基线 vs Donchian breakout + 结构过滤。post_cost_return、false_break_ratio。如果结构过滤没能降低假突破占比,就先别继续堆图形库。Kernel regression.ipynb、Find Min&Max .ipynb、pattern count.ipynb