- 对比学习金融表征:不用标签,也能把「同行业」和「跨行业」拉开
监督学习要标签,金融标签又贵又滞后。对比学习(Contrastive Learning)走另一条路:不预测「是什么」,只学「什么和什么像」——把同行业股票拉近、跨行业股票推远。本文用纯 numpy 从零实现 SimCLR 风格的 InfoNCE 预训练(两层 MLP 投影头,端到端训练),在 42 支股票 / 3 行业的合成数据上,把它和「直接用原始特征」做下游少标注探针对比:每行业只给 1~3 个标注时,对比表征把分类精度从 0.50/0.54/0.58 抬到 0.57/0.61/0.61,且增益随标注变多而收敛——正是「标签越稀缺越值得预训练」的教科书结论。附完整代码与五类真实陷阱(中阶)。
12 min Chinese - GAN 生成金融序列与数据增强:用造假的数据喂饱你的模型
深度学习模型永远缺数据——尤其小市值、新上市、危机段,样本少得可怜。GAN(Goodfellow 2014)的卖点是"从噪声生成和真实分布几乎一样的合成序列",于是有人想:能不能用 GAN 造一批假 K 线,喂给下游模型做数据增强?本文用纯 numpy 实现(协方差匹配的 WGAN 等价解),在"牛熊 regime + 时变波动"的合成价格上把生成序列的协方差 Frobenius 误差从 199 压到 1.94,边缘分布和逐位移自相关都与真实肉眼难分;并诚实实测"数据增强的红利":小样本(仅 30 真实窗口)+ 高容量下游模型下,7x 增强把最差切分 AUC 从 0.934 拉到 0.963、方差砍半——增强的真正价值是稳住最差情况,不是凭空抬均值。附完整代码与五类真实陷阱(中阶)。
12 min Chinese - 状态空间模型 Mamba 金融时序:把「历史」压缩成一个状态向量,选择性地记住该记的
Transformer 的注意力是 O(N²) 且训练时看不到未来、推理时还得把整段重新过一遍;RNN 虽是线性复杂度却有梯度消失、难以并行。状态空间模型(SSM,Gu et al. 2021)走中间路线:用连续系统的离散化,把历史压成一个状态向量 h_t 沿时间递推。Mamba(Gu & Dao 2023)再加一招「选择性」——让扫描步长 Δ 由输入决定,模型自己决定「记住什么、忘掉什么」。本文用纯 numpy+scipy 从零实现零阶保持离散化、递归扫描与卷积视角,在「目标被 130 步前事件驱动」的长程依赖合成序列上实测:带持久循环状态的选择性 SSM 预测 MSE=0.50,相对 120 窗口线性基线(2.93)降 82.9%、相对 AR(1)(1.34)降 62.7%——因为循环状态携带了窗口外的回声;并诚实拆穿线性读出下 SSM 不赢线性基线、Δ 选择性是演示近似、状态维度 N 受限、训练不稳、长程衰减五类真实陷阱(中阶)。
16 min Chinese - PatchTST 时序分块预测:把价格切成一块块「补丁」,Transformer 才真正用得上
Transformer 横扫 NLP 后,直接搬到时间序列预测上却常被简单线性模型吊打——问题出在「逐点建模」:把每个时间步当一个 token,注意力算力爆炸、还学不到局部形态。PatchTST(ICLR 2023)用两招破局:把序列切成一段段 patch(分块)当 token、多变量之间通道独立。本文用纯 numpy 复现「分块 vs 逐点」的核心对比,在趋势+双周期+噪声的自洽合成序列上,两者都把朴素基线的 MSE 从 51.6 压到 2.7,并诚实说明分块在这份干净数据上只领先 2.3%、它真正的价值在哪、以及六类真实陷阱(中阶)。
17 min Chinese - TimesNet 周期建模:把价格「折叠」成二维时间块,Transformer 才真正读得懂周期
Transformer 直接搬到时序常被简单线性吊打,病根是「逐点建模」——单个价格点没有语义。TimesNet(Wu et al. 2023)的破局点很巧:既然时间序列里最稳定的结构是「周期」,那就把一维序列按周期 P 折叠成二维「时间块」,让二维卷积去抓「同一相位跨周期」的相关性。本文用纯 numpy 从零实现 FFT 周期检测、1D→2D 折叠、2D 池化回 1D,在「三周期+趋势+脉冲噪声」合成序列上实测:2D 折叠把多周期结构的解释方差从 0% 抬到 31.7%,残差以噪声为主;并诚实拆穿「数据处理的不等式(线性头打不过线性基线)」、周期检测偏 bin、折叠引入伪相关、相位对齐泄漏、端点缺口五类真实陷阱(中阶)。
18 min Chinese - 变分自编码器 VAE 因子挖掘:把不确定性也一起学出来
普通自编码器能把 20+ 维量价特征压成 5 维新因子,但它只给你一个"点估计"编码,不知道哪个样本编码得靠谱。变分自编码器 VAE(Kingma & Welling 2014)把编码器变成"一个分布",每个样本得到一个 (μ, σ²) 的编码高斯——于是除了新因子,你还免费拿到"这个因子值有多可信"。本文用纯 numpy 从零实现 VAE(重参数化技巧 + ELBO),在"3 潜因子驱动收益 + 大量噪声特征"的合成数据上,VAE 组合因子与未来收益 |IC|=0.695,并诚实演示"不确定性到底能不能当信号过滤器"这个反直觉结果,附完整代码与五类真实陷阱(中阶)。
14 min Chinese - 深度对冲:用神经网络取代 BS 公式做期权动态对冲
Black-Scholes 给期权对冲的是解析 delta,但它有三个隐藏假设:零交易成本、连续对冲、波动率已知。真实市场里这三条全破,于是 delta 对冲会在每次调仓时白白交手续费、在跳空时露风险。深度对冲(Buehler et al. 2019)换了个思路:不套公式,而是用神经网络直接学「每一步该持多少标的」,目标函数就定成对冲误差的方差;交易成本作为惩罚项写进目标,网络自己学会「该偷懒时偷懒」。本文用 GBM 下的欧式看涨、纯 numpy 手写一个 MLP 对冲器(不依赖任何深度学习框架),在无成本时退化到 BS delta,在单边成本 2% 时把对冲误差方差比 BS 压窄约 16%。附完整可复现 Python 与六类真实陷阱(高阶)。
13 min Chinese - N-BEATS 神经基展开:无卷积无注意力的纯残差时序预测
N-BEATS 是 2019 年 M4 竞赛冠军——一个既没有卷积、也没有注意力、甚至没有 RNN 的纯残差网络,却把当时所有时序模型按在地上摩擦。它的秘密是「栈 + 残差 + 可学习基函数展开」:每个栈把输入同时做 backcast(拟合已知)与 forecast(外推未知),残差层层传给下一栈。本文用自洽合成模型从零复现其机制,给出多步预测、95% 区间与对基线的 RMSE 对比,并诚实指出它在一步预测上打不过随机游走,附完整 Python 与六类真实陷阱。
13 min Chinese
返回