如何甄选算法交易策略


(iQuant) #1
                                                            来源:QuantStart
                                                            编译:caoxiyang

在这篇文章中,我想向您介绍我自己甄选有利可图的算法交易策略的方法。我们今天的目标是详细了解如何找到、评估和筛选这样的系统。我将解释个人偏好和策略表现对于评价策略的好坏具有同样的重要性,随后我将说明如何筛选和客观地评估自己的交易策略,并最终将其用于回溯测试。

确定自己的交易偏好

要想成为一名成功的交易者,有必要诚实地问自己一些问题。交易让你有能力以惊人的速度赔钱,所以有必要“了解自己”,就像了解你所选择的策略一样。

了解自己的个性

我想说,在交易中最重要的考虑是要了解自己的个性。交易,尤其是算法交易,需要强大的自律和情绪控制能力、足够的耐心,需要您能够在算法执行策略时不介入干预。

这可能极其困难,尤其是在遇到长期回撤的时期。许多在回测中被证明是高利润的策略可能会因受到简单的干预而破坏。要清楚,如果你想进入算法交易的世界,必然会受到情绪上的考验,为了成功,你必须克服这些困难!

时间和频率

下一个考虑是时间问题。你的工作是全职还是兼职?你每天在家工作还是上下班要花很长时间?这些问题将有助于确定你应该寻求的策略频率

对于那些全职工作的人来说,一个日内期货策略可能并不合适(至少在完全自动化之前是这样!)你的时间约束也将决定策略的方向。如果你的策略交易频率较高,并且依赖于昂贵的新闻源(比如彭博终端),那么显然你必须评估一下,是否能够在办公室工作的同时让策略保持顺利运行,这是很现实的问题。

对于那些有很多时间,或者有自动化策略的人来说,你可能希望研究一种更具技术性的高频交易(HFT)策略。

持续研究

我认为有必要对你的交易策略进行持续研究,以保持投资组合能够持续盈利。

因此,在量化交易的时间花费中,一个重要的部分是持续地进行研究。问问自己,你是否准备好了这么做,因为这可能就是造成盈利或缓慢亏损之间的差别所在。

交易资本

你还需要考虑你的交易资本。我认为的理想资金是至少50000美元。这是因为交易成本对于中高频率的策略来说是很高的,并且你有必要持有足够的资本,从而能在资产下跌时应付它们。 如果你考虑以低于1万美元的资本开始交易,那么你需要限制策略的频率,并且只交易一到两项资产,否则交易成本会迅速侵蚀你的回报。

编程能力

编程能力是创建自动算法交易策略的又一个重要因素。精通c++、Python或R等编程语言将使您能够自己创建端到端数据存储、回测引擎和执行系统。

掌握编程技能有许多好处,其中的主要好处是能够完全了解交易基础设施的各个方面。它还允许您探索更高频率的策略,因为您将完全控制您的“技术堆栈”。虽然这意味着您可以测试自己的软件并消除bug,但这也意味着您将花费更多的时间来编写基础设施,而不是用于实现策略,至少在您的算法交易生涯的早期阶段是如此。

收入依赖程度

你需要问问自己,通过算法交易,你希望实现什么。你是否对稳定的收入感兴趣,希望从你的交易账户中提取收益?或者,你是对长期资本收益感兴趣,并且能够在不需要动用资金的情况下进行交易?对收入的依赖将决定你策略的频率。更多地定期提取收入意味着需要更频繁、波动性更小(即夏普比率更高)的交易策略。而长期交易者不用承担那么多。

长期坚持

最后,不要被短时间内变得超级富有的想法所迷惑!算法交易不是一个快速致富的计划——如果有的话,它可能是一个快速变穷的计划。要想在算法交易中取得成功,需要严格的纪律、持续的研究、异常的勤奋和足够的耐心。要获得持续的盈利能力,可能需要数月甚至数年的时间。

如何形成自己的量化策略?

尽管普遍存在相反的看法,但在公共领域找到有利可图的交易策略实际上非常简单。获得交易想法现在很容易:学术金融期刊,交易博客,交易论坛,每周交易杂志和专业平台提供了数千种交易策略,以此为基础构建您的想法。

这通常需要(但不限于)以下一个或多个类别的专业知识:

  • 市场微观结构
    特别是对于更高频率的策略,可以利用市场微观结构,即了解订单动态以产生盈利能力。不同的市场具有各种技术、法规、市场参与者方面的限制和约束,这些都可以通进行针对性的策略开发。

  • 基金结构
    如养老基金、对冲基金、大宗商品交易顾问和共同基金都受到严格监管和庞大资本储备的限制。因此,某些一致的行为可以被那些更灵活的资金利用。例如,大型基金由于其规模而受到容量限制。
    因此,如果他们需要迅速抛售大量证券,他们将不得不分批出售这些证券,以避免“影响市场”。复杂的算法可以在资金结构套利过程中利用大资金的这一特点。

  • 机器学习/人工智能
    机器学习算法近年来在金融市场上越来越流行。分类器(如Naive-Bayes等)、非线性函数匹配器(神经网络)和优化路径(遗传算法)都被用于预测资产路径或优化交易策略。
    如果您有这方面的背景,您可能对特定的算法如何应用于特定的市场进行了解。

