最近研究量化交易,看了几个回测的框架,最后盯上PyAlgoTrade这个项目。感觉很不错,支持
策略回测和实盘交易,提供全面的技术分析接口,算是python的量化交易框架里比较出色的作品。所以对这个框架进行了一番研究。
程序化交易系统的编程范式:事件驱动的编程
量化交易,一般是采用统计学和数学工具,对资产的各个方面进行定量分析,并制订程序化的交易策略严格执行来获得收益。这里面有两大核心任务,
一个是数据分析,一个是程序化交易。
与纯粹的数据分析不同,因为有交易动作的存在,同时,在实盘交易中,还要实时更新价格、成交量等数据。这里面可以很明显的看到系统的结构:
数据分析模块----行情接口和数据源----交易订单管理模块----交易下单API
这几个模块之间还存在状态一致性的维护。因此,交易系统的设计,一般采用事件驱动的设计。比如MetaTrader 4的设计,MQL也是采用事件回调来计算指标或者进行EA交易。PyAlgoTrade也是基于这个理念开发的。PyAlgoTrade自己封装了一套事件分发机制,具体的实现可以参考:
observer和
dispatcher这两个模块
数据结构的取舍
量化交易中的数据以资产价格或者成交量的时间序列为主,这类序列化数据的分析框架有很多。大部分的科学计算框架,比如:Numpy、SciPy、statsmodels、scikit-learn等等,都支持序列或者Array的分析。在Python的科学计算框架体系中,Numpy是核心,其核心的ndarray数据结构也被广泛使用于其他数据分析框架之中。但是尽管