利用合成数据增强股票策略回溯测试:基于代理的模型方法——第 2 部分
这篇文章由伊兰·格莱瑟(亚马逊云科技)、Apostolos Psaros(富达投资)、伊戈尔·哈尔珀林(富达投资)、吉姆·杰拉德(富达投资)和罗斯·皮沃瓦尔(亚马逊云科技)撰写。
金融专业人士不断寻找方法来制定和测试有利可图的投资策略。虽然回溯测试是一种关键工具,但历史数据的有限可用性往往限制了其有效性。这份由两部分组成的全面指南探讨了通过基于代理的模型 (ABM) 生成的合成数据如何增强回测能力。
在第一部分中,我们建立了方法的理论基础。我们探讨了合成数据生成的核心原理,研究了基于代理的建模框架,并详细介绍了我们创建真实市场模拟的方法。本节将特别吸引想要了解我们方法的基本概念和数学基础的读者。
在博客的这一部分(第 2 部分)中,我们将重点介绍实际实施和结果。我们将深入研究详细的仿真结果,展示真实世界的应用程序,并为使用亚马逊云科技基础设施实施这些模型提供完整的技术指南。本节将特别使希望在自己的工作中应用这些概念的从业者受益。
在这两个部分中,我们将演示合成数据如何帮助克服常见的回测挑战,从历史数据不足到需要不同的市场场景。让我们从支撑我们方法的理论框架开始。
设置模拟
用于股票市场回测和模拟的 ABM 可以对市场动态和各种条件下交易策略的有效性进行深入的观察。
代理人被定义为能够就购买、出售或持有股权证券做出决策的实体。代理人范围从个人零售交易者和机构投资者到自动交易算法,其特征是一组独特的属性,例如风险承受能力、投资视野、资本、信息访问和决策策略。
代理人可以根据其属性在股票交易和投资场景中扮演多个角色。这些角色包括做市商和各种投资组合分配者。每个代理商都遵循其策略,根据其预定义的行为和规则对市场变化做出反应,共同决定市场动态、价格和趋势。
为了确保真实的市场动态,模拟在一组指定的规则下运行。代理商根据其类型有不同的交易频率,交易量限制以避免不切实际的市场主导地位,而市场影响限制则可以模拟现实世界的供需动态。
当用户调整波动率水平、新闻事件频率或整体市场趋势等参数时,模拟可以"调节"生成各种市场制度。用户可以在不同的市场条件下回测交易策略,模拟大额交易对市场价格和流动性的影响,并分析不同类型的代理在高波动时期或市场崩盘期间如何影响市场动态。
仿真的目标是通过基于代理的模型创建真实的合成市场数据,从而缓解与有限历史数据相关的过度拟合问题。这种方法具有许多优势,包括能够为策略测试、控制实验和弹性自适应策略的开发生成广泛而多样的市场情景。实际上,它增强了不同市场条件下的回溯测试、情景分析以及策略比较和优化。
总体过程包括使仿真与真实数据保持一致、执行基于代理的模拟以及检查输出。具体的校准方法包括:
- 使用基本面比率 — 我们可以在模拟中校准关键财务比率,例如市盈率、市值与账面价值、债务与权益比率,以匹配我们在建模的历史时期内在实际市场中观察到的分布。
- 特征选择 — 选择最相关的股票层面特征(市值、板块、交易量、分析师预测等)和推动股票回报的市场层面特征(利率、大宗商品价格、经济指标等)。我们可以将特征与通过历史数据上的机器学习模型观察到的特征进行匹配。
- 识别市场压力时期 — 我们可以调整波动率、关联制度、交易量等模拟参数,以准确生成合成数据,展示压力时期的实际市场行为质量,例如 2008 年危机、2020 年 COVID 暴跌等。
通过以这种方式进行校准,仿真可以生成合成数据,其统计特性与真实世界中对个股、板块、市场层面因素和制度的观察结果非常接近,从而增强了人们对数据真实性的信心。在运行用于策略测试的仿真之前,通过此校准过程对关键分布、相关性、尾部行为进行匹配。
为了开始模拟,我们建立了一个涵盖各个板块的 1,180 只股票的综合世界。我们以真实世界的数据为这种投资格局播种,其中包括自 2017 年底以来的股价和已发行股票的快照。我们没有依赖任意的初始化,而是确保仿真从企业之间真实的市值分配开始。我们将股票价格和已发行股票固定在 2017 年底的水平,为模拟市场动态的展开提供了稳定的基础。
在最初的版本中,该模拟以"无代理"模式运行,没有任何活跃的交易实体。这种基准情景使我们能够观察完全由公司的基本经济学驱动的市场行为,如其基本面数据所示。它充当控制环境,可以与后续仿真进行比较,后者引入了各种代理类型的复杂行为和相互作用。
尽管无代理仿真提供了宝贵的见解,但该模型的真正力量在于它能够为市场提供多样化的代理生态系统。后续配置引入了多达 5,040 个代理,每个代理都具有不同的属性,例如风险偏好、投资视野、资本水平和信息访问权限。我们将这些代理人分为增长、价值、动量、等重、均值方差、风险平价和 ESG 等类别——每个群体采用符合各自理念的策略。
例如,可以将"增长"代理配置为:
- 评估股票时高度权重的因素,例如预期的收益增长、销售增长和运营现金流的增长
- 关注在科技等高增长领域运营的公司
- 有更高的风险承受能力以利用潜在的上行空间
- 使用高市盈率和市盈率等基本信号来识别增长机会
- 使用动量指标来增加显示强劲价格势头的获胜头寸
- 定期进行再平衡,保持预期的增长属性
相比之下,"价值"代理人在评估投资时可能会优先考虑自由现金流收益率、收益率或低账面价格等指标。他们可以相应地调整风险偏好、行业重点和再平衡规则。
然后,我们随机分配代理商专注于不同的行业和股票,从而创造了一个异构的市场环境,可以更紧密地重组现实世界。
仿真结果
本次会议介绍了为模拟股票市场动态而开发的基于代理的股票市场模拟器的初步发现。该模拟旨在生成真实的合成数据,以增强投资策略的回测能力。通过整合代理行为和互动,该模型旨在捕捉真实金融市场的新兴特性,这些特性在仅依赖历史数据时经常被忽视。
1 — 初始的无代理股票市场模拟:模拟从无代理股票价格模拟开始,使用的是 2017 年底与公司股票行情相匹配的已发行股票总数的快照。市值加权指数和行业指数是在不变的情况下创建的。与历史观测结果相比,模拟的行业级回报相关性似乎合理,如图 1 所示。

