synthetic-data-for-finance
基于 TimeGAN 框架生成金融时间序列合成数据,扩充量化模型训练样本
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 TimeGAN 框架生成金融时间序列合成数据,扩充量化模型训练样本
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
假设你是一个量化交易团队的数据科学家,手头有 5 年的 A 股历史行情数据。你想训练一个深度学习模型来预测股价走势,但 5 年的日线数据只有约 1250 个交易日样本——对于一个参数量达数十万的深度神经网络来说,这点数据量简直是"杯水车薪"。
更棘手的是,金融数据天然稀缺:无法像图片那样海量采集,无法做随机翻转增强,不同标的之间的数据无法混用。传统的数据增强方法(如加噪声、时序平移)对金融数据的统计特性往往破坏严重,生成的数据"看起来真实"但实则偏离了真实市场的分布规律。
stefan-jansen/synthetic-data-for-finance 这个项目,给出了一种基于生成对抗网络(GAN)的解题思路:用 TimeGAN 框架学习真实金融时间序列的数据分布,进而生成高质量的合成时间序列数据,用于扩充训练样本。
GAN(生成对抗网络) 由 Ian Goodfellow 等人在 2014 年提出,是近年来生成式 AI 领域最具影响力的架构之一。其核心思想是让两个神经网络——生成器(Generator) 和 判别器(Discriminator)——进行零和博弈:生成器不断学习生成"以假乱真"的假数据,判别器则努力区分真实数据与假数据。两者相互对抗、相互提升,最终生成器能够产生与真实数据分布高度一致的合成样本。
GAN 在图像生成领域取得了巨大成功(如 StyleGAN、BigGAN),但将其应用于时间序列数据却面临独特的挑战:时间序列不仅需要在每个时间点捕捉特征的横截面分布,还需要学习时序动态性——即一个观测值如何从历史数据演变而来。这就像视频生成比图片生成更难一样,合成时间序列比合成静态图片要复杂得多。
2019 年 NeurIPS 会议上,Yoon、Jarrett 和 van der Schaar 提出了 TimeGAN 框架,创造性地将监督学习与对抗训练相结合:除了常规的对抗损失(让判别器无法区分真假序列),TimeGAN 还引入了一步式监督损失,强制生成器在每个时间步的输出必须与真实数据在该时间步的下一状态一致。这使得模型在学习数据分布的同时,也被约束着遵循正确的时间演化规律。
该项目作者 Stefan Jansen 是量化交易领域的知名作者,著有《Machine Learning for Trading》等多部畅销书,该书已出至第二版。本项目即基于其著作第二版第 21 章的内容改编。
项目包含两个核心 Notebook,完整覆盖了从 TimeGAN 理论到金融数据合成的全流程:
Notebook 1:01_TimeGAN_TF2.ipynb
这个 Notebook 完整实现了 TimeGAN 框架,包括:
Notebook 2:02_evaluating_synthetic_data.ipynb
合成数据的质量评估至关重要——生成的"假数据"必须与真实数据在统计特性上高度一致,否则用这些数据训练的模型在实盘中会表现惨淡。这个 Notebook 实现了多种评估方法:
项目内置了 stocks.csv 股票数据集,包含多只股票的历史价格数据,读者无需额外准备数据即可运行完整流程。
可以把 TimeGAN 想象成一个非常聪明且勤奋的"实习生":这个实习生花了大量时间研究真实金融市场的历史走势,理解了股价在不同市场环境下如何涨跌、不同股票之间如何联动、时间序列遵循什么统计规律。然后这个实习生能够凭空"想象"出全新的、但完全符合真实市场规律的历史行情——就像在平行宇宙中创造了一个同样遵循物理定律但历史进程完全不同的金融世界。这些"平行宇宙"中的历史行情,可以作为训练 AI 交易模型的数据扩充素材。
适合人群:具备机器学习基础、熟悉深度学习概念(尤其是 GAN/LSTM)的量化研究员或 AI 开发者。
上手方式:
requirements.txt 或 install.sh 一键安装。需要注意的是:项目代码写于 2020 年,使用的 absl-py==0.10.0 等依赖版本较旧,在新版 Python(3.10+)环境下可能会有兼容性问题,建议使用虚拟环境或 Docker 容器隔离。
作为 TimeGAN 在金融领域的首批实践项目之一,该仓库已被收录至多个量化交易和合成数据相关的 awesome list。GitHub 数据显示该项目最近一次更新为 2026 年 7 月 10 日,仍有活跃维护。
从更宏观的角度看,TimeGAN 代表的合成数据生成技术正在量化金融领域获得越来越多的关注:隐私合规要求限制真实数据共享时,合成数据是合规的数据增强方案;强化学习训练需要大量交互样本时,TimeGAN 可以生成模拟市场环境。Jansen 的实践也印证了这一趋势——他的量化交易著作系列已在 GitHub 上积累了大量关注,相关仓库的持续更新说明了研究社区对这一方向的持续兴趣。