分类
外汇交易策略

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

TL; DR机器学习可用于发现成功的交易策略。 机器学习算法是复杂的反复试验和优化方法,没有内在的理由不能取代执行相同功能的人员。

5篇关于强化学习在金融领域中应用的论文推荐

Reinforcement learning in market games(arxiv 0710.0114)

Edward W. Piotrowski, Jan Sladkowski, Anna Szczypinska

金融市场投资就像许多的多人游戏一样——必须与其他代理人互动以实现自己目标。其中就包括与在市场上的活动直接相关的因素,和影响人类决策及其作为投资者表现的其他方面。如果区分所有子博弈通常是超出希望和资源消耗的。在这篇论文中研究了投资者如何面对许多不同的选择、收集信息并在不了解游戏的完整结构的情况下做出决策。论文将强化学习方法应用于市场信息理论模型 (ITMM)。尝试区分第 i 个代理的一类博弈和可能的动作(策略)。任何代理都将整个游戏类划分为她/他认为子类,因此对给定的子类采用相同的策略。划分标准基于利润和成本分析。类比类和策略通过学习过程在各个阶段更新。

Dreaming machine learning: Lipschitz extensions for reinforcement learning on financial markets(arXiv 1909.03278)機器學習在演算法交易中的應用

J. M. Calabuig, H. Falciani, E. A. Sánchez-Pérez

论文考虑了一种用于在金融市场框架内构建新的强化学习模型的准度量拓扑结构。它基于在度量空间中定义的奖励函数的 Lipschitz 型扩展。具体来说,McShane 和 Whitney 被用于奖励函数,该函数由给定时间投资决策产生的收益的总评估定义。将度量定义为欧几里得距离和角度度量分量的线性组合。从时间间隔开始的所有关于系统演化的信息都被用来支持奖励函数的扩展,并且通过添加一些人为产生的状态来丰富这个数据集。论文中说到,这种方法的主要新颖之处在于产生了更多状态(论文中称之为“dreams”)以丰富学习的方式。使用代表金融市场演变的动态系统的一些已知状态,使用现有的技术可以通过插入真实状态和引入一些随机变量来模拟新状态。这些新状态用于为学习算法提供训练数据,该算法的目的是通过遵循典型的强化学习方案来改进投资策略。

Automatic Financial Trading Agent for Low-risk Portfolio Management using Deep Reinforcement Learning(arXiv 1909.03278)

自主交易代理是人工智能解决资本市场投资组合管理问题最活跃的研究领域之一。投资组合管理问题的两个主要目标是最大化利润和抑制风险。大多数解决这个问题的方法只考虑最大化回报。但是这篇论文提出了一种基于深度强化学习的交易代理,它在管理投资组合时,不仅考虑利润最大化,还考虑风险约束。论文中还提出了一个新的目标策略,让交易代理学会更偏向低风险的行动。这个新的目标策略可以通过超参数来调整最优行为的贪心程度来降低行动的风险。论文所提出的交易代理通过加密货币市场的数据来验证性能,因为加密货币市场是测试交易代理的最佳试验场,因为每分钟积累的数据量巨大,市场波动性极大。作为实验结果,在测试期间,代理实现了 1800% 的回报,并提供了现有方法中风险最小的投资策略。并且在另一个实验表明,即使市场波动很大或训练周期很短,交易的代理也能保持稳健的泛化性能。

Application of deep reinforcement learning for Indian stock trading automation(arXiv 2106.16088)

Author : Supriya Bajpai

在股票交易中,特征提取和交易策略设计是利用机器学习技术实现长期收益的两项重要任务。通过获取交易信号来设计交易策略可以实现交易收益最大化。论文中将深度强化学习理论应用于印度市场的股票交易策略和投资决策。利用三个经典的深度强化学习模型Deep Q-Network、Double Deep Q-Network和Dueling Double Deep Q-Network对10个印度股票数据集进行了系统的实验。并对模型的性能进行了评价和比较

Robo-Advising: Enhancing Investment with Inverse Optimization and Deep ReinforcementLearning(arXiv 2105.09264)

Author : Haoran Wang, Shi Yu

机器学习(ML)已被金融行业视为一种强大的工具,在投资管理等各个领域都有显著的应用。论文提出了一个全周期数据驱动的投资机器人咨询框架,由两个ML代理组成。第一代理是一种逆投资组合优化代理,它利用在线逆优化方法直接从投资者的历史配置数据中推断投资者的风险偏好和预期收益。第二个是深度强化学习(deep reinforcement learning, RL)代理,它将所推断的预期收益序列聚合在一起,形成一个新的多周期均值-方差投资组合优化问题,这样就可以使用深度强化学习方法进行求解。论文中的投资计划应用于2016年4月1日至2021年2月1日的实际市场数据,表现持续优于代表总体市场最优配置的标准普尔500基准投资组合。这种优异表现可能归因于多周期规划(相对于单周期规划)和数据驱动的RL方法(相对于经典估计方法)。

