作者:老余捞鱼
原创不易,转载请标明出处及原作者。
写在前面的话:各位读者朋友们,今天我要介绍的是微软最新开源的金融市场预测模型——MarS。这款模型利用真实历史订单数据训练,能模拟出极为逼真的金融市场环境。不仅预测准确率远超传统模型,还能让用户自定义场景测试交易策略。无论你是金融从业者还是对市场趋势感兴趣的朋友,这个项目都将为你带来全新的视角和启发。
一、什么是MarS
MarS(Market Simulation)是微软研究院开发的一款金融市场模拟引擎,由生成式大型市场模型(Large Market Model, LMM)提供支持。在市场趋势预测方面,MarS的表现明显优于传统的直接预测模型,充分展现了其对市场动态的深入洞察。在预测准确率方面,MarS相较于传统模型(例如DeepLOB)具有明显优势。视频介绍如下:
<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="T5BQ6u7k-1734841239940" src="https://live.csdn.net/v/embed/440068"></iframe>微软开源了一款金融市场预测模型:MarS
用户可通过注入特定订单或设定目标场景来操控模拟过程,进而分析特定情境下的市场反应。
此外,MarS还提供了互动式的测试环境,方便用户在此环境中尝试不同的交易策略,并观察其市场效应。
二、总体架构
总体架构设计如下图:
Env 是一个类似gym的接口。下面是如何使用 env 和噪声代理生成订单的示例:
agent = NoiseAgent(
symbol=symbol,
init_price=100000,
interval_seconds=1,
start_time=start_time,
end_time=end_time,
)
env = Env(exchange, description="Noise agent simulation")
env.register_agent(agent)
env.push_events(create_exchange_events(config))
for observation in env.env():
action = observation.agent.get_action(observation)
env.step(action)
States 会随着每笔交易信息自动更新,包括订单、交易和订单簿快照,即使在支持延迟状态的环境中,状态在其生命周期内也由代理和零拷贝共享。创建新状态非常简单。以下是创建包含所有交易的状态的示例:
class TransState(State):
def __init__(self) -> None:
super().__init__()
self.transactons: List[Transaction] = []
def on_trading(self, trade_info: TradeInfo):
super().on_trading(trade_info)
self.transactons.extend(trade_info.transactions)
def on_open(self, cancel_transactions: List[Transaction], lob_snapshot: LobSnapshot, match_trans: Optional[Transaction] = None):
super().on_open(cancel_transactions=cancel_transactions, lob_snapshot=lob_snapshot, match_trans=match_trans)
self.transactons.extend(cancel_transactions)
if match_trans:
self.transactons.append(match_trans)
def on_close(self, close_orderbook: Orderbook, lob_snapshot: LobSnapshot, match_trans: Optional[Transaction] = None):
super().on_close(match_trans=match_trans, close_orderbook=close_orderbook, lob_snapshot=lob_snapshot)
if match_trans:
self.transactons.append(match_trans)
三、主要功能
MarS的功能应用范围广泛,涵盖了市场趋势预测、异常检测系统、市场影响分析以及作为强化学习环境等多个领域。
2.1 市场模拟
MarS能够生成与真实市场相似的订单序列,帮助用户进行市场趋势预测和异常检测。
精细化市场动态建模:
- 基于交易订单和限价订单簿(LOB),通过订单序列和批次序列建模,再现高分辨率市场动态。
- 使用真实历史数据进行训练,能够生成逼真的市场轨迹,匹配历史市场的“风格化事实”(如波动聚集和收益无自相关性)。
仿真精确性:
模拟的市场数据在统计特性上与真实市场高度一致,适用于预测和分析。
2.2 订单生成
用户可以通过特定的订单或描述目标场景,控制模拟过程,以分析特定条件下的市场行为。
多样化场景模拟:
- 能够根据用户定义的条件(如价格波动或交易量变化)生成指定的市场情景。
- 支持基于模糊描述(如“价格波动”或“低波动性压缩”)生成具体的控制信号。
动态条件支持:
使用历史或实时市场数据作为初始条件,结合用户输入的交易命令和匹配规则,生成未来的市场行为。
生成目标控制:
通过迭代优化,在保持真实市场影响的前提下,实现对目标市场情景的精准控制。
2.3 交互平台
MarS提供一个交互式环境,用户可以在其中测试不同的交易策略,观察其市场影响,并训练强化学习代理。
实时交互功能:
- 用户可以直接与仿真市场交互,提交交易订单,观察市场对交易行为的即时响应。
- 支持模拟复杂的市场影响,包括一级和二级市场效应。
强化学习支持:
- 提供一个逼真且可交互的环境,用于训练和优化交易策略。
- 特别适用于开发强化学习代理,评估交易行为对市场的影响。
MarS 项目开源地址:https://github.com/microsoft/MarS/
四、观点总结
MarS 是一个由生成式基础模型驱动的金融市场模拟引擎,旨在提供现实、互动且可控的订单生成。该项目展示了LMM在金融市场中的扩展规律,并通过多种下游应用展示了其巨大潜力。
- MarS 是由生成式基础模型驱动的金融市场模拟引擎;
- 环境(Env)是类似gym的接口,用于生成订单和定义代理。
- 状态(States)自动更新的代理可用信息,包括订单、交易和订单簿快照。
- MarS能够生成与真实市场相似的订单序列,帮助用户进行市场趋势预测和异常检测。
- 用户可以通过特定的订单或描述目标场景,控制模拟过程,以分析特定条件下的市场行为。
- MarS提供一个交互式环境,用户可以在其中测试不同的交易策略,观察其市场影响,并训练强化学习代理。
- 用户需自行准备代理并评估模型风险,模拟引擎不替代金融专业人士的角色。
感谢您阅读到最后,希望本文能给您带来新的收获。码字不易,请帮我点赞、分享。祝您投资顺利!如果对文中的内容有任何疑问,请给我留言,必复。
本文内容仅限技术探讨和学习,不构成任何投资建议
标签:微软,self,用户,订单,开源,MarS,trans,match From: https://blog.csdn.net/weixin_70955880/article/details/144644377