分类
美股期权交易基础

機器學習在演算法交易中的應用

机器学习在股票交易中的应用

机器学习怎样应用于量化交易(一)
曾有朋友问过,国内现在量化领域机器学习应用的少,是否因为效果不如简单的策略。其实,把机器学习应用在量化交易上始终面临着两难,却并不是无解的两难。很多时候并不是机器学习不work,而是真正懂如何用正确科学的统计思维使用Machine Learning的人才太少。机器学习涉及到特征选择、特征工程、模型选择、数据预处理、结果的验证和分析等一整套建模流程,广义角度来说就不单单是模型选择的问题。所以,如果认为“用支持向量机成功预测股票涨跌” 这样的研究,就是把机器学习应用于量化交易,这种狭义的认识无疑是买椟还珠,对机器学习领域散落遍地的珍珠视而不见。如果把机器学习的崛起放在历史进程中考量,无非就是趋势的延续:现在,可通过系统的数据分析证实过去模糊不定的经验,机器学习算法将未曾被察觉的规律得以浮现纸面。在我看来,未来的发展概有两个方向:1.针对量化交易的统计学习算法被提出,使其适合于噪声大,分布不稳定的金融数据分析;2.对于机器学习的热情回归理性,从工具为导向回归到问题为导向。针对如何以问题为导向,在机器学习算法中挑选合适的工具,分享一些思路。1.多因子模型的因子权重计算当我们在构建多因子模型且已经选定了一系列因子之后,要如何根据不同的市场情况调整各个因子的权重呢?在以往的研究中发现,与其它算法相比较,随机森林算法对于存在非线性、噪音和自变量共线性的训练集的分析结果更出色。所以,目前在多因子模型的权重上,采用当期收益率对上期因子进行随机森林回归分析,以确定下一期多因子模型的因子权重。2.缺失值处理处理缺失值在金融的量化分析中是个无可避免的问题。选取合理的缺失值处理方法,依赖于数据本身的特点、数据缺失的情况、其对应的经济学意义,以及我们需要使用数据进行何种计算。在尝试构建多因子模型时,我们选择了两种缺失值替换方法:(1)采用期望最大化算法 来用同一变量的已知数据对缺失值进行极大似然估计。(2)把模型中包含的所有因子作为特征变量,并赋予其相同的权重,再采用机器学习中的K-近邻算法来寻找最相似的标的,保证缺失值替换后,不会强化一部分因子的影响力。其实在量化领域,机器学习解决着线性模型天生的缺陷或弊端,所以还是有着很深的介入的。除去凸优化、降维(提取市场特征)等领域的应用,目前“非动态性”和“非线性”是两个重要的弊端。金融关系之间并非静态,很多时候也不是线性的。统计学习的优势此时就会体现出来,它们能够迅速地适应市场,或者用一种更“准确的”方式来描述市场。在国内,机器学习在量化内应用跟领域有很大的关系,跟频率也有很大的关系。比如,CTA的运用可能就要多于股票,它处理数据的维度要远小于股票,获取市场的长度和动态又强于股票。股票市场的momentum要弱于期货市场的momentum,它的趋势与股票相比更明显和低噪声。这些特征对于机器学习发挥作用都更加有利。很可能国内一些交易执行算法的设计上就借鉴了机器学习。我们可以通过学习订单薄特征,对下一期盘口变化做一些概率上的预测,经过一定样本的训练之后,可以显著地提升算法表现。而我仍谨慎看好深度学习等机器学习方法的原因在于,在认识市场上,现行的大部分方法与这些方法并不在一个维度上,这个优势让它们与其他方法相比,捕捉到更多的收益。也就是说,一个新的认识市场的角度才能带来alpha。

相信很多人都想过让人工智能来帮你赚钱,但到底该如何做呢?瑞士日内瓦的一位金融数据顾问 Gaëtan Rickter 近日发表文章介绍了他利用 Python 和机器学习来帮助炒股的经验,其最终成果的收益率跑赢了长期处于牛市的标准普尔 500 指数。虽然这篇文章并没有将他的方法完全彻底公开,但已公开的内容或许能给我们带来如何用人工智能炒股的启迪。

我终于跑赢了标准普尔 500 指数 10 个百分点!听起来可能不是很多,但是当我们处理的是大量流动性很高的资本时,对冲基金的利润就相当可观。更激进的做法还能得到更高的回报。

这一切都始于我阅读了 Gur Huberman 的一篇题为《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的论文。该研究描述了一件发生在 1998 機器學習在演算法交易中的應用 年的涉及到一家上市公司 EntreMed(当时股票代码是 ENMD)的事件:

「星期天《纽约时报》上发表的一篇关于癌症治疗新药开发潜力的文章导致 EntreMed 的股价从周五收盘时的 12.063 飙升至 85,在周一收盘时接近 52。在接下来的三周,它的收盘价都在 30 以上。这股投资热情也让其它生物科技股得到了溢价。但是,这个癌症研究方面的可能突破在至少五个月前就已经被 Nature 期刊和各种流行的报纸报道过了,其中甚至包括《泰晤士报》!因此,仅仅是热情的公众关注就能引发股价的持续上涨,即便实际上并没有出现真正的新信息。」

