算法交易系统的主要组成部分是研究工具、性能、易于开发、弹性和测试、关注点分离、熟悉度、维护、源代码可用性、许可成本和库的成熟度。 在决定编写自动交易系统的“最佳”工具之前,有必要定义要求:

  1. 交易频率和可能的交易量是多少?
  2. 系统是否需要 变更管理 或投资组合构建模块?
  3. 系统是否需要高性能回测器?

需要更多定制和复杂系统的交易者可能需要考虑使用 C#、Matlab 或 Python,但我认为对于其他 95% 的日内交易者来说,算法交易软件就足够了。

1 - 用 Python、Matlab、C# 计算

在这种情况下,编程技能是创建自动化算法的重要因素 交易策略. 熟悉 Python 或 R 等编程语言,将使您能够自己创建端到端数据存储、回测引擎和执行系统。 它允许您探索更高频率的策略,因为您将完全控制您的“技术堆栈”。 虽然这意味着您可以测试您的软件并消除错误,但这也意味着您将更多的时间花在基础设施编码上,而在实施策略上花费的时间更少,至少在您的算法交易生涯的早期是这样。

基本工作流程如下:

  • 算法交易策略将市场数据(历史或实时)输入计算机(回测或自动执行)程序。
  • 然后,该程序通过 API 向经纪人提交订单,并从经纪人接收订单状态通知。

MATLAB 和 Python 一直是我最喜欢的回测平台。 它具有用于开发和调试程序的非常全面且用户友好的界面,并且具有广泛的工具箱,几乎涵盖了您在交易策略开发中可能会遇到的所有神秘数学或计算技术。

将历史数据从雅虎财经导入 Python
图:雅虎财经历史数据导入Python
算法交易的过程
图:算法交易的过程

2 - 算法交易软件。 没有编码技能

第二种方法是算法工具,例如 Multicharts、StrategyQuant 或 R Trader Strategy Builder(免费且易于使用,基于云)等等。

算法交易仅由专业人士实施的时代已经结束。 当几乎所有系统和策略都可以使用 StrategyQuant、Multicharts 或 R Trader Strategy Builder 进行编码时,无需花费数小时学习 C#。 根据我们的经验,一些交易者/程序员往往打着技术优势的幌子,想要走很长的路来达到目标​​,相信我们,大多数高级编码对于一般的算法交易策略是不需要的。 使用 MetaTrader 创建您的 API 或自定义一切可能会非常浪费,尤其是当您陷入技术细节而不是创造价值时。

所有平台都有其优点和缺点,对我们来说,R Trader Strategy Builder 是一个基于内部专有的易于使用的模块,它使零售交易者能够设计、回测和部署算法交易策略,而无需任何编程语言知识。

R Trader 交易平台 有一种更简单的方法可以让您退出传统的点击式交易。 我们简单易用的界面专为有经验的交易者和新手设计,让您可以在几分钟内自动执行交易策略。 无需编码,无需大惊小怪——您很快就会启动并运行。

回测。 R Trader 策略生成器中的策略向导。
图:回测。 R Trader 策略生成器中的策略向导。

交易系统的测试和评估

研究涉及对历史数据的战略绩效评估。 根据先前的市场数据评估交易策略的过程称为回测。

算法交易与其他类型的投资类别不同,因为我们可以更可靠地根据过去的表现提供对未来表现的预期。 简单来说,回测是通过将您的特定策略算法暴露于历史价格数据流中来进行的,这会导致一组交易信号。 每笔交易都会有相关的损益。 在整个策略回测过程中这种盈亏的累积将导致总盈亏。

回测算法策略的关键原因是什么?

过滤

我们在初始研究阶段的目标是过滤掉任何不符合某些标准的策略。 回测为我们提供了另一种过滤机制,因为我们可以消除不满足我们性能需求的策略。

建模

回测使我们能够(安全地!)测试某些市场条件下的新模型。

样本内和样本外

在历史数据上测试一个想法时,最好保留一段历史数据用于测试目的。 用于测试和优化想法的初始历史数据称为样本内数据。 已保留的数据集称为样本外数据。 此设置是评估过程的重要组成部分,因为它提供了一种方法来测试尚未作为优化模型组件的数据的想法。 因此,这个想法不会受到样本外数据的任何影响,交易者将能够确定系统在新数据上的表现如何,即在现实交易中。

算法交易策略的优化

尽管策略优化充满偏见,但回溯测试允许我们通过修改与该策略相关的参数值并重新计算其性能来提高策略的性能。 过拟合(曲线拟合)在与数据挖掘相关的所有领域都是一个严重的问题,您必须小心使用正确的验证和测试集。 因此,可以实施多种方法,例如使用不同设置重新测试、蒙特卡罗模拟、Walk-Forward-Matrix、Walk-Forward-Optimization、多个样本外周期。

前向性能测试

模拟交易或纸面交易为交易者提供另一组样本外数据,用于评估系统。 前向性能测试是对实际交易的模拟,涉及在实时市场中遵循系统逻辑。 前向性能测试的一个重要方面是准确地遵循系统的逻辑; 否则,即使不是不可能,也很难准确评估过程的这一步。 许多经纪商以及 RoboMarkets 提供模拟交易账户,可以在其中进行交易并计算相应的损益。 使用模拟交易账户可以创建一个半真实的环境,在此环境中练习交易并进一步评估系统。

图:回测。 Python 中的图表。
图:回测。 Python 中的图表。
回测。 R Trader Strategy Builder中的历史交易。
图:回测。 R Trader Strategy Builder中的历史交易。

最后但并非最不重要的一点是,我想讨论在这个领域有帮助的工具。

鑫安工具

研究和自动交易软件

Excel, R Trader 策略生成器 (https://rtrader.umstel.com - 免费软件)、StrategyQuant(许可费)、MultiCharts(许可费)、TradeStation(许可费)、Wealth-lab(许可费)。

代码

MATLAB、Python、R、C#

数据

  1. 社交情绪数据(来自 Twitter 和其他社交媒体,请参阅 ISentium、TickerTags)
  2. 众包数据(见估计)
  3. 行为数据(见卡博特研究)
  4. 卫星和航拍图像(见轨道洞察)
  5. 消费者行为数据(见品牌忠诚度)
  6. 非传统在线资源(见 Knowsis)
  7. OTAS(技术数据)

其他供应商

TIM Group、Discern、Essentia、Kensho、RavenPack、SocialMediaAnalytics、Ayasdi、TheySay Analytics、Quid、Rage Frameworks、Dataminr。

书籍(英文)

  1. 量化交易:如何建立自己的算法交易业务 - Ernest Chan
  2. 算法交易:制胜策略及其原理 - Ernest Chan
  3. 机器交易:部署计算机算法来征服市场 - Ernest Chan
  4. 算法交易和 DMA:直接访问交易策略简介 - Barry Johnson
  5. 交易和交易所:从业者的市场微观结构 - 拉里哈里斯

1.arXiv http://arxiv.org/archive/q-fin
2. SSRN https://www.ssrn.com/en/
3. 投资策略杂志 https://www.risk.net/journal-of-investment-strategies
4. 计算金融学报 https://www.risk.net/journal-of-computational-finance
5. 数理金融 https://onlinelibrary.wiley.com/journal/14679965

总结

正如我们所见,创建算法交易策略有不同的方法。 您可以选择适合您的知识水平和机会的任何内容。 此外,回测和进一步开发,之后只有我们才能切换到实践。

如果您有任何问题,我很乐意在下面的评论中回答。


材料是由

R 博客的主编。