如何在几分钟内不损失所有资金或算法交易中的风险管理




介绍


现在,无论是在世界范围内还是在股票交易中,情况都不是那么简单。许多交易员突然成为百万富翁,而其他交易员立即失去了所有金钱。高市场波动性为算法交易者提供了良好的获利机会。为了安然入睡,不要做梦,黑天鹅需要保护自己的账户免受愤怒的机器人和算法交易的其他麻烦。

交易员正在睡觉-交易正在进行! ”-一些交易员喜欢说。但是现实并非如此简单。您认为算法交易从哪里开始?从连接到交换还是编写算法?对于专业参与者而言,交易始于风险管理的发展

可以相信算法交易比经典交易有效得多。因为机器人没有情感解决方案,所以他们可以24/7全天候工作,他们确切地知道何时购买和何时出售,它们以普通人无法获得的速度进行交易。但是,凭借自身的超能力,他们创造了更多的风险。
例如,在一个历史悠久的案例中,  “汽车复仇”造成了4.6亿美元的损失,或者机器人损坏导致了430万美元的损失莫斯科交易所的失败。导致交易员的止损和损失等。一个这样的事件就足够了,并且交易账户可能会受到不可挽回的损害。如果交易是边际的,当错误的价格增加几倍时,尤其如此。

交易者无法知道自己会赚多少,但他必须确切地知道自己会损失多少。实际上,任何交易都归结为风险控制,而利润是遵守风险的奖励。

在本文中,我将尽可能地揭示与实际交易中执行交易算法相关的潜在风险以及防止交易系统崩溃的措施。同时,我将不涉及资金管理,交易组合的多元化以及交易策略的逻辑,这是一个不同的故事。

1.建筑解决方案


在进行风险分类之前,我将简要介绍算法交易的交易部分中的标准解决方案。

从需求到应用程序的执行速度,交易机器人的构建方式各不相同。如果此HFT(例如套利做市)对延迟敏感,则他们会尝试最小化从算法到交易所的应用路径,而延迟帐户将花费微秒。通常,此类算法具有特定的体系结构,并针对特定的策略进行了优化。在这种情况下,风险管理将直接集成到策略中。

基本上,交易策略的执行时间从几分钟到几小时不等,算法执行的时间越短,控制风险就越容易。然而,随着交易频率的增加,佣金成本增加,这降低了算法的获利能力。因此,交易策略试图在风险和利润之间找到平衡。

交易算法很少一次交易。通常,这些是整个策略系列,收集在投资组合中以分散和稳定股票曲线。同时,用于交易算法的交易所数据可以来自各种来源,并且可以将应用程序发送到各种交易所。交易系统的核心是引擎在算法和交换之间路由和优化数据(请参见图1)。通常,还有其他引擎,例如用于处理历史数据或回测的引擎,但是为了简化起见,我不显示它们。


图。1。交易服务器的架构方案。

2.风险的一般分类


  • 2.1。基础设施风险
  • 2.2。连接交易所/经纪人的问题
  • 2.3。交易策略逻辑中的问题

2.1。基础设施风险


此类中的主要问题与交易服务器相关。对于算法交易,即使是功能非常强大的PC也由于许多原因而不适合:设备不可靠,互联网连接不稳定,电源不足等。

主要风险:

  • 服务器性能全部或部分损失;
  • 紧急重启操作系统;
  • 物理服务器故障。

通常,解决这些问题的质量取决于您的预算和交易算法的要求。

2.1.1。解决方案选项


  • 交换主机代管。理想且最昂贵的选择。它通常用于利润丰厚的HFT算法或大型公司(例如银行)中,这些基础结构可用于其他交易解决方案。
  • 虚拟/专用服务器租赁。如果您不是大型对冲基金或私人交易商,则可以使用此选项。一个简单,易于定制和可扩展的解决方案。您总是可以找到与价格/质量参数匹配的提供商。
  • . . , / , .

2.1.2.


  • / . TIER III uptime 99,98% . .
  • . , . .
  • 与常规交易模式相比,动力储备至少为40-50%(CPU,RAM,SSD)。通常,在市场变化剧烈的情况下,数据流中的负载会增加,并且算法开始主动执行交易。在这一关键时刻,服务器上不应出现任何刹车。

2.2。连接性问题


在交易所和经纪人上,技术故障有时会发生。例如,在莫斯科交易所Sberbank交易平台的操作崩溃“工作不足”交易所关闭了午餐莫斯科交易所由于失败而暂停了交易等。

