概述
最近不少朋友问我是如何用电脑做金融交易的。这其实很复杂,并不是几句话能说明白的。根据听众的层次,这个回答可以是从最简单的比较敷衍的:“电脑和人脑差不多,用电脑模拟人脑就可以了。”……到比较复杂的:“我们设计了神经网络,用了强化学习的算法来训练金融市场数据。”……再到负责任的:“我们用数学模型解决金融数据里的fat-tail distribution的问题,用卷积神经网络来做交易模式识别和判断。”
在不讲数学、概率、统计、数据模型的情况下,简单讲讲金融算法交易吧。这里不会讲太多策略模型,而是只想说说机器交易下单里的常识。
-
金融算法交易的历史
1980年左右,纽约证券交易所就开始使用程序化交易。当S&P 500指数的期货价格和指数价格相差甚远时,套利交易员就会采用预先设定好的指令进行自动交易。随着市场走向完全电子化,人在交易市场上逐渐变得多余,算法交易员(algo trader)就诞生了。人并不会直接交易,而是写程序,让电脑去交易。交易软件有速度和延迟优势,可以对股市变化做出更快的反应。
到2009年,算法交易公司的交易量估计占美国股票交易量的75%。
到了2020年,保守估计,美国95%以上的交易订单是算法提交的。即便是金融小白,提交的买卖订单也多半是由券商处理之后用了算法下单的。
-
什么是算法交易?
在以前,投资研究是根据每天的新闻加上公司的财务分析来做的。而现在市场的波动性比以往任何时候都大,因此风险也随之增加。很多投资银行将风险评估从日间提高到了日内,利率、政府政策、季度业绩、地缘政治事件、甚至网络媒体等诸多因素都会在几秒钟之内对市场产生巨大影响。
计算机和通信技术的应用刺激了算法交易的兴起。算法交易是指利用计算机程序输入交易指令,由计算机程序决定交易订单的几乎每一个环节,包括时间、价格、数量等。投行的算法交易由非常复杂的机制构成,利用复杂的数学算法来快速推导出衍生品、股票、外汇和商品的买入和卖出指令,从有价值的数据中推导出投资逻辑。
算法交易系统的核心是评估潜在交易的风险回报率,然后触发买入或卖出操作。算法交易的主角是所谓quant,就是量化交易员,他们开发算法来对投资组合中资产价值的变化来做评估,一个投资组合的风险回报评估所涉及的计算量通常非常大,这些算法交易利用计算机程序来实现自动化交易,不需要人工干预。
算法交易已经被机构投资者和个人投资者所采用,并在实践中获利,区别是各个团队对市场的理解不一样,用的模型不一样,算法也会有区别。但本质都是建立在技术分析规则、统计方法和机器学习技术基础上研究最优的交易策略。
尽管利用大数据进行算法交易具有一定的挑战性,但把埋藏在数据中的价值挖掘出来并加以利用,就会有巨大的潜力抢占先机,获得巨大的利润。
- 大数据的应用
大数据可以分为非结构化数据和结构化数据。非结构化数据是指没有组织化的信息,没有预定义的数据模型。这些包括从社交媒体上收集的数据,帮助机构收集客户需求信息。结构化数据由已经在关系数据库和电子表格中组织和管理的信息组成。因此,必须有针对性的对各种形式的数据进行积极的管理,以便提供更好的商业决策信息。
大数据正在重新定义各行业的竞争格局。没有基于数据的战略分析的企业将面临失去市场竞争优势的风险。金融服务行业,已经广泛采用了大数据分析技术来提供更好的投资决策,并获得稳定的回报。面对日益激烈的竞争、监管限制和客户需求,各类金融机构也正在寻求新的方法来利用技术提高效率。根据行业的不同,企业可以利用大数据的某些方面来获得竞争优势。
算法交易与大数据结合就是要利用海量的历史数据与复杂的数学模型来实现投资组合收益的最大化。大数据的持续采用将不可避免地改变金融服务的格局。然而,除了其明显的好处之外,大数据获取海量数据的能力仍然面临着巨大的挑战。
-
大数据在算法交易中的应用
1. 技术分析:技术分析是以图表为主要工具,研究价格和价格变化。
2. 实时分析:自动化的过程使得计算机能够以人类交易员无法企及的速度和频率执行金融交易。
3. 机器学习:有了机器学习,给算法不断地输入数据,从过去的错误中学习,根据过去的结果建立一套逻辑,推导出新的结论,并根据成千上万个独特的因子来做金融分析。
传统的交易架构
在交易中,从事件发生到指令生成之间的延迟时间达到了毫秒和微秒的单位,这大大超出了人类能够控制的范围,传统的交易体系已经无法满足DMA(Direct Market Access)自动化交易的需求。由于延迟时间与人的反应时间相差甚远,交易指令也需要更加强大,每秒要能够处理更多的指令,同时,风险管理也需要以一种实时的、完全自动化的方式来处理指令。
举个例子,即使一个指令的反应时间是1毫秒(与我们今天看到的延迟相比,这已经是很长了),系统仍然必须在一秒钟内做出1000个交易决策。因此,这1000个交易决策中的每一个都需要在同一秒内经过风险管理,才能到达交易所。
另外,由于架构涉及到自动化逻辑,100个交易员可以被同一个自动化交易系统取代,这就增加了问题的难度。每一个逻辑单元都会产生1000个指令,而100个这样的单元每秒就有10万个指令。这就意味着决策和指令发送部分需要比市场数据接收和处理的速度快得多才能匹配数据的速率。
自动交易架构
首先是交易系统从交易所收集价格数据(如果要进行跨市套利,系统需要从多个交易所收集价格数据),从路透社、彭博社等新闻机构收集新闻数据,有些算法交易系统还可能会从网络上收集数据进行深度分析,如情感分析(sentiment analysis)等。
其次,在收集数据的同时,系统会对数据进行一些复杂的分析,以寻找预期盈利机会。有时,交易系统会进行模拟操作(backtest),看看可能会产生什么结果。
最后,系统决定买入/卖出/持有的操作、下单的数量和交易时间,然后产生一些交易信号。这些信号可以使用预定义的数据格式直接传输到交易所,交易指令通过交易所公开的API立即执行,无需人工干预。
有些投资者可能会想看一下算法交易系统产生了什么信号,这时可以手动启动交易操作,也可以直接忽略这些信号。人为干预是一把双刃剑,一方面它可以根据人的经验筛除掉一些不赚钱的信号,另一方面人是很容易犯错的,人不可能一成不变的进行交易,人会因为疲惫、过度悲观或者过度乐观而犯错,一个人的心情在很大程度上会影响交易。
如果算法交易设计得当,经过充分的验证,从数据分析,到决定交易操作,再到发起交易指令的执行,都是由系统来完成,这样的交易方式会更好。我们团队几年前开始构建一个我们叫做DMAT的系统,DMAT就是D数据M模型和策略A分析T交易。每一个环节都需要大量工作,不能出错,这样的系统是算法交易成功的基础,没有这个,有什么好的算法和策略都没用。
① 市场数据(数据输入D)
② 模型和分析 (策略MA)
③ 指令路由(执行和交易T)
-
如何利用大数据进行算法交易
专门的算法交易系统中通常有几个标准模块,包括交易策略、指令执行、现金管理和风险管理。交易策略是自动交易系统的核心,通过复杂的算法来分析数据(价格数据、公司财务数据和其它非标准数据如新闻、卫星图像、微博等新媒体),捕捉市场中的异常情况,并利用这些信息发现盈利模式,或发现竞争对手的策略。交易策略中使用了各种技术从数据中提取可操作的信息,包括规则、模糊规则、统计方法、时间序列分析、机器学习以及文本挖掘等。
算法交易是当前金融界的趋势,机器学习帮助计算机快速分析。大数据分析提供的实时反馈,为个人和交易公司提供了改善投资机会的潜力。
大数据在算法交易中的应用可以归纳为以下几点:
⦁ 技术分析与规则
⦁ 统计学分析
⦁ 基于人工智能、机器学习的算法交易
⦁ 基于文本挖掘技术的算法交易
⦁ 为稳定在线交易创造公平的竞争环境。
⦁ 评估结果和收益
获取大数据有助于降低线上交易可能的风险,并做出精确的预测。金融分析可以将影响趋势、定价和价格变化的原理联系起来。
⦁ 提供准确的预测
大数据与机器学习结合,有助于根据逻辑做出决策,而不是估计和猜测。另外,还可以对数据进行审查,开发应用程序定期更新信息,以便作出更准确的预测。
⦁ 策略回测
算法交易的特点之一就是能够进行回溯测试。交易者很难知道他们的交易系统中哪些部分有效,哪些部分是无效的,因为他们无法根据过去的数据来运行自己的系统。有了算法交易,就可以根据过去的数据来运行算法,看看它在过去是否有效。这个功能拥有巨大的优势,因为它允许用户在运行交易系统之前排查交易系统的缺陷。
-
算法交易的主要特点
⦁ 市场和公司数据的可用性
所有的交易算法都是根据实时市场数据和报价来设计的。一些程序还可以根据公司的基本面数据,如EPS和市盈率等进行定制。任何算法交易软件都应该有实时的市场数据以及公司数据。它应该作为系统的内置功能,或者能可以方便地整合其他数据来源。
⦁ 链接不同市场
每个交易所可能会以不同的格式提供数据输入,如TCP/IP、multicast或FIX,因此算法软件应该能够接收不同格式的数据输入。另一种选择是使用第三方数据供应商,如万得,彭博和路透社,它们会将来自不同交易所的市场数据进行汇总,并以统一的格式提供给终端客户。算法交易软件应该能够根据需要处理这些聚合的数据源。
⦁ 延迟
这是算法交易中最重要的因素。延迟是指数据点从一个应用程序到另一个应用程序的移动过程中引入的时间延迟。考虑下面的事件序列:一个报价从交易所到软件供应商的数据中心(DC)需要0.2秒,从数据中心到达你的交易屏幕需要0.3秒,交易软件处理接收到的这个报价需要0.1秒,分析和生成交易指令需要0.3秒,交易指令到达经纪人需要0.2秒,经纪人将指令传送到交易所需要0.3秒。
总时间=0.2+0.3+0.1+0.3+0.2+0.3=1.4秒。
在动态交易世界中,在这1.4秒的时间内,原始报价会出现多次变化,这个延迟可能会决定算法交易的成败。需要将这一延迟保持在尽可能低的水平,以确保能在没有时间差的情况下获得最新、最准确的信息。
目前延迟已经降到了微秒级别。一些常见的措施包括:省去中间的供应商,直接链接到交易所,更快地获得数据;通过改进交易算法,使分析和决策所需的时间小于0.1+0.3=0.4秒;或者省去中间的经纪人,直接将交易发送给交易所,节省0.2秒。
⦁ 可配置性和定制性
大多数算法交易软件都提供了标准的内置交易算法,例如基于50日移动平均线与200日平均线的交叉算法。交易者可能喜欢尝试将20日平均线换成100日平均线,但除非软件提供了这样的参数定制,否则交易者可能会受制于内置的固定功能。不管是买入还是建仓,交易软件应该具有高度的定制化和可配置性。
⦁ 编写自定义程序的功能
MATLAB、Python、C++、JAVA、Perl都是常用的编程语言。大多数第三方厂商出售的交易软件都提供了编写自定义程序的功能。这使得交易者可以尝试自己开发 并实现自己的交易想法。
⦁ 对历史数据的回溯测试功能
回溯测试模拟包括测试历史数据的交易策略。它基于过去的数据评估策略的实用性和盈利能力,证明它的成功(或失败或任何需要的变更)。这个功能要求在历史数据的可用性基础上进行回溯测试。
⦁ 集成交易接口
算法交易软件根据所需标准自动进行交易。该软件应具有与经纪人网络的必要连接以进行交易,或直接连接到交易所发送交易指令。
⦁ 即插即用的集成性
交易者可以同时使用彭博社终端进行价格分析、经纪人终端进行交易,以及使用程序进行趋势分析。根据个人需求,算法交易软件应该具有即插即用的集成性,在这些常用的交易工具中还要有可用的API。这样既能确保可扩展性,也能确保集成性。
-
算法交易的策略
简单描述一下常见策略,不做过多评论了。
⦁ 执行
如果一个巨大的主权财富基金如果想在苹果公司的股票上下了一亿的订单,那么按照所选择的价格,会有足够的卖家吗?而在订单成交之前,股价又会有什么变化呢?
这时候就可以用算法来拆分订单,并在交易日内进行策略性下单。在这种情况下,交易者并没有从这种策略中获利,但他更有可能获得更好的进场价格。
⦁ 套利
在一个市场上以较低的价格买入一只双重上市的股票,同时在另一个市场上以较高的价格卖出,就可以获得无风险利润。如果一个香奈儿包包在法国的价格是5000美元,在中国的价格是6000美元,你会怎么做?很明显的答案是:在法国买入,在中国卖出。通过在两个国家之间赚取差价实现无成本无风险的获利。同样的,如果发现期货市场和现货市场的价差,交易员也可以利用这一点从中获利。
⦁ 趋势跟踪
大量的投资大师声称自己拥有基于技术分析的最佳策略,依靠移动平均线、动量、动量、随机指标等指标来进行交易。一些自动交易系统利用这些指标来触发买入和卖出指令,交易基于理想趋势的出现而启动,通过算法来实现交易,简单直接,不需要涉及到预测分析的复杂性。使用50日和200日移动平均线是一种流行的趋势跟踪策略。
⦁ 指数基金再平衡策略
指数基金有规定的再平衡期(rebalance),使其持股量与各自的基准指数持股量相当。这为算法交易者创造了有利可图的机会,他们利用指数基金重新平衡前的预期交易,根据指数基金的股票数量提供20至80个基点的利润。这类交易通过算法交易系统启动,可以及时执行并获得最佳价格。
⦁ 基于数学模型的交易策略
经过验证的数学模型,如Delta中性交易策略,允许在期权和相关证券的组合上进行交易。(Delta中性是一种由多个头寸组成的正负Delta相抵消的投资组合策略,也就是将资产(通常是有价证券)的价格变化与其衍生品的价格变化进行比较,从而使相关资产的总Delta为零。)
⦁ 交易区间(均值回归)
均值回归策略是基于这样一个概念,即资产的高价和低价是一种暂时性的现象,会定期回归到均值(平均值)。识别和定义一个价格区间,并在此基础上实现一种算法,当资产价格突破或超出其定义的区间时,可以自动进行交易。
⦁ 成交量加权平均价格(VWAP)
VWAP策略即是一种拆分大额委托单,在约定时间段内分批执行,以期使得最终买入或卖出成交均价尽量接近该段时间内整个市场成交均价的算法交易策略。
⦁ 时间加权平均价格 (TWAP)
时间加权平均价格策略是将一个大额委托单拆分,并利用开始和结束时间之间的平均时间段,将动态确定的小块订单释放给市场。其目的是在开始和结束时间之间的平均价格附近执行订单,从而最大限度地减少对市场的影响。
⦁ 成交量百分比 (POV)
在交易订单全部完成之前,该算法根据定义的参与率和市场交易量继续发送部分订单。相关的 "阶梯策略 "按照用户定义的市场交易量的百分比发送订单,当股价达到用户定义的水平时,增加或减少该参与率。
自动化交易对市场的影响
⦁ 波动性
在运行超快的电脑硬件和交易软件的环境里进行散户交易,就像跳进了鲨鱼泛滥的海里。随着市场波动的加剧,基本面投资者入市的难度会不断加大。如果要执行一个买入指令,那么你可以想象一下:在提交订单这几秒钟的时间里,你的单已经被多个高频交易者推高,在你还没明白怎么回事的时候,你的交易对手已经获利退出了。
⦁ 闪崩
假设大家都看到了算法交易策略的好处,并都选择遵循这样的策略。如果因为某种原因,市场出现小幅下跌,触发卖出指令以立即削减损失,当所有交易者都用类似的策略时,价格就会立即暴跌,因为市场上没有买家。著名的崩盘例子如1987年的股市崩盘,2010年的闪崩等等。不过随着量化投资策略的增多,这种现象其实在减少,我没有做过严谨的计算,但是在市场恐慌崩盘的时候,机器往往比人理性,而不会让本来没有问题的市场陷入谷底。
⦁ 流动性
人们很容易认为随着计算机自动进行交易,流动性应该会增加。然而,当市场崩盘时,问题就来了。在重大的崩盘事件中,比如瑞士央行取消锚定汇率时,瑞士法郎根本没有流动性,导致价格迅速崩盘, 甚至导致了几家大型券商瞬间爆仓。
转自微信公众号:麦教授随笔
---------------------------------------------------------------------------------
推荐阅读:
1.一个量化策略师的自白(好文强烈推荐)
2.股票期货经典的量化交易策略都在这里了!(源码)
3.期货/股票数据大全查询(历史/实时/Tick/财务等)
4.史上最全的Python定量金融三方库汇总
5.干货 | 量化选股策略模型大全
6.量化金融经典理论、重要模型、发展简史大全
最后
以上就是文静咖啡为你收集整理的金融算法交易的全部内容,希望文章能够帮你解决金融算法交易所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复