机器学习怎样应用于量化交易(一)

曾有朋友问过,国内现在量化领域机器学习应用的少,是否因为效果不如简单的策略。其实,把机器学习应用在量化交易上始终面临着两难,却并不是无解的两难。很多时候并不是机器学习不work,而是真正懂如何用正确科学的统计思维使用Machine Learning的人才太少。
机器学习涉及到特征选择、特征工程、模型选择、数据预处理、结果的验证和分析等一整套建模流程,广义角度来说就不单单是模型选择的问题。所以,如果认为“用支持向量机成功预测股票涨跌” 这样的研究,就是把机器学习应用于量化交易,这种狭义的认识无疑是买椟还珠,对机器学习领域散落遍地的珍珠视而不见。如果把机器学习的崛起放在历史进程中考量,无非就是趋势的延续:现在,可通过系统的数据分析证实过去模糊不定的经验,机器学习算法将未曾被察觉的规律得以浮现纸面。
在我看来,未来的发展概有两个方向:
1.针对量化交易的统计学习算法被提出,使其适合于噪声大,分布不稳定的金融数据分析;
2.对于机器学习的热情回归理性,从工具为导向回归到问题为导向。
针对如何以问题为导向,在机器学习算法中挑选合适的工具,分享一些思路。
1.多因子模型的因子权重计算
当我们在构建多因子模型且已经选定了一系列因子之后,要如何根据不同的市场情况调整各个因子的权重呢?在以往的研究中发现,与其它算法相比较,随机森林算法对于存在非线性、噪音和自变量共线性的训练集的分析结果更出色。所以,目前在多因子模型的权重上,采用当期收益率对上期因子进行随机森林回归分析,以确定下一期多因子模型的因子权重。
2.缺失值处理
处理缺失值在金融的量化分析中是个无可避免的问题。选取合理的缺失值处理方法,依赖于数据本身的特点、数据缺失的情况、其对应的经济学意义,以及我们需要使用数据进行何种计算。在尝试构建多因子模型时,我们选择了两种缺失值替换方法:(1)采用期望最大化算法 来用同一变量的已知数据对缺失值进行极大似然估计。(2)把模型中包含的所有因子作为特征变量,并赋予其相同的权重,再采用机器学习中的K-近邻算法来寻找最相似的标的,保证缺失值替换后,不会强化一部分因子的影响力。
其实在量化领域,机器学习解决着线性模型天生的缺陷或弊端,所以还是有着很深的介入的。除去凸优化、降维(提取市场特征)等领域的应用,目前“非动态性”和“非线性”是两个重要的弊端。金融关系之间并非静态,很多时候也不是线性的。统计学习的优势此时就会体现出来,它们能够迅速地适应市场,或者用一种更“准确的”方式来描述市场。
在国内,机器学习在量化内应用跟领域有很大的关系,跟频率也有很大的关系。比如,CTA的运用可能就要多于股票,它处理数据的维度要远小于股票,获取市场的长度和动态又强于股票。股票市场的momentum要弱于期货市场的momentum,它的趋势与股票相比更明显和低噪声。这些特征对于机器学习发挥作用都更加有利。
很可能国内一些交易执行算法的设计上就借鉴了机器学习。我们可以通过学习订单薄特征,对下一期盘口变化做一些概率上的预测,经过一定样本的训练之后,可以显著地提升算法表现。
而我仍谨慎看好深度学习等机器学习方法的原因在于,在认识市场上,现行的大部分方法与这些方法并不在一个维度上,这个优势让它们与其他方法相比,捕捉到更多的收益。也就是说,一个新的认识市场的角度才能带来alpha。

機器學習在演算法交易中的應用

技术 | 算法交易策略中的机器学习

这篇文章摘自 Stefan Jansen的《Hands-On Machine Learning for Algorithmic Trading》。这本书用NumPy、spaCy、pandas、scikit-learn和Keras(等Python包)探索现实世界中有效的交易策略。

最终,积极投资管理的目标在于超额回报,即回报超过用于业绩评估的基准回报。主动管理的基本法则是应用信息比率:信息比率=主动管理的回报-基准回报(一般是市场指数)/ 分子的标准差(也就是波动性)。它将信息比率近似为信息系数(IC)的乘积,它衡量结果相关性的预测质量。另外,策略的广度则表示为下注次数的平方根。

1.在1980年代和1990年代,信号经常出现在学术研究中,并且使用从市场和基础数据中获得的单一或非常少的输入。这些信号现在已经大量被商品化,就如ETF一样方便获得,例如如基本的均值回归策略。