主要风险:

  • 连接中断;
  • 高延迟;
  • 数据不正确;
  • 部分数据丢失。


2.2.1。连接中断


连接中断信息可以通过几种方式获得:

  • 连接器事件API- 已连接,已断开连接
  • 使用API中通常存在的连接验证算法(例如Heartbeat)
  • 间接地。在数据流中缺少数据。

您可以配置连接,以便如果连接丢失/断开,交易所将撤回有效订单或平仓。但是,您需要谨慎使用此功能,因为在短暂休息的情况下,意外关闭仓位很可能导致损失和伤害大于帮助。

而且,经常发生这样的情况:当发生故障时,它会完全崩溃,并且警告中断的第一个选项不起作用,而只能间接地找出问题出在哪里。

2.2.2。资料问题


首先,请考虑库存数据的主要类型。根据连接器和交换器的类型,这些数据相差不大,但是正负基本相同。

传入更改:

  • 更换眼镜/订单
  • 交易
  • 应用领域
  • 订单项
  • 平衡

传出数据:

  • 注册申请

传入和传出数据可以来自一个或来自不同的连接。碰巧其中一个线程可以“安静地”掉线,而其他线程则可以在正常模式下工作。即使数据来自同一来源,您仍然需要单独监视每个流。

数据问题通常通过实现诸如WatchDog的跟踪算法来解决所有线程都必须通过这些模块。

看门狗追踪:

  • 流中数据更新的频率;
  • 数据和当前时间的时间戳延迟;
  • 数据的可用性决定了与交换机之间通信的存在。

如果在一定时间内没有数据来自连接器或延迟超过最大允许值,那么将生成相应的事件并针对进一步的动作做出决策。

为了正确计算延迟,必须实现一个独立的系统来精确同步系统时间。例如,使用NTP服务器

2.2.3。解决方案选项


如果出现上述问题,系统应立即将数据流与算法断开连接,并尝试以给定的频率和尝试次数重新连接。必须记住,有完全合理的,以前无法预料的中断原因。例如,由于国定假日交易时段缩短或API意外更新以及其他不合理的情况。在每个特定的连接中,必须分别进行重新连接。否则,交换机可能会将过多的重新连接尝试视为垃圾邮件攻击,并导致帐户被阻止。

重新连接并下载丢失的数据后,有必要通知交易算法有关工作的恢复并将丢失的数据传送给他们。算法应分析已发生的更改并决定下一步要做什么。保持在当前位置,进行更改或完全关闭。此逻辑应在每种交易策略中实施。

恢复工作的顺序:

  • 重新连接;
  • 上传丢失的数据;
  • 通知通信恢复算法;
  • 将丢失的数据传输到算法;
  • 实时切换流;
  • 算法的交易逻辑应规范其仓位并重新下单。

同样,如果数据有问题或部分功能丧失,则必须首先完全恢复连接并规范化数据流。以部分工作能力进行交易是不可能的,很明显这不会以任何好的结果结束。

2.3。交易策略逻辑中的问题


在编程的交易策略逻辑中,最危险,最阴险和不可预测的问题潜伏着。无论交易算法多么周到,都不可能预见所有情况。各种因素及其组合会导致意外行为。而且,某些错误可能会潜伏数年,并在最意外的时刻“出现”。

2.3.1。问题分类


  1. 应用程序中的错误:
    • 负价格/数量;
    • 反向;
    • 类型错误等
  2. API错误:
    • 并非所有字段都填写在事务中;
    • 使用过时的API版本;
    • ..
  3. :
    • ;
    • ;
    • ;
    • « »;
    • .
  4. :
    • ;
    • ;
    • .
  5. :
    • ;
    • .
  6. :
    • ;
    • ;
    • ;
    • .
  7. :
    • ;
    • ;
    • 大量不会导致交易的应用程序。
  8. 交易策略程序代码中缺乏异常处理

但是,某些错误可能会导致其他错误。例如,由于严重错误而停止算法将导致违反位置,从而违反限制。

2.3.2。解决方案选项


解决这些问题的方法归结为控制应用程序和交易策略的限制(请参阅第3节)。此外,程序代码中的任何异常都应导致有问题的算法立即停止运行,并撤消其所有活动应用程序。

3.监控交易策略的应用和限制


也许这些是管理交易系统风险的最重要方法。任何错误最终都会导致头寸,申请和现金出现偏差。任务是尽快注意到这些更改并立即采取措施。

支票可以分为两种类型:
3.1。应用程序的基本验证
3.2。极限分析与控制

3.1。基本应用程序验证