图 1 该模拟以没有任何代理商的股价预测开始,采用了自 2017 年底以来与公司股票行情一致的已发行股票总额的快照。市值加权指数和行业指数采用固定股票数量构建。与历史数据相比,行业层面回报的模拟相关性似乎是合理的。
2 — 模拟与历史指数收益分布:模拟指数回报分布与(每月频率)历史数据(例如罗素 1000 指数)的特征非常吻合。偏度、峰度和 Jarque-Bera 正态性检验等关键统计数据大致一致,表明合成数据捕捉了每月实际指数回报率的基本特性。请注意,罗素 1000 指数的历史样本包括来自高度紧张的市场制度的回报,而模拟迄今为止尚未生成的回报;因此,模拟市场回报表现出不如实际市场那么严重。图 2
![图 2:比较指数收益分布,RIY 与模拟(stdrtns [mo],N ~ 300)](https://cn-northwest-1.prod.ces.corpus.marketing.aws.a2z.org.cn/image/d2908q01vomqb2.cloudfront.net/e6c3dd630428fd54834172b8fd2735fed9416da4/2025/03/03/HPCBlog-336-Fig-2.jpg)
图 2:比较指数收益分布,RIY 与模拟(stdrtns [mo],N ~ 300)
3 — 时间序列属性:模拟的指数回报和平方回报(波动率代理)的自相关函数(ACF)表现出与现实世界观测结果一致的特性。虽然模拟平方回报没有显著的自相关性,但指数回报表现出一定程度的波动性,与标准普尔 500 指数历史数据中的表现一致。同样,这在很大程度上源于现实世界市场从高波动率制度向低波动率机制的过渡,我们的 ABM 仿真模型应该能够重现这一特征。图 3,4。

图 3:时间序列属性:模拟集
![图 4:时序地产:标普 500 指数 [1999-2024,mo]](https://cn-northwest-1.prod.ces.corpus.marketing.aws.a2z.org.cn/image/d2908q01vomqb2.cloudfront.net/e6c3dd630428fd54834172b8fd2735fed9416da4/2025/03/03/HPCBlog-336-Fig-4.jpg)
图 4:时序地产:标普 500 指数 [1999-2024,mo]
4 — 行业残差相关性:在调整市场走势后,行业回报之间的剩余相关性也显示出与实际市场数据中观察到的模式相似的模式。这些相关性可能源于潜在的风险因素,例如增长和价值,这些因素推动了各行各业的共同发展。图 5

图 5 扇区级残差相关性
5 — 代理交易的影响:在将代理引入模拟时,他们的交易活动会系统地影响行业层面的回报和波动性。一些行业的回报率更高,而另一些行业的回报率较低,与低夏普比率的行业明显转变。这种效果因模拟试验而异,反映了代理之间的复杂相互作用。图 6

图 6 代理的行动系统地提高了某些行业的回报,同时降低了其他行业的回报,具体情况因模拟而异;请注意,低夏普行业明显偏离了低夏普行业。SECT — 本专栏列出了股票市场模拟中的不同行业。R0 — 这显示了模拟运行中每个行业的年化回报率(百分比),代理交易量为零。RAG — 这显示了当有 5040 个代理商在模拟中活跃交易时每个板块的年化回报率。σ0 — 此列显示了零代理模拟运行中每个板块的年化波动率(回报率的标准偏差,以百分比表示)。σAG — 此列显示了 5040 代理商交易时每个板块的年化波动率。因此,总而言之:SECT = 行业名称 R0 = 0 个代理商的年回报率(%)RAG = 5040 个代理人的年回报率(%)²0 = 0 个代理的年度波动率(%)μAG = 5040 个代理人的年度波动率(%)。这允许比较相对于无代理基准案例而言,引入 5040 交易代理如何影响不同行业的回报和波动率。例如,我们可以看到,对于信息技术行业:R0(零代理商)= 15.91%的年回报率 RAG(5040 名代理商)= 22.42%的年回报率,因此代理商集体提高了信息技术行业的回报率。但是波动率基本没有变化:α0 = 21.29% σAG = 21.47%
6 — 代理初始化和交易影响:代理需要一个初始化周期(大约 24 个时间步)来确定其预期回报和风险估计。在此阶段之后,增长和动量推动者的行为变得显而易见,因为它们提高了信息技术等领域的回报,导致市场指数在某些模拟中表现出增长倾向(就像近年来的实际市场一样)。图 7、7a。

图 7:模拟回报,零位与 5040 位代理的对比

图 7a:增长交易、动量推动者提高了信息技术板块的回报、MKT 指数
7 — 代理商的总回报分配:尽管代理商对个股和行业回报产生了重大影响,但市场层面的总回报分配相对保持不变。即使代理活跃交易,模拟也不会表现出过大的峰度或波动持续性。
在知情、仅限多头、零杠杆率、100% 的股票投资组合经理之间进行交易可能不利于高额投资组合回报或自相关波动。相反,当出现大规模资金流入和流出股票市场时,这些现象可能更有可能,例如,与其他市场相比,市场参与者会重新评估短期股票回报。

图 8 代理交易显然会改变股票的回报,但不会改变股票的总分布(没有过大的峰度或交易量持续性)
为了更好地了解观察到的回报模式,我们建议研究代表代理商的投资组合定位趋势或代理商类型的平均投资组合的趋势。此外,所有企业在每个时间步都能获得"真实"要素状态(价值与增长),可以深入了解增长和动量策略之间的相互作用,这些相互作用在某些模拟中助长了增长倾斜。
实际上,我们经常看到,市场参与者的集体行动会对市场回报的整体分配产生显著影响,尤其是在分配的尾部。举几个例子:
- 在市场危机或极端波动时期,由于获得较大正或负回报的可能性增加,回报分配的峰度(尾部更胖)往往比正常水平更高。
- 随着大量负回报的积累,市场回报,尤其是每日或每周等较高频率的市场回报,在低迷时期通常会显示出负偏差。
- 波动率聚类效应,即高波动率之后是高波动率,反之亦然,这会引入自相关并改变回报分布的形状。
因此,目前的模拟显示,即使代理交易,总回报分布仍保持相对正常/高斯值,没有过大的峰度或波动率持续存在,这一事实表明,该模型可能尚未完全反映实际市场中出现的一些更极端的集体行为。
这可能是一个需要进一步研究的领域——引入允许代理商根据市场状况显著改变定位/杠杆率的机制,或者探索能够产生更强的群集/反馈效应的代理设计。对信息流和过度反应进行准确建模也可能导致尾巴变胖。
虽然匹配高斯回报是一个很好的基准,但增强复制偏离正态偏差(尤其是尾部偏差)的能力可以进一步提高基于代理的模拟生成的合成数据的真实性。针对历史压力期进行持续校准非常重要。
亚马逊云科技参考架构
我们可以利用 Amazon Batch 以可扩展和安全的方式运行基于代理的建模 (ABM) 模拟。用户可以通过向 Amazon Batch 队列提交任务请求来启动任务。客户端接口更改任务提交中的 JSON 配置,允许用户在维护安全性的同时修改参数。出于安全考虑,用户只能启动和更改预定义的批处理任务定义。
启动的任务从 Amazon Elastic Container Registry (ECR) 加载一个容器,然后从 Amazon Simple Storage Service (S3) 存储桶加载财务 ABM 和任何所需的客户数据。这些任务是在私有子网内创建的,以确保它们与外部网络分开。
批量配置 Amazon Elastic Compute Cloud (EC2) 实例集群,然后在 EC2 组上启动 Ray 集群。代理的所有图形执行和处理均通过 Ray 处理,包括根据功能要求的特定资源分配。
仿真将所有数据和进度保存到 Amazon DynamoDB 中。DynamoDB 提供了可扩展的 NoSQL 数据库,该数据库自然符合保存具有属性和状态的代理数据。
ABM 模拟完成后,将激活依赖于 Amazon Batch 的任务。此依赖任务可以与 ABM 作业同时提交,但要等到所有依赖关系都完成后才能执行。依赖任务将 DynamoDB 数据处理成表格格式,仪表板或报告生成器可以轻松访问该表格格式并保存到 S3 存储桶中。
Amazon QuickSight 提供一个控制面板来查看和分析 ABM 的结果,包括一个可选的 Amazon Q LLM(大型语言模型),以帮助创造或发现见解。通过利用 Batch、ECR、S3、DynamoDB 和 QuickSight 等亚马逊云科技服务的强大功能,我们可以大规模运行复杂的 ABM 模拟,同时确保数据安全性、持久性以及分析和可视化的可访问性。图 9

图 9 Amazon Batch 允许用户提交任务请求,在预定义的任务定义中更改 JSON 配置,从而实现基于代理的建模 (ABM) 模拟的可扩展和安全执行。仿真使用来自 Amazon ECR 的容器、来自 Amazon S3 的数据和来自基于 EC2 的 Ray 集群的计算资源,在隔离的私有子网中运行。完成后,仿真数据存储在 DynamoDB 中,相关任务将这些数据处理为表格格式,以便通过 Amazon QuickSight 仪表板轻松访问,同时利用多个亚马逊云科技服务来确保数据安全、持久性和可靠分析。
结论
总体而言,初步结果表明,基于代理的模拟有可能为股票市场生成真实的合成数据。该仿真捕捉了许多程式化的事实,并生成的数据分布/动态随着代理复杂性的增加而越来越符合实际市场,这表明了其加强战略制定和测试的潜力。从历史上看,这种渐进式调整过程的计算复杂性和成本一直很高;但是亚马逊云科技的高性能计算服务和产品使运行迭代复杂的多代理仿真变得可行。
在我们驾驭现代金融市场的复杂性时,在数据不足的情况下进行回溯测试所面临的挑战怎么强调都不为过。通过基于代理的模型生成的合成数据为丰富我们的数据集提供了前景光明的途径,从而可以制定更全面、更具弹性的投资策略。通过利用这种创新方法,投资者和分析师可以更好地设计策略,这些策略不仅可以在他们观察到的历史市场条件下蓬勃发展,而且可以在未来市场格局的广阔未知领域蓬勃发展。
参考文献
1 N.Garleanu 和 L.H. Pedersen,"主动和被动投资:理解萨缪尔森的格言",
《资产定价研究评论》,12(2),389-446,https://doi.org/10.193/parstu/rrab020(2022 年)。
2 Palmer,R.、Arthur、W.、Holland、John、Lebaron、Blake,"人造股票市场",《人工生命与机器人》,https://www.researchgate.net/publication/225471692_An_artificial_stock_market,(1999)。