当然,还有许多其他领域需要定量研究。通过每周、甚至每天持续监控这些资源,你可以建立一个从不同来源获得的策略列表。下一步是决定如何排除这些策略中的一大部分,以便最大限度地减少浪费时间在无利可图的回测上。

评估交易策略

首先,最明显的考虑因素是你是否真的理解这个策略。您能够简明地解释这个策略吗?
还是它需要一系列的参数列表才能说明?此外,该策略在现实中是否有良好、坚实的基础?

例如,您能否可以指出策略模式潜在的行为原理或基金结构约束?这种约束能否容纳状态转换,例如明显的监管环境变化?该策略依赖于复杂的统计或数学规则吗?它适用于任何金融时间序列,还是特定于一些资产类别?

在评估新的交易方法时,你应该不断地考虑这些因素,否则你可能会浪费大量时间来进行回测和优化无利可图的策略。一旦你确定你理解了策略的基本原则,你就需要决定它是否符合前面提到的个性特征。有一些性格类型的人可以应对资产下跌,或者愿意接受更大的风险以获得更大的回报。

作为宽客,我们试图消除尽可能多的认知偏见,并且应该能够冷静地评估一项策略,但偏见总是会悄然而至。因此,我们需要一种一致的、不带感情色彩的方法来评估策略的执行情况。

以下是我判断一项潜在新策略的标准清单:

  • 方法论
    策略动力是基于均值回归,市场中性,还是什么方向?策略是否依赖于难以理解的复杂统计或机器学习技术,需要掌握统计学博士学位?这些技术是否会引入大量参数,而这可能导致优化偏差?该策略是否可能抵御状态转换(即金融市场潜在的新监管)?

  • 夏普比率
    夏普比率是策略的回报/风险比率特征。它量化了通过权益曲线承受的波动率所能达到的回报。当然,我们需要确定这些回报和波动性(即标准差)的周期和频率。 例如,更高频率的策略将需要更高的标准偏差采样率,但只需要更短的测试检验时间。

  • 杠杆
    策略是否需要显著的杠杆才能盈利?策略是否需要使用杠杆衍生品合约(期货、期权、互换)来获得回报?这些杠杆合约的波动性很大,因此很容易导致追加保证金。你具有交易资本以及应对这种波动的性格吗?

  • 频率
    策略的频率与您的技术能力、夏普比率和交易成本的总体水平密切相关。考虑到所有其他问题,更高频率的策略需要更多的资金,更复杂,更难实施。
    然而,假设你的回测引擎很复杂并且没有错误,他们通常会有更高的夏普比率。

  • 波动性
    波动性与策略的“风险”密切相关。夏普比率表征了这一点。如果未对冲,标的资产类别的较高波动率通常会导致股票曲线的波动性增加,从而导致夏普比率变小。

  • 胜率,平均盈亏
    策略的胜率和平均盈亏特征会有所不同。即使亏损交易的数量超过获胜交易的数量,也可以是一个非常有利可图的策略。动量策略往往具有这种模式,因为它们依赖于少量的“大行情”才能获利。均值回归策略往往具有相反的形象,其中更多的交易是“赢家”,但亏损的交易可能会非常严重。

  • 最大回撤
    回撤是权益曲线从高峰到谷底下降百分比的最大值。您需要确定在停止交易策略之前,您可以接受的亏损比例(以及在多长时间内)。这是一个非常私人的决定,因此必须仔细考虑。

  • 容量/流动性
    在个人交易者层面上,除非你是在交易一种流动性很差的工具,否则你不必对自己的策略容量非常在意。容量决定了进一步资本战略的可扩展性。随着资本配置策略的增加,许多较大的对冲基金都面临着严重的容量问题。

  • 参数
    某些策略(特别是在机器学习上发现的策略)需要大量的参数。策略需要的每一个额外参数都使它更容易受到最优化偏差(“过度拟合”)的影响。您应该尝试以尽可能少的参数作为策略的目标,或者确保您有足够的数据来测试您的策略。

  • 基准
    几乎所有策略(除非计算“绝对收益”)都是根据某些绩效基准来衡量的。基准通常是一个指数,描述了该策略交易的基础资产类别的大量样本。如果该策略交易大盘美国股票,那么标准普尔500指数将成为衡量您的策略的自然基准。您听到的术语“alpha”和“beta”,就适用于此类策略。

请注意,我们尚未讨论该策略的实际回报。为什么?回报实际上仅仅为我们提供了有关策略有效性的有限信息。它们不会让您深入了解杠杆率,波动性,基准或资本要求。因此,尽量少地仅根据回报来判断策略。在你关注回报时,请始终考虑策略的风险属性。

在这一阶段,您发现的许多策略将会被排除掉,因为它们不满足您的资本需求、杠杆约束、最大回撤的容忍度或波动性偏好。最终留下来的策略可以考虑进行回测。

最后

在以上的内容中,我们建立了一个甄别策略的路径,允许我们根据自己的个人标准排除某些策略。一旦识别出某些策略,就需要评估特定历史数据集的可用性、成本、复杂性和实现细节。您可能会发现,仅根据历史数据考虑而排除某些策略是有必要的。

考虑完有关历史数据的问题以后,是时候开始在回测引擎中实施我们的策略了。这将是其他文章的主题,因为它同样是一个大范围的讨论主题!

原文链接:《How to Identify Algorithmic Trading Strategies