所有传出的请求都应进行检查:

  • 严重错误;
  • API数据的正确性和充分性;
  • 符合交易工具的规格;
  • 遵守招标法规等

这些检查是在将应用程序发送到交换机之前进行的。发现错误越早,消除错误的后果就越容易。不要等待连接器发出明显的错误。最好先解决问题再解决。另外,发送错误的交易会引起交易所的各种制裁。

3.2。限位控制


要控制限制,请检查以下内容:
3.2.1。提出要求之前,改变余额和头寸
3.2.2。当前余额和头寸的变化
3.2.3。应用程序的价格和数量
3.2.4。应用行为

3.2.1。提交申请前分析余额和头寸的变化


在提交注册申请之前,检查在执行申请的情况下余额和头寸的潜在变化。如果此算法的限制超出限制,则不发送订单,并且将错误消息发送到交易策略。

3.2.2。分析当前余额和头寸的变化


在以下时间段内对交易量和工具头寸的变化形成限制:15秒,30秒,1分钟,5分钟,15分钟,1小时,1天。持续监控一段时间内的变化将使您看到行为上的偏差并停止交易,直到偏差变得严重为止。

碰巧算法的问题不会立即出现。他可以开始缓慢地“合并”,并且在短时间内没有超出限制。您可以在早晨醒来,由于“破损”算法不多,因此损失明显。我们需要吗?我们不需要它。

3.2.3。价格和数量分析


在发送注册申请之前,请检查超过最大和最小体积的限制。不幸的是,没有人取消公式和计算中的算术错误。

如果可能的话,检查投标价格与平均市场价格的偏差很重要。为此,请从其他来源检查类似交易工具的价格。如果在非流通性交易所进行交易或观察到交易工具异常高的波动性,则这些检查尤为重要。

如果更改超过指定的限制,则在将应用程序发送到交换机之前,将拒绝该应用程序。

3.2.4。应用行为分析


在这里检查:

  • 不导致交易的申请数量;
  • 活动应用程序的数量;
  • 施加频率为1秒,3秒,5秒,15秒,30秒,1分钟。

交易所对有效订单的数量和提交频率有自己的限制,如果它们超过了交易的权限,则可以被暂停。并且可以仅手动进行位置标准化。

最危险和最危险的情况之一是,当交易机器人开始不受控制地进行买卖时,每秒发出大量订单。在机器人抬起较大的位置或完成佣金之前,此保护功能应起作用。至少,她必须给予额外的时间,以便其他保护机制可以起作用。

这些检查在以下几个级别进行:

1. 在连接器级别。当暴露频率接近最大值时,连接器保护会“减慢”应用程序。这是必要的,以免失去对交换机的访问权限。这些措施是极端的,因此预先正确计算连接器上的负载非常重要。

2. 在交易策略层面。如果该算法超出了其提交申请频率的限制,则将由于错误而被强制停止。在这种情况下,所有先前提交的活动应用程序都将被删除。

4.将风险管理集成到架构解决方案中


风险管理的集成可以分为两个主要部分(见图2):

  • PRE-TRADE包括订单的基本控制,订单价格和数量的控制,订单提交前余额和头寸变化的控制,还分析了订单的行为。
  • POST-TRADE包括检查连接中断和市场数据的正确性,对余额和当前头寸的变化进行持续监控,并在此分析订单行为。



图。2.在交易服务器的体系结构解决方案中集成风险管理方案。

5.记录和报告


不要忘记,非标准情况也会发生,今天,即使在高度自动化的系统中,如果没有人为干预也无法避免。因此,如果出现问题,您必须立即通过邮件,短信,电报或任何其他便捷方式自动发送消息,以通知所有相关方(交易员,开发人员,经理)。理想情况下,应该始终有一个值班交易员来监视交易系统的性能。

发生故障时,您需要快速找到问题,加以解决,然后使交易系统恢复工作。为此,必须维护详细的交易和系统日志,尤其是在具有大量应用程序的高负载系统中。如果未找到故障原因,则下一个故障可能是致命的。通常,交换不会宽恕错误,而是会立即惩罚卢布。

结论


通常,他们已经在最后一轮开始将风险管理“加快”到交易算法中,这时已经发生了几起事件,并且已经意识到如果没有它,人们将无能为力。

就像安全措施写在血液中一样,算法交易中的风险管理也写在保证金通知和合并账户中。

但是,如果您正确地建立了交易系统并设置了风险管理,则可以安然入睡,并确保“ Algotrader处于睡眠状态-交易正在进行!

大家交易愉快

All Articles