量化策略开发步骤系列(2)回测和隐性成本

量化策略开发步骤系列(2)回测和隐性成本


这是量化交易系列文章的第二系列——量化策略开发步骤,第一系列请参考专栏: 量化交易系统。很多朋友反馈最近的文章代码太多,看不懂。

这一部分将实现零代码分享,尽可能简单地介绍量化策略开发的步骤,以便任何交易员或投资者都能理解。我们将讨论概念和结果,以文字和图表形式进行展示,而不是沉浸在代码中。

在本文中,将讨论量化交易的动机,以及启动量化交易项目的基础。在后续文章中,我将介绍隐藏成本、关键指标、回溯测试、前向测试、过度拟合等内容,这些内容与第一系列会有重合,但是分享的内容会充实、完整、连贯。

以下是该系列内容大纲:

免责声明:本文仅供参考,不构成任何交易建议。

感兴趣的关注下公众号,优先发布,接收后续的更新内容会更及时奥
公众号:码上助君

回测

测试假设是量化交易的核心。只有通过测试,交易者才能验证他们的假设是否成立以及在哪些条件下成立。他们能够衡量其策略的有效性,并根据测试结果开发新的想法。另一方面,这是量化交易项目中最复杂和最详细的部分。测试需要良好、干净的数据和编写良好的代码。如果测试算法无法模拟市场中的代理交易,则研究的结论毫无用处。它可能对好的策略返回坏结果,甚至更糟的是,对坏的策略返回好结果,这将使交易者蒙受损失。当然,没有算法能够重现代理在市场中的确切影响,因此在接受其结果之前,定义其局限性和假设非常重要。回测是在历史数据上测试策略。换句话说,我们将分析如果在过去几个月或几年中应用策略会对我们的投资组合产生什么影响,并将其与我们的市场基准进行比较。话虽如此,回测脚本可以像您想要的那样复杂,但基本思想是从简单开始。矢量化回测算法更容易编写,并且足以分析许多简单的策略。另一方面,迭代回测框架可以更代表真实交易,并允许对更复杂的策略进行回测,但很难开发。

在本文的第 1 部分中,我们陈述了我们的假设,并计算了三条移动平均线来标记价格趋势何时开始,这样我们就可以入场并从中获利。现在我开发了一种矢量化回测算法,该算法将根据每一步的移动平均值调整投资组合头寸。

让我们看看该策略在回测中的表现。每当移动平均线相互交叉时,算法就会买入或卖出,头寸可以通过下图中的黄线看到。多头头寸用 1 表示,空头头寸用 -1 表示,中立头寸用 0 表示。

我们可以看到,回测中有很多交易。价格上涨时,多头仓位会累积利润,价格下跌时,空头仓位会累积利润。无论价格如何变化,中立仓位都会保持投资组合的平衡。由于我们有回测中每小时的投资组合头寸和价格变化,因此我们可以计算利润和损失,即“PnL”,并将其绘制在图表中。

这太棒了。我们发现了一个策略,在 56 个月的时间内将我们的初始投资价值提高了 17 倍。计算出的复合年增长率为 0.85,这意味着我们每年的投资组合价值几乎翻一番。让我们把钱投入进去,享受生活吧。这是一个愚蠢的笑话,但是一旦你花了很多时间编码,就很容易忘记纪律,开始把钱押在未完成的事情上。毕竟,这个结果是个好消息,这意味着在完美的世界中,我们将远远超过市场,但我们还有很长的路要走,现实就在眼前等着我们。

隐性成本

隐性成本是交易操作中产生的损失,有时被忽视或错误建模。让我们来谈谈它们。

如果我们进行回测以便日后在市场上进行实际交易,则意味着我们需要一个经纪商平台来执行交易。经纪商喜欢什么?你说得对,佣金。交易费是回测一个想法时的一个重要组成部分,尤其是当我们谈论中高频策略时,我会告诉你原因。

来源:币安费率

从上图可以看出,币安对平台中每笔订单收取 0.1% 的费用。有了这些信息,每次在回测中进行交易时,我们都必须重新计算 PnL 结果,减去 0.1%。对于我们的研究,这就是结果图表的样子。

考虑到每笔订单的微小成本,看到超过一半的利润消失绝对令人沮丧。如果您正在考虑在不收取费用的平台上进行交易,请理解没有免费的东西,因此请平衡其他方面,例如流动性、稳健性和安全性。

但即使您不支付交易佣金,也有一项成本无法避免,那就是半价差成本。价差是指报价簿中最佳买入价和最佳卖出价之间的差额。我们的回测算法使用每小时收盘价来定义投资组合头寸,但实际上随后的交易将受报价簿中的价格影响,因此成本始终是半价差,即平均价格与下一个最佳报价之间的距离。

交易过程中您还会遇到的另一个隐性成本称为滑点。滑点是一种市场流动性效应,它会使交易平均价格偏离预期价格。例如,当一个市价订单需要订单簿中的几笔限价订单全部执行时,就会发生这种情况,这将使平均执行价格偏离订单簿的最佳价格。滑点的另一个例子是订单从您的界面下单时的价格转移到经纪商服务器中实际执行时的价格。

半价差和滑点成本的建模非常复杂,因为流动性会随时间变化,从而直接影响这些成本。我们的目标是中低频策略,因此为了简单起见,我们暂时不会在研究中考虑这些因素,如果需要,我们将来会再考虑它们。

免责声明:本文仅供参考,不构成任何交易建议。

感兴趣的关注下公众号,优先发布,接收后续的更新内容会更及时奥
公众号:码上助君

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值