ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

合成金融数据生成实战:machine-learning-for-trading 第五章的保真度-效用-隐私评估框架与生成模型全览

合成金融数据生成实战:machine-learning-for-trading 第五章的保真度-效用-隐私评估框架与生成模型全览 合成金融数据生成实战machine-learning-for-trading 第五章的保真度-效用-隐私评估框架与生成模型全览【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading本章Chapter 5: Synthetic Financial Data聚焦于一个根本性矛盾金融研究只有一条已实现的价格路径而研究过程却会对这条路径反复搜索这本身就足以让回测变得脆弱。要生成更多值得信任的路径需要回答三个问题生成器必须保留什么、如何判断它是否做到了、以及做到这些要付出多少隐私与算力代价。本指南将带你走完从经典模拟基线bootstrap 与随机波动率模型、GAN、扩散模型到 LLM 表格生成的完整路线并始终用同一套评估协议衡量它们——因为在本章的视角里验证协议的重要性高于架构选择。读完本文你将掌握如何量化回测的路径局限、如何用保真度fidelity、效用utility、隐私privacy三元标准组织生成器评估、如何实施 Train-Synthetic-Test-RealTSTR验证以及如何在仓库中一键运行全部 8 个合成数据实验。量化困境为什么回测在生成模型登场之前就已经脆弱回测的脆弱性来自两个叠加的因素路径有限与搜索自适应。金融资产的历史价格只有一条实现路径而策略研究是在这条路径上反复试探、调参、筛选最终把看起来最好的那一个方案留下来。当搜索空间很大、被检验的策略很多时即使所有策略真实期望收益都为零单纯靠多次检验multiple testing也几乎必然出现某个策略在样本内表现惊艳。第七章的 07_multiple_testing.ipynb 对此有专门讨论而第五章的结论是在生成任何合成数据之前必须先承认——强的样本内结果可能只是有利历史与反复搜索的产物。合成数据由此登场它的作用是超越唯一实现路径把稳健性分析扩展到更多可能的世界同时锚定在任何有用的生成器都必须保留的实证特征stylized facts之上。在 00_classical_simulation.py 的开头作者列出了模拟的四个典型动机风险管理VaR、压力测试、尾部风险评估回测在历史经验之外验证策略数据增强为 ML 模型训练提供更大数据集隐私共享不暴露专有信号的合成数据。评估合成金融数据为什么看起来合理远远不够合成数据可以看起来完全合理却仍然不可用。金融中真正要紧的结构不在分布中心而在稀有事件、依赖关系的突变和条件动态上。因此第五章在介绍任何生成器之前先立下全章统一的三条评估标准维度含义失败的表现保真度Fidelity合成数据是否复现真实数据的分布与结构边缘分布吻合但尾部、相关性、条件动态失真效用Utility合成数据在下游任务中是否可用训练出的模型在真实数据上失效隐私Privacy是否泄露单条记录的信息成员推断、记录重现关键洞察是三者互相权衡而非共同改善例如差分隐私DP会把隐私做上去但噪声必然压低保真度与效用。这条不可能三角贯穿 5.8 节的 DP-GAN 实验也是全章所有生成器的统一评判坐标。经典模拟基线可解释、样本高效、易于验证的基准线第五章没有直接跳进深度生成器而是先给出学术纪律bootstrap、GBM、跳跃扩散、均值回归、Heston 与 GARCH 之所以仍然重要是因为它们可解释、样本高效、更易验证。它们是学习型生成器必须在关键诊断指标上打败的基准。对应实验见 00_classical_simulation.ipynb源码为 00_classical_simulation.py。连续时间价格模型四个 SDE 模型各捕捉一类市场现象模型关键特征适用场景GBM对数正态价格、恒定波动率期权定价、基线Jump-Diffusion罕见极端波动崩盘场景、尾部风险Mean-ReversionOU价格向均衡漂移价差、商品、利率Heston随机波动率波动率曲面、杠杆效应仓库中的手写实现值得精读因为每个都藏着可复用的工程细节GBMsimulate_gbm用对数收益率累积再取指数log_returns (mu - 0.5*sigma^2)*dt sigma*sqrt(dt)*Z其中dt1/252对应日频mu与sigma均为年化。注意 GBM 的局限性恰好就是金融收益率三大实证特征的反面肥尾超额峰度、波动率聚集、杠杆效应——GBM 一个都不具备。Jump-DiffusionMertonsimulate_jump_diffusion在 GBM 上叠加复合泊松过程核心是漂移补偿drift compensator。补偿项k exp(mu_jump 0.5*sigma_jump^2) - 1保证mu仍然表示含跳跃的总期望收益。仓库注释特别强调这是改变被模拟对象的实现细节而非风格选择——没有补偿项请求的漂移就不是实际实现的漂移。Mean-ReversionOUsimulate_mean_reversion_euler与simulate_mean_reversion_exactOU 过程存在闭式转移密度可完全消除离散化误差。仓库用同一股随机数流同时驱动 Euler 与 exact 两种实现让两条路径的差距恰好等于离散化误差。半衰期由t_1/2 ln(2)/kappa推导而非手敲参数改动时诊断信息自动跟随。Hestonsimulate_heston波动率本身服从均值回归过程关键参数是波动率的波动率xi与价格-方差冲击相关性rho负rho即杠杆效应。实现采用全截断 Eulerfull truncation——在计算漂移与扩散项之前先对当前方差施加max(v, 0)防止方差为负。仓库还内置了 Feller 条件断言2*kappa*theta xi^2参数一旦移入方差可触零的区间断言立即失败而不是静默改变图示含义。代码注释同时提醒Feller 条件满足针对的是连续过程离散 Euler 步在任何参数下都可能提出负方差因此截断照做不误。离散时间波动率模型GARCH(1,1) 的校准与选参数的 SDE 不同GARCH 通常通过极大似然从数据中拟合。仓库用arch库把 SPY 的对数收益率以百分比计拟合 GARCH(1,1)am arch_model(spy_log_returns_pct, meanConstant, volGARCH, p1, q1) res am.fit(dispoff)得到mu、omega基础方差、alpha新息冲击/新闻效应、beta方差持续性/记忆并要求alpha beta 1以保证平稳性。无条件方差为omega / (1 - alpha - beta)。手写simulate_garch从无条件波动率起步逐期递推方差。Bootstrap 重采样不加分布假设地保留经验分布Bootstrap 直接对历史数据重采样精确保留经验分布包括肥尾但代价是无法生成超出历史极值的场景方法块长保留自相关适用IID Bootstrap1否可接受 i.i.d. 假设时Block Bootstrap固定是块内时间序列Stationary Bootstrap随机是更平滑金融收益率仓库手写了三种实现iid_bootstrap、block_bootstrap、stationary_bootstrap并同步展示了arch.bootstrap库的等价调用IIDBootstrap、MovingBlockBootstrap、StationaryBootstrap。块长经验法则为b ≈ T^(1/3)金融日频数据常用约 22 天一个交易月。Stationary Bootstrap 的块长服从几何分布Geom(1/b)消除了固定块的边界伪影因此每个位置的边际分布相同——这是它平稳的含义。用诊断区分模型而不是用一条路径仓库在 5.3 节做了一个严谨的方法论示范只画一条路径无法把模型的属性与这条抽样分开。因此它用N_PATHS200条独立路径逐模型统计并把 GBM 作为零假设超额峰度排序对 GBM p95 的超越比例Jump-Diffusion GARCH Heston跳跃模型的超额峰度中位数比其他两者高一个数量级波动率聚集前 20 阶平方收益自相关之和GBM、均值回归、跳跃扩散都处于零假设水平跳跃独立到达只增肥尾不增聚集而 Heston 与 GARCH 在绝大多数路径上显著超越零假设GARCH 中位数约为 Heston 的三倍且每条路径都超越两条性质对模型排序不同跳跃扩散尾部最重却无聚集GARCH 聚集最强、尾部次之Heston 两项都有但均弱于 GARCH对 SPY 的对照要求等长窗口N_STEPS模拟路径 vs 等长 SPY 窗口否则偏差与方差都不可比。对于风险工作结论直接可用GBM 与均值回归在尾部权重上不超过高斯从中计算的 VaR/ES 系统性低估尾部损失而三个尾部模型的量级差距足以影响风险决策。生成模型分类从判别到生成的概念地图5.4 节提供全章其余部分的概念地图区分判别式建模学习条件分布p(y|x)与生成式建模学习联合分布p(x)并把 VAE、GAN、扩散模型与 LLM 表格生成器定位为学习联合分布而非手工指定的替代路线。其价值在于方向感读者可以早早看清架构选择的本质是保留下游用例所需的结构。经典模拟模型5.3 节与学习型生成器不是替代关系而是互补关系——这正是 5.3 节被命名为baselines的原因。金融时间序列的 GAN从基础对抗到领域变体5.5 节是全书差异化程度最高的模型综述。它的方法论不是哪个 GAN 最好而是哪种归纳偏置匹配任务及其失效模式。TimeGAN奠基性时序生成架构01_timegan.ipynb源码 01_timegan.py实现了 Yoon, Jarrett van der SchaarNeurIPS 2019的 TimeGAN针对普通 GAN 的两大缺陷提出两项创新逐步监督损失Stepwise Supervised Loss普通 GAN 只学习整体分布TimeGAN 额外监督t → t1的时间转移学习型嵌入空间Learned Embedding Space对抗训练发生在学到的潜空间而非原始数据上训练更稳定。五组件架构在三阶段训练中协同模块用途训练阶段Embedder原始数据 → 潜空间阶段 1自编码器Recovery潜空间 → 原始数据阶段 1自编码器Supervisor预测下一个潜变量阶段 2时序Generator从噪声生成潜序列阶段 3联合 GANDiscriminator判别真假潜序列阶段 3联合 GAN数据侧的关键决策值得注意使用BA、CAT、DIS、GE、IBM、KO 六只股票的对数收益率面板SEQ_LEN24、HIDDEN_DIM24、NUM_LAYERS3、BATCH_SIZE128、LEARNING_RATE1e-3、TRAIN_STEPS10000并设置D_GATING_THRESHOLD0.15——判别器损失低于该阈值时跳过一步判别器更新防止判别器过强压垮生成器。仓库还专门解释了为什么用收益率而非价格水平所有模块以 sigmoid 结尾生成器只能输出[0, 1]输入用训练期拟合的 min-max scaler 缩放到该区间。价格水平有趋势后置留出期会滑出缩放器拟合的范围TSTR 得分将混杂支持集严重漂移这一混淆因素对数收益率足够平稳留出期落在拟合区间内从而消除混淆。代码用断言out_of_range 0.01强制这一前提。TimeGAN 的评估协议封装在 timegan_metrics.py这是全章验证协议的可复用核心预测得分Predictive Score / 效用用合成数据训练事后 LSTM 预测下一时刻在真实留出集上测 MAE并与 TRTR 基线真实训练、真实测试比较报告比值TSTR_MAE / TRTR_MAE。比值 ≈ 1.0 表示合成数据保留了可预测结构比值 1.5 判为失败。评估前按特征归一化防止高方差特征如成交量主导 MAE判别得分Discriminative Score / 保真度训练二分类 LSTM 判别真实 vs 合成序列。准确率 ~50% 不可区分 85% 保真度差。时间序列评估采用固定顺序 80/20 切分以保证时序一致性Yoon 模式与官方 TimeGAN 仓库对齐的变体仅用其他特征预测最后一个特征GRU sigmoid要求数据归一化到[0,1]报告原始 MAE论文对 GOOG 报告约 0.04。Tail-GAN可微排序保尾部风险02_tailgan_tail_risk.ipynb源码 02_tailgan_tail_risk.py实现 Cont, Xu Zhang2022的 Tail-GAN。它不像 TimeGAN 那样做一般性分布匹配而是针对特定风险指标VaR、ES用**可微排序differentiable sorting**让梯度流经分位数计算并用约束投影强制W · VaR ≤ ES的关系从而生成保留尾部风险结构的组合 PnL 场景。关键超参数N_EPOCHS3000、BATCH_SIZE1000、LATENT_DIM1000、N_COLS100每场景时间步、N_STRATEGIES32。生成器输出被钳制到[-1, 1]因此收益率先除以最大绝对值MAX_SCALED_RETURN0.95留出余量避免极端尾部饱和。评估以相对 VaR/ES 误差为核心。SEED1被固定以复现 5.5 节正文中的数字VaR 22.5% / ES 21.0%。Sig-CWGAN路径签名替代判别器03_sigcwgan_signatures.ipynb源码 03_sigcwgan_signatures.py构建无条件 Sig-Wasserstein GANNi et al., Mathematical Finance 2024用**期望路径签名expected signature**之间的解析距离Sig-W1替代训练好的判别器作为训练目标从而绕开对抗训练的不稳定性。条件版 Sig-CWGAN 通过蒙特卡洛期望签名目标扩展论文核心洞见在本 notebook 中仅作概念说明。环境要求特殊signatory与esig为 x86-only 包必须用py312docker profile 运行见下文运行章节。GT-GANNeural ODE 处理不规则时间戳04_gtgan_irregular.ipynb源码 04_gtgan_irregular.py实现基于 Jeon et al.NeurIPS 2022的 GT-GAN 启发模型用Neural ODE处理天然带不规则时间戳的时间序列数据采用第三章的 NVDA 美元柱Databento 柱采样见 03_market_microstructure/17_databento_bar_sampling.ipynb。评估沿用 TimeGAN 的同一套指标GRU-ODE 生成器适用。扩散模型比对抗训练更稳定的通用候选5.6 节把扩散模型定位为对抗训练的强有力、且通常更稳定的替代方案。去噪框架天然适配金融收益结构条件引导classifier guidance支持按市场状态的压力测试。05_diffusion_ts.ipynb源码 05_diffusion_ts.py实现 Diffusion-TSYuan Qiao, ICLR 2024其去噪预测被分解为趋势多项式回归 季节Fourier 基 残差三部分$$\hat{x}_0 \text{Trend}(z) \text{Season}(z) \text{Residual}(z)$$这一可解释结构鼓励模型把慢漂移与周期模式分开类似经典的 STL 分解但端到端在扩散框架内学习。与 vanilla 扩散预测噪声ε不同Diffusion-TS 直接预测x_0Fourier 域损失进一步约束频谱保真度——这对保留金融收益率的自相关结构至关重要。仓库记录了两处关键适配移除clamp(-1, 1)原版代码为图像类数据钳制预测x0而金融收益率用 StandardScaler 归一化无界钳制会破坏分布预测x0而非噪声模型输出趋势季节再解析地导出噪声天然配合条件生成。工程要点包括用DDIM 快速采样把反向步数从 500 减到 50在加噪数据上训练状态分类器并应用 classifier guidance生成状态条件regime-conditional的合成收益率——这正是下游压力测试第 20 章所需的输入。评估同时覆盖无条件与条件生成的保真度。LLM 生成结构化表格数据GReaT 工作流5.7 节把合成数据讨论从收益率序列扩展到混合类型金融表格。核心洞见是序列化serialization把表格行转成自然语言句子用 LLM 建模文本分布再把生成的新句子解析回表格行。06_llm_tabular_great.ipynb源码 06_llm_tabular_great.py使用真实的be-great库实现GReaTGenerate Realistic Tabular Data在序列化的 ETF 财务数据上微调 GPT-2distilgpt2生成合成表格并评估保真度并与 GAN、VAE 等传统方法对比。GReaT 对异构 schema类别、数值、文本特征混排建模良好但也引入新风险无效行、数值保真度下降、隐私泄漏——这些恰好回到 5.2 节的 FUP 框架去约束。应用 Fidelity-Utility-Privacy 框架验证比架构更重要5.8 节是全章方法论的重心论证验证的重要性高于架构评估围绕保真度、效用、隐私组织以TSTR 作为主要任务级基准以泄漏检查或DP差分隐私作为隐私控制。07_dp_gan.ipynb源码 07_dp_gan.py用OpacusPyTorch 官方 DP 库训练带形式化隐私保证的 GAN限制关于单条记录的信息泄漏。关键概念差分隐私隐私保证的数学框架以隐私预算ε度量DP-SGD逐样本梯度裁剪 噪声而非批量级隐私预算ε隐私与效用之间的权衡旋钮隐私记账器Privacy Accountant训练期间累计追踪隐私成本。仓库实验的核心是观察随ε变化的隐私-效用权衡ε越小隐私越强但噪声越大合成数据质量下降。这与 5.2 节三个标准互相权衡的论断形成闭环——隐私不是免费获得的。运行与验证从仓库根目录一键复现全部实验以 notebook 与其百分号脚本.py成对提供运行方式见 05_synthetic_data/README.md# 从仓库根目录运行单个实验 uv run python 05_synthetic_data/notebook.py # 测试模式经 Papermill 以缩减数据运行 uv run pytest tests/test_notebooks.py -v -k 05_synthetic_data运行时注意事项冷启动、无缓存检查点数据量、硬件与实现版本不同时实际耗时会有差异仓库记录的参考值如下实验冷启动参考耗时硬件建议01_timegan~12 minGPU 推荐02_tailgan_tail_risk~6 min有缓存检查点 30 sGPU 推荐04_gtgan_irregular~6 minGPU 推荐05_diffusion_ts~5 minGPU 推荐06_llm_tabular_great~13 mindistilgpt2 微调GPU 必需07_dp_gan~8 minGPU 推荐03_sigcwgan_signatures需要py312docker profilesignatory/esig仅支持 x86docker compose --profile py312 run --rm py312 python 05_synthetic_data/03_sigcwgan_signatures.py其余实验默认使用ml4t/ml4t-gpu镜像例如docker compose run --rm ml4t-gpu python 05_synthetic_data/01_timegan.py贯穿全章的三条方法论主线验证协议 架构选择从 timegan_metrics.py 的 TSTR/TRTR 与判别得分到经典模型对 SPY 的等长窗口对照全章用同一套标准衡量所有生成器。仅匹配单一统计量不等于匹配整个序列——这是整套验证协议存在的理由。诊断要跨路径、跨复现单条路径读不出模型属性超额峰度与波动率聚集是分离的性质需分别测量比较必须在可比的采样长度与参数化下进行。实现细节改变结论跳跃扩散的漂移补偿、Heston 的全截断、TimeGAN 用收益率而非价格水平、Diffusion-TS 移除钳制——这些都不是风格选择而是决定被模拟的是什么以及评估在测什么的关键决策。【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表