2.21世纪,基于因子的投资策略激增。基金使用算法识别暴露于价值或动量等风险因子的资产,以寻求套利机会。金融危机早期的赎回引发了2007年8月的量化界地震,波及到了基于(风险)因子(投资策略)基金行业。这些策略也可以在这些基金设置的组合——基于给定一系列风险因子的只做多smart-beta策略的投资组合中看到。

3.第三个时代是由机器学习能力和替代数据的投资驱动的,以产生可重复交易策略的有利可图的信号。因子衰减是一个主要挑战:新的异常(事件)产生的超额回报从发现到发表下降了四分之一,然后由于竞争和拥挤,在策略被公开发表后下降达50%以上。

機器學習在演算法交易中的應用

在计算机技术不断发展的条件下,越来越多的数据被加以采集和储存,从这些大规模数据中发现的统计规律,可以对投资决策进行指导。算法交易是通过数学和计算机模型从大规模数据中发现投资机会,自动完成证券买卖的投资方式,相比于通行的基本面分析和技术分析具有客观性、纪律性和精确性等优势。 算法交易在国外已经存在多年,并在证券市场中扮演着重要角色。随着最近几年我国证券市场的发展,算法交易逐渐被各投资机构重视并加以尝试。算法交易系统的建设需求十分迫切,这从今年夏天因交易系统问题导致的“光大事件”中可见一斑。 在对算法交易系统需求进行分析的基础上,本文为算法交易系统做出了较为详细的系统设计,将算法交易系统划分为数据抓取及存储、量化模型运行时、程序下单三大模块。数据抓取及存储模块负责从不同的数据源获取数据并进行持久化存储,机器学习模型运行在量化模型运行时模块中,機器學習在演算法交易中的應用 尝试从大规模的数据中发现投资机会,并通过程序下单模块自动完成证券的买卖。 国内现有的算法交易系统被设计为主要用于处理从稳定数据源获取的结构化数据,比如交易所提供的交易记录。在面对内容庞杂的大规模互联网数据时,因存在数据抓取和存储上的困难而较少地使用。主题爬虫技术在垂直搜索中被较为广泛的研究,大规模数据存储的问题作为大数据技术的重要部分也被广泛的讨论。 本文将主题爬虫和大规模数据存储技术运用到算法交易系统中,通过使用SVM技术的主题爬虫提高了系统抓取数据的效率,以关系型数据库分库分表技术在保证存储系统事务性的同时能够支撑大规模数据的存储。同时,以分布式数据库为核心,使得交易系统能够快速适配各种不同的数据源。 除了实现数据抓取与存储模块外,本文还搭建了量化模型运行时模块,将SVM应用于金融时间序列的处理,结合交易经验,构建出日内交易模型,实验显示该模型的预测准确率略高于现有的研究。以此更好的展示算法交易系统的全貌。

算法交易中的机器学习系列(一)

有所观
给读者展示了如何采用有监督、无监督及强化学习等方法从多个数据源中提取交易信号、从不同资产类别中设计交易策略。
有所得
此书希望能够提供策略性的角度、概念性的理解以及实用工具来帮助读者在交易和投资过程中应用机器学习工具。
核心干货
本书不提供任何投资建议,最大的重点是详细介绍了建立机器学习与量化交易(ML4T - Machine Learning for Trading) 相融合的工作流程。

2.第一版和第二版的区别

1. 第二版的第八章The ML4T Workflow From Model to Strategy Backtesting描述的策略回测;
2. 新的覆盖100余种不同的alpha因子的附录;
3. 大量不同的实例。同时,作者在第二版中也力求改善清晰性和可读性。

第二版复现了一些近期学术论文中的成果(后面肯定会专门列文介绍,并给出加以注释的源码):

  • 第18章“金融时间序列和卫星图像的卷积神经网络(CNN)”
  • 第21章“生成对抗网络在时间序列数据生成中的应用”

第二版中的程序基于pandas 1.機器學習在演算法交易中的應用 0和TensorFlow 2.2版本,作者采用了Zipline的定制版本以便于在设计交易策略时可以较方便的包含机器学习模型。

考虑到作者说是在第八章介绍了机器学习和量化交易融合的工作流程,所以最近一个系列的文章应该也会以介绍这一章为主,篇幅角度考虑,这篇文章会为第八章开个小头

3.机器学习与算法交易的工作流程 – 从机器学习模型到策略回测

如何回测基于机器学习的策略

  1. 收集和准备市场交易数据、基本面数据和另类数据;
  2. 构造合适的alpha因子;
  3. 设计、调整、评估生成交易信号的机器学习模型;
  4. 制定交易规则并基于发出的信号进行交易;
  5. 在投资组合中为不同标的确定持仓大小;
  6. 基于历史数据模拟出发的交易;
  7. 基于持仓表现评估策略的好坏。

机器学习与量化交易的基本工作流程

*下期内容预告*
在下一篇文章中,将详细介绍回测时存在的常见错误以及如何避免他们。