一个让求职者非常感兴趣的行业是货币交易。 软件企业收到来自全球交易者的请求,要求提供一个可以快速有效地评估货币配对数据的交易平台。
交易平台是由某些金融机构(如银行和经纪公司)提供给交易者和投资者的软件程序。
交易平台本质上是让投资者和交易商进行交易并关注他们的账户。 其他帮助投资者做出投资决策的功能也经常包含在交易系统中。
实时报价、交互式图表、各种图形工具、实时新闻提要和高级研究是这些功能的几个例子。
平台也可以设计用于某些市场,例如股票、货币、期权或期货。
十多年来,自动交易系统,也称为 算法交易,占据了贸易行业的中心舞台。
“交易系统”,有时也称为“交易策略”,只不过是一组规则,这些规则应用于输入数据以提供买入/卖出进入和退出信号。 尽管创建交易策略可能看起来很简单,但事实并非如此!
量化交易策略背后的思想在算法交易领域被称为“Quants”,因为制定良好的交易策略需要广泛的量化研究。
自动交易系统的基本设计在过去十年中经历了重大修改,并且仍在不断变化。
算法交易行业已成为计算机和网络技术发展的温床,因为企业,尤其是那些使用高频交易系统的企业,必须进行技术创新,以便在算法交易领域竞争。
我们将讨论交易平台的 系统设计 在本文中。 交易平台的基本规范包括其架构、协议和创建您自己的自动交易系统的说明。
基本级别的自动交易软件要求
最好的解决方案是完全满足软件要求的解决方案。 自动交易软件的主要规格有:
- 可扩展性(系统处理不断增长的请求和工作量的能力);
- 多处理和卓越的性能;
- 安全和安保(它如何应对突然发生的违规或攻击并防止非法进入);
- 互操作性(系统与其他系统交互的能力);
- 可靠性(它如何解决故障并在出现问题的情况下运行)。
算法交易系统需要非常熟练的劳动力和细心的关注。 当有明确的非功能性需求时,更容易理解系统的功能性需求。 它们作为软件开发团队建立和定义产品质量的管理标准。
交易平台的功能特点包括
各种支付方式的成功支持、安全的云托管服务、强大的数据分析工具、风险管理、精准报价、合适的图表种类都是重要的功能需求。
以下是所有交易者密切关注的自动交易平台的一些基本属性:
显示统计数据的仪表板
为了对多个时区的货币汇率进行实时、同时检查,平台必须运行持续更新、操作来自多个图表的数据并操作价格表。
认证
快速但值得信赖的验证方法首先创建了安全平台和精英工程努力的形象。
交易软件可以支持从多个账户访问,类似于具有双重身份验证的开源交易平台(例如使用 SMS 或 Google Authenticator),但您也可以拥有一个通过电子邮件、电话号码或其他方式启用访问的系统仅适用于一小部分交易者的方法。
新闻联播
在做出任何财务决定之前,进行研究至关重要。 为防止因无知而导致错误,交易者可以从便捷的新闻、相关概览和对世界货币市场的洞察中受益,所有这些都可以在他们的交易平台上立即获得。
方便管理员和用户的功能
在这样的系统中,只需单击一下即可快速管理所有内容的能力至关重要。 这包括管理交易、待处理和提交的订单、个人账户、订单进度指示和客户请求。
这样可以在最短的时间内做出决策,并保证对重要信息的持续访问。
使用推送通知
用户预计交易平台将可全天候访问,并将被告知任何安全问题或最新更改。
当交易平台跟踪经济事件、价格波动、市场发展、技术指标等,并发送有关您的股票头寸的更新时,您可以通过可定制的通知随时了解情况。
兑现和付款
为了进行交易活动、跟踪现金流动以及使用信用卡、PayPal 或直接银行转账从您的个人账户中快速安全地取款,需要此功能。
当您的提款请求处理完毕后,您将收到通知。
自动交易系统的架构
在自动交易平台中执行决策逻辑的引擎,也称为“复杂事件处理”引擎,或 CEP,将位于服务器的应用程序内。
应用层本质上是一个 用户界面 用于观察并向 CEP 提供参数。 尽管应用程序层主要是一个视图,但一些风险检查(由于规模问题,现在已经成为资源密集型操作)可以卸载到应用程序层,特别是那些涉及用户输入的完整性的那些,例如胖手指错误。
一个有趣的情况是由自动交易系统中的可扩展性问题引起的。
让我们想象一个单一的市场数据事件正在由 100 个独立的逻辑处理(如前面的示例中所讨论的)。 对于 100 个逻辑单元中的大多数,假设为选项的希腊计算,可能存在必须执行的复杂计算的公共组件。
如果每个逻辑独立操作,每个单元将执行相同的精确计算,这会浪费处理资源。
复杂的冗余计算经常被划分为不同的计算引擎,这些引擎将希腊语作为输入提供给自动交易系统中的 CEP,以最大化计算冗余。
目前,订单管理器 (OM) 中的单独风险管理系统 (RMS) 在发布订单前不久在自动交易系统中执行剩余的风险评估。
由于只有一个 RMS 系统来管理所有逻辑单元/策略的风险,因此以前有 100 名独立的交易者控制他们的风险。 这是由于规模问题。
但是,某些风险评估可能是特定策略独有的,而其他风险评估可能需要在所有方法中执行。
因此,RMS 本身由全局 RMS (GRMS) 和策略级别 RMS (SLRMS) 组成。 SLRMS 和 GRMS 也可以通过用户界面 (UI) 看到。
现在让我们进一步了解服务器的组件。
市场适配器
交易所或任何其他市场数据提供商以其格式传输数据。 您的算法交易系统可能理解也可能不理解该语言。
Exchange 使您可以访问 API(应用程序设计接口),您可以使用该 API 来编程和构建您自己的适配器,从而将数据格式转换为您的系统可以理解的格式。
复杂事件处理引擎
您的方法的核心在于本节。 一旦你有了数据,你必须按照你的计划使用它,这需要进行不同的统计计算,与过去的数据进行比较,并做出将导致创建订单的决策。
此块是使用订单类型和订单金额构建的。 简单地说,复杂事件是传入事件的集合。 这些包括新闻,市场走势,股市趋势等。
快速完成复杂事件的计算操作称为复杂事件处理。 自动交易系统的操作可能涉及发现复杂的模式、创建相关性以及建立任何传入信息之间的因果关系和时间等联系。
订单路由系统
使用交易所给定的 API,订单以交易所可以理解的语言加密。 该交易所提供原生 API 和 FIX API,两种不同类型的 API。
本机 API 专为给定的交换而设计。 一些交易所使用一组称为 FIX(金融信息交换)协议的准则来促进和改善证券市场中的数据流。
在此之后的部分中,我们将详细解释 FIX。 如果一个经济体是开放的,人们可以通过自动交易系统向交易所或非交易所提交订单,ORP 应该能够处理多个方向的订单。
在这里,我们要强调的是,订单信号可以由人手动执行,也可以自动执行。 最后一部分是我们所说的“自动交易系统”。
订单管理器模块包括根据预先建立的逻辑执行买/卖订单的几种执行技术。
风险管理
由于自动交易系统无需人工干预即可运行,因此必须进行严格的风险分析以确保交易系统按预期运行。
量化公司风险管理不善或缺乏风险检查可能会导致重大的不可挽回的损失。 因此,任何自动交易系统都必须具有风险管理系统 (RMS)。
自动交易系统的协议开发
为了从单个服务器连接到多个目的地,这是由于架构能够扩展到每台服务器的许多策略而实现的,这是必需的。
因此,为了将订单传输到多个目的地并从众多交易所接收数据,订单管理器安装了许多适配器。
每个适配器的作用是充当系统内部通信协议和交换所理解的协议之间的解释器。 因此,许多交换将需要许多适配器。
由于每个交易所都有针对其提供的功能量身定制的协议,因此需要创建一个新适配器并将其插入架构中,以将新交易所添加到自动交易系统中。
已经开发了标准协议,以防止适配器插入这种令人头疼的问题。 FIX 协议是其中最著名的。
与新目的地连接的上市时间显着缩短,这不仅使连接移动中的多个目的地变得容易。
由于存在通用协议,自动交易系统可以轻松地与其他供应商进行交互以进行分析或市场数据馈送。
结果,市场变得非常有效,因为不再有与新地点或卖家整合的限制。
此外,模拟变得非常简单,因为使用 FIX 协议连接到模拟器所需要的只是发出订单并从真实市场接收数据。
模拟器本身可以在内部创建或从其他来源购买。 与实时市场数据类似,记录的数据集也可以通过独立于数据源的适配器进行回放。
新兴的低延迟架构
借助自动交易系统的基本要素,这些策略现在可以实时评估大量数据并做出快速的交易选择。
由于 FIX 等行业标准通信协议的发展,现在更容易构建算法交易台或自动交易系统,这增加了算法交易市场的竞争。
随着服务器获得更多内存和更快的时钟频率,重点转向降低决策延迟。
由于各种原因,随着时间的推移减少延迟是必要的,包括:
- 只有在低延迟环境中,该技术才有意义。
- 如果你在适者生存的游戏中不够快,竞争就会淘汰你
对于涉及单个目的地的任何高频方法,托管已成为自动交易系统中的绝对必要条件。
但多目的地系统需要精心准备。 在做出这样的选择之前,必须考虑变量,例如目的地订单响应时间的持续时间以及它与两个目的地之间 ping 持续时间的比较。
为了减少自动交易系统的总延迟,网络延迟通常是首先要解决的问题。 但是架构也可以通过许多其他方式进行改进。
网络处理延迟
网络处理延迟是路由器、交换机等引入的延迟。 数据包从 A 点移动到 B 点所需的跳数将是自动交易系统设计的下一个优化级别。
跃点被描述为数据包的源和目标之间的路径部分,它不通过物理设备(例如路由器或交换机)传输。
我们所说的微突发也会对网络操作的延迟产生影响。
可能会或可能不会影响平均数据传输率的数据传输速度的快速峰值称为微突发。
由于自动交易系统是基于规则的,它们都会对同一事件做出一致的反应。 由于多个参与系统同时发送命令,参与者和目的地之间可能会发生微突发的数据传输。
应用延迟
自动交易系统的应用程序延迟是处理应用程序所需时间的度量。 这取决于数据包的数量、专用于应用程序逻辑的处理、所用计算的复杂性、编程效率等。
随着处理器数量的增加,系统的应用程序延迟通常会减少。 对于更高的时钟频率,同样适用。
许多自动交易系统受益于将 CPU 内核分配给程序的关键部分,例如策略逻辑。 通过这样做,该过程不会增加因切换内核而导致的延迟。
与此类似,如果自动交易系统的方法在编程时考虑到缓存大小和内存访问的接近性,则会出现多次内存缓存命中,从而进一步减少延迟。
许多系统通过将代码优化到特定的处理器架构来做到这一点,这是通过使用非常低级的编程语言来完成的。
使用完全可编程的门阵列,一些企业甚至将复杂的计算刻录到硬件 (FPGA) 上。
测试
测试是识别软件应用程序缺陷的行为,不可能被低估,尤其是在金融科技领域。 由于存在财务损失的可能性,金融技术不能有缺陷。
质量保证工程师可以识别的缺陷越多,成品运行正常的可能性就越大。 根据开发交易平台的公司或客户的需求,测试过程的结构包括:
功能测试的基础是创建输入并分析结果。 使用假卡,运行金融应用测试用例。 这些卡旨在提高支付的可靠性、效率和准确性。
通过性能测试来确定系统的速度、可扩展性和稳定性。 评估应用程序的速度是为了了解它的响应速度,它的可扩展性表明它可以同时支持多少用户而不会崩溃。
此外,稳定性表明应用程序在各种负载下是否正常运行或是否存在任何潜在缺陷。
构建完全自动化的交易系统可能超出单个零售交易者的能力。 自动交易系统在市场上以订阅的形式提供,是希望研究交易算法技术的交易者的一种选择。
建立自己的自主交易系统
初学者交易者可以开发自己的算法交易技术并参与成功的市场交易。 作为一般大纲,下面列出的阶段可用于创建算法交易策略:
- 使用您的想象力或方法创建一个您认为在活跃市场中会成功的交易概念。 该概念可以来自您自己的市场观察、交易书籍、学术论文、交易博客、交易论坛或任何其他来源。
- 收集必要的信息——你需要历史数据来检验你的假设。 此信息可从付费数据供应商或 Google 财经等网站获得。
- 编写计划需要使用 Excel、Python 或 R 编程等工具。 一旦你有了数据,你就可以开始编写你的方法了。
- 在编码后根据历史数据测试您的交易概念称为回测您的方法。 回测需要输入优化、建立利润目标和止损单、头寸规模和其他相关任务。
- 纸上交易你的策略——在回测阶段之后,纸上交易你的策略是必要的。 这将包括使用市场模拟模拟器测试您的计划。 对于纸质交易方式,有经纪人提供算法交易平台。
- 如果您的方法在纸面交易之后是有利可图的,那么您可以在现实世界的情况下实施它。 您可以通过提供算法交易的可靠经纪人创建交易账户。
随着时间的推移,越来越多的交易所允许专业和零售交易者进行算法交易,越来越多的交易者正在使用算法交易。
结论
这是一篇关于自动交易系统架构的详尽文章,我们相信它对所涉及的组件以及架构开发人员为了设计强大的自动交易系统必须处理/克服的许多障碍提供了深刻的理解。
我已尽力为您提供自动交易系统的概述,但幕后还有很多事情要做。 我希望你发现这种材料是有益的,并好好利用它。
发表评论