机器学习算法真的可以帮助交易吗?

答案是肯定的! 实际上,有一些完全基于人工智能的对冲基金,即Rebellion Research和KFL Capital。 机器学习是合乎逻辑的,并且克服了人类的局限性。 这对于进行决策时情绪会导致陷阱的交易非常重要。 机器学习分为监督学习和无监督学习。 无监督学习是在不标记数据的情况下在数据流中查找模式的能力。 这种类型的一个示例是自组织映射(SOM)。 这种类型的局限性在于未指定应对数据进行分类的参数。 在有监督的学习班中,指定培训数据/标签。

底线是低买高卖。 这是通过使用机器学习技术来完成的,该技术可检测数据中的模式并进行预测。 建立模型是交易策略的关键部分。 基于过去的数据及其在数据点附近的聚类,可以对未来进行预测。 有很多模型,隐马尔可夫模型,决策树,随机森林等等。

我已经使用机器学习编写了一个示例交易策略。 您可以在此基础上进行进一步改进。 该代码是使用Python编写的,因此,如果您熟悉该语言,则应该能够轻松理解它。

首先,我解释一下博客的议程:

  1. 创建一种无监督的ML(机器学习)算法来预测状态。
  2. 绘制这些方案以使其可视化。
  3. 训练以制度为特征之一的支持向量分类器算法。
  4. 使用此支持向量分类器算法可以预测市场开盘时的当前趋势。
  5. 可视化此策略在测试数据上的性能。
  6. 可下载的代码让您受益

首先,我导入了必要的库。 请注意,我已经导入了fix_yahoo_finance包,因此我能够从yahoo中提取数据。 如果您没有此软件包,建议您先安装它或将数据源更改为google。

接下来,我提取了在上一个博客中使用的引号“ SPY”的数据,并将其保存为数据框df。 我选择了该数据的时间段为2000年。

但是,在此之前,我决定了这些指标的回顾时间段。 我选择了10天的回顾期。 您可以尝试其他适合您的电话号码。 我选择10来检查过去2周的交易数据,并避免在较小的回顾期内固有的噪音。

除了回溯期外,我们还决定数据的测试序列拆分。 我更愿意提供80%的数据用于培训,其余20%的数据用于测试。 您可以根据需要进行更改。

如您所见,有许多NaN值。 我们需要估算或放弃它们。 如果您是机器学习的新手,并且想了解冲床功能,请阅读此内容。 我在该算法中删除了NaN值。

接下来,我缩放了在之前的代码段中创建的Regimes数据框(不包括Date和Regimes列),并将其保存回相同的列中。 这样,我将不会丢失任何功能,但是数据将被缩放并准备用于训练支持向量分类器算法。 接下来,我创建了一个信号列,将其用作预测值。 该算法将训练特征集以预测此信号。

接下来,我实例化了一个支持向量分类器。 为此,我使用了sklearn在示例中使用的相同SVC模型。 我尚未针对最佳超级参数优化此支持向量分类器。 在Quantra™的机器学习课程中,我们广泛讨论了如何使用超参数并优化算法来预测每日的高点和低点,进而预测当天的波动性。

接下来,我将无监督状态算法的测试数据分为训练和测试数据。 我们使用这个新的训练数据来训练我们的支持向量分类器算法。 为了创建火车数据,我删除了不属于功能集的列:

最后,我计算了累积策略收益和累积市场收益,并将它们保存在df中。 然后,我计算了锐度比来衡量性能。 为了清楚地了解此指标,我绘制了性能以对其进行测量。

经过大量的代码和努力,如果最终结果看起来像这样,那么没有机器学习背景的人会说这是不值得的。 我现在同意。 但是,请看下面这行代码:

我知道您在想什么:我只是拟合数据以获得结果。 这不是完全错误的。 我会再告诉您另一支股票,然后您决定。

您可以将其进一步更改为GE或其他名称,然后自己检查。 此策略适用于某些股票,但不适用于其他股票,大多数定量策略就是这种情况。 该算法能够始终如一地工作的原因有很多,我将在这里列出其中的一些原因。

我们尚未检查收益率的自相关性,否则将增加算法的可预测性。 通过将returns列移动1并将其作为功能集传递,自己尝试一下。 结果将如下所示:

希望您对交易中使用的支持向量机有很好的了解。 我们在最新的机器学习课程“与机器学习交易:分类和SVM”中广泛讨论了该主题,您将对机器学习中使用的分类技术有很好的了解。 本课程是3门课程“机器学习交易”機器學習在演算法交易中的應用 捆绑课程的一部分。 该软件包涵盖了回归,分类和SVM的策略。 该捆绑包提供30%的折扣,单击此处了解更多信息。

机器学习和人工智能是关于定量金融的热门话题。 这家全球最大的基金公司(黑石集团)最近宣布,将用采用机器学习和人工智能的计算机取代一些分析师。 Blackrock的创始人兼首席执行官Laurence Fink说:“信息的民主化使主动管理变得更加困难。 我们必须改变生态系统,这意味着必须更多地依赖大数据,人工智能,量化和传统投资策略中的因素和模型。”

如果您想了解ML在交易中的工作原理,ML交易技巧,在平台上执行ML交易策略,可以注册即将在6月15日(星期四)晚上8点30分举行的网络研讨会。 太平洋标准时间(PST)上午8:00 | 美国东部时间上午11:00:

为了将机器学习应用于问题,需要存在几个条件。 首先,需要数据,因为数据对于任何机器学习都是绝对必要的。 另一个重要条件是,数据需要存在一些基础模式。 这是我们要看的第二个条件。

因此,这是我对您问题的回答。 如果您分析数据,并找到某种模式的证据(例如,通过保留一些用于验证的训练数据和一些用于自身训练的数据,则对于经过训练的模型而言,验证错误较低),那么机器学习无疑会有所帮助。 此外,在立即将模型应用于股票交易之前,建议您先运行一段时间并评估其成功后再使用它来赚钱。 最后,请记住,股市是一个动荡的实体。 您将需要仔细定义您的方法,例如短期,长期,还是介于交易之间的某个位置,或其他因素。

TL; DR机器学习可用于发现成功的交易策略。 机器学习算法是复杂的反复试验和优化方法,没有内在的理由不能取代执行相同功能的人员。

如果有交易背景的人开始进行机器学习,那么从第一方面来看,这就是一个不太幸运的设置:他们将使用的数据太少,模型太大,并且没有正则化约束。 过度拟合放心。 但是,了解更多有关市场的知识之后,他们可能会有更好的机会找到正确的投入(当然,除非他们接受了一些神秘的胡说,在这种情况下是没有希望的。)

机器学习该如何应用到量化投资系列(一)

机械的定义避开不谈,回答也不追求全面准确。明确一点,机器学习的主要目的在于发现规律重现规律。(此处不谈非监督学习、强化学习,也不谈降维、集成算法)。什么是发现规律?譬如将决策树应用于多因子模型,试图从样本数据中找出具有较高收益的因子组合。什么是重现规律?譬如,拿来一篮子股票的样本(“训练样本”),假定当中y的值(连续值为回归、离散值为分类)与x1,x2. xn之间一些规律,那么我们用一个模型去学习这个规律,目的是使得这个模型应用于训练样本时误差最小,那么,当下一次出现一只新的股票,希望通过此模型预测这只股票未来的表现。而这个预测的原理是从训练样本中(过去的样本)学习得到的。

二、为什么机器学习重要

■ 例子1: 前段时间比较火的《跟踪聪明钱-从分钟线到选股因子》,作者认为聪明钱应该“订单报价更激烈”,因此构造一个指标衡量聪明程度,利用这个指标的确定投资策略。

如上划分找到聪明钱之后,我们就可以通过这些聪明钱的交易数据来构造聪明钱的情绪因子 Q

■ 例子2:

那么问题来了,上述两个例子的发现规律重现规律过程能否用机器学习代替?

上述两个例子本质也是分析过去的数据,从而发现规律或重现规律,这一过程与机器学习模型的本质是无异的。但是很遗憾,就目前的成果来看,若想在非监督情况下,利用机器学习模型来发现规律,这一点还是比较困难的(你就想象模型怎么找出例1研报中的“聪明程度”指标表达式),但是重现规律这一点,机器学习还是可以轻松做到的。

三、谈谈应用

■ 例子1:【国信证券——SVM 算法选股以及 Adaboost 增强】。以每个因子作为一层特征, 在 68 个因子的维度下,支持向量机算法能够有效的对股票组合的标签进行分类与预测。

SVM 算法的样本数据的标准化采用排序法。 因此,计算每个股票按某因子的排序然后除以总股票数,这样因子的值归到(0,1]。

然后,对下一期收益率从大到小排序,取前 30%作为强势股,后 30%作为弱势股,强势股划分类标为+1,弱势股划分类标为-1;中间百分之 40%的股票排出训练集,因为中间百分之 40%的股票收益并不强势也不弱势,相当于噪声数据。为了充分利用数据,找出相对稳定有效的因子,确保算法的稳定性,用过去 12 个月的因子数据作为输入样本。从 SVM 理论推导可以知道, 在得到最优超平面的解之后, 样本被划分为两类,而样本距离超平面的距离,则可以代表样本被正确分类的程度。 用公式表达为:

其中 x 为新的样本点, w, b 为 SVM 求解超平面的输出结果。根据距离结果, 同样将股票组合分为 10 档,选择收尾两档分别作为强势组合和弱势组合,并观察回测结果。

■ 例子2:你认为股指期货Tick数据的盘口与成交与价格未来的走势有关,就可以用机器学习模型(神经网络、深度学习网络)学习过去数据中盘口价量与之后的价格走势的规律,再应用于当前;诸如此类。(此处没有谈及也较常用的聚类算法,如GMM等。)

三、谈谈机器学习的利弊

数据样本的选取(因子变量的选取)、数据样本的预处理(变量的预处理、样本的平衡处理、极端样本的处理等)、人为的处理(一些变换等)、模型的选取、模型算法的选取、模型参数的选取,对欠拟合、过拟合的避免等等……撇开这些不讲,即使上述提及的过程合部处理恰当,训练结果良好,哪怕是测试样本效果也不错,应用于实际投资效果也不能保证一定好。为什么呢?

第一,这是因为我们的样本大多数时候是带有时间维度的(即训练样本、测试样本、实际投资所处的时间段都是不同的),它们并非截面数据,模型学习的市场“规律”或“偏好”,是会随时间变化的。第二,我们的模型往往只是学习某一些因子反映的规律,而除去这些因子以外的因素,影响市场变化的因素有很多很多(汇率、政策等),这些都是模型没有考虑的,一旦这些模型以外的因素成为主导市场“偏好”的时候,时间短还好说,最多也只是短期的一个回撤,如果时间较长,模型在此期间的效果就会大打折扣。

对于第二个问题,在股票多头策略中使用对冲、在多空投机策略中设置止损和失效判断(如连续n次投机连续失败时,可考虑一段时间内不再开仓投机等)也许是个好方法,对于第一个问题,使用时间跨度更长的样本进行训练并不一定能解决问题。(例如市值因子,哪怕从3年的回测跨度变成5年、7年,在过去都是较为显著的因子,但未来呢?)笔者认为这个问题需要具体分析。从数据的实际背景分析,模型所学习的规律是否可持续;如果担心这种规律变化过快,可以缩短训练样本的长度,并且采用时间滚动的样本作为训练样本。

机器学习在金融计量经济学中的应用

应用普通最小二乘法需要我们人为做出一些选择(例如,选择哪些解释变量,变量之间如何交互等)。而机器学习可以自动搜索解释变量并确定变量之间的交互关系。例如,一个典型的机器学习方法:回归树( regression trees)。像线性函数一样,回归树将每个向量的特征映射到预测值。预测函数采用树形式,在每个节点处分成两部分。在树的每个节点处,单个变量的值决定了算法选择左侧还是右侧的子节点。当到达终端节点——叶子节点时,返回一个预测。

1、正则化(regularization)。在上述回归树中,我们不是选择最好的整体树,而是选择一定深度树中的最佳树。树越浅,样本内拟合程度越差,但这也代表示更少的过度拟合。通过适当地选择正则化水平,我们可以平衡模型的灵活性和过度拟合。

2、经验调整(empirical tuning)。我们在原始数据样本内创建一个样本外数据。我们通过拟合样本内数据,选择合适的正则化水平下的样本外数据拟合最好的模型。

机器学习的缺点

机器学习的优点在于它们可以拟合出许多不同的模型。 但是这也会导致一个致命弱点:更多的模型意味着具有完全不同参数的两个模型可以产生相似的预测结果。 因此,我们如何在两种不同的模型之间进行选择值得研究。

正则化也会导致这个问题。 首先,我们会选择相对不复杂但错误的模型;其次,它可以引起遗漏变量偏差(omitted variable bias),当正则化排除一些变量时,可能会导致参数估计偏差。

本文基于学术论文

参考
Financial econometrics and machine learning,Ralph Sueppel