股资源-股票学习站-学炒股-股票课程-炒股教程-分析选股指标-入门基础知识

 找回密码
 注册昵称

QQ登录

只需一步,快速开始

搜索
发新帖回复
上一主题 下一主题

我是高频交易工程师:知乎董可人自选集 (知乎「盐」系列)

 
    [-----复制链接-----]

22万

主题

22万

帖子

14

精华

积分
10891
楼主
2020-4-15 03:49:38
【资料名称】:我是高频交易工程师:知乎董可人自选集 (知乎「盐」系列)
【资料描述】:

  对HFT(高频交易)比较感兴趣,这两天把董大牛的著作拜读了下,记点有用的信息,便于以后回顾。
  本书的组织结构如下:
  第一章描述行业背景,从宏观角度讲述高频交易是做什么的,以及它的业务模式和商业逻辑,还包括一些理论研究方面的进展,希望让那些对高频交易还一无所知的朋友增加一点了解;
  第二章从技术层面讲解高频交易系统的设计、架构和实现,从软硬件层面展示了电子时代工程师们怎样打造交易系统 ;
  第三章探讨交易数据建模和交易策略研发,给出了一个有实战价值的高频交易策略实例,也推荐了一些针对此类工作的工具,以供大家参考使用;
  第四章对此行业的从业者做了简单的速写,希望让大家了解到从事这项工作有哪些技能上的要求,入行要做哪些准备,等等;
  第五章给出了一些参考书目和学术文献,供有兴趣的读者进一步深入了解。
  ————————————————————————————————————————
  第一章
  高频交易的定义:
  使用超高速的复杂计算机系统下单
  使用 co-location 和直连交易所的数据通道
  平均每次持仓时间极短
  大量发送和取消委托订单
  收盘时基本保持平仓(不持仓过夜)
  高频交易主要包括这几种x类型:
  被动做市(Passive Market Making)。这种策略是在交易所挂限价单进行双边交易以提供流动性。所谓双边交易,是指做市商手中持有一定存货,然后同时进行买和卖两方交易。这种策略的收入包括买卖价差(spread)和交易所提供的返佣(rebate)两部分。
  套利(Arbitrage)。这个策略应该是大家比较熟悉的,就是看两种高相关性的产品之间的价差。比如说一个股指 ETF 的价格,理论上应该等于组成该 ETF 的股票价格的加权平均(具体计算方式按照此 ETF 定义来看)。但因为种种原因,有时我们会发现市场上这两种价格并不一致,此时即产生套利机会,可以买入价低一方,同时卖出价高一方,以赚取其间的差价。随着市场流动性的增强,这种机会发生的次数和规模会越来越小,并且机会往往转瞬即逝,因此往往需要借助高频交易的技术来加大搜寻的规模和把握交易时机。
  结构化(Structural,此处翻译或许不当)。这是最恶的,也是公众眼中最能引人对高频交易诟病的策略。简单说就是利用技术手段,比如高速连接和下单,来探测其他较慢的市场参与者的交易意图并且抢在他们之前进行交易,将利润建立在他人的损失上。这种策略到底有多少人在用,报告中没有指明。我个人的看法是这种短视的策略或许能帮你赚一点快钱,但从任何角度看都是一种饮鸩止渴的行为。高频交易本身有远超于此的价值,实在不值得为此浪费精力。
  趋势(Directional)。这个策略本身在中低频也存在。简而言之,就是预测一定时间内的价格走势,顺势而为。这种策略在高频的玩法不同之处在于,高频交易的主要数据源是比 tick 更低一级的 order book events,所以可以在委托单的粒度上进行分析和预测,来抓大单的动向。此外,报告中还提到一种操作手法,和中低频类似的,所谓「拉高出货」,即自己先下点单快速推高或拉低价格,人为制造一种趋势,来吸引其他人入场。关于这些,相信有中低频或日内经验的高手们更清楚该如何做,我就不多说了。
  对很多以做市为目的的高频交易商来说,赚取买卖价差虽然是件美好的事,但并不是绝对需要的盈利手段。
  那么,利润到底是如何产生的呢?答案是来自交易所。
  交易所对做市商提供的报酬可以包括两个部分。第一是每笔交易的返佣(rebate)。返佣的数值一般很小(远远小于 tick size :最小报价单位,比如若设 tick size 为一分,那么报价只能取 100.1 或 100.2),但如果交易笔数巨大,积少成多,便可以成为不菲的收入。通过赚取返佣,做市商只需要保证每笔交易不赔即可,并非一定要追求低买高卖,反而是要保证自己的委托单能尽可能多地被执行,以争取更大的流量。为了做到这一点,下单和改单的速度是个关键,这也是为什么这一行如今被以速度见长的高频交易商把持的原因。
  第二是固定的佣金。这是比返佣更吸引人的部分。这种情况下,做市商只需保证每月或每天参与一定规模的交易,就可以再额外从交易所处获取一笔不小的收入。这种模式的好处在于,做市商不仅不用追求买卖价差,甚至连流量也不需争抢,只要完成限定的额度即可,难度大大降低。
  分析以上两种模式,有些朋友也许会想到一个聪明的点子:既然我只需参与交易就可得到收入,那我可不可以自己下单自己填,左手卖右手买,无本万利呢?很遗憾的是,自己和自己交易是绝对的违规操作,不可以这样做。因此,做市商面临的问题,是如何在不赔钱的情况下尽量争取更多的交易机会。同时,这种交易模式和通常大家口口相传的那种交易相比,有两点显著的不同:
  a. 并非以「低买高卖」为主要盈利手段,因此收益率、夏普率等通常交易策略的评判标准对此并不适用。
  b. 一般的交易策略以盈利为目的,并不追求下单数量和次数。做市策略,交易本身即是目的,交易的量越多,收益越多。
  高频做市策略的动机和驱动力:在市场碎片化的大背景下,各家交易所为提高自身竞争力从而吸引更多交易量,必须聘请高水平做市商入驻,帮助改进流动性质量。
  高频做市商所做交易的行为本质:这种交易只求参与其中,作为买卖双方的中转即可,并不需要追求买卖价差的绝对数值。极端情况下,参与程度(Participation Rate)本身即为所出售的产品,而具体的某笔交易并不必以盈利为目的。
  ————————————————————————————————————————
  第二章
  HFT硬件架构:
  网络架设上光纤肯定是最差的方案。国外几个主要的交易所(同一洲内)之间基本上都有微波(microwave/milliwave)线路,比光纤的延迟要低很多,延迟敏感的应用一定要选择这种线路。这个差距首先受制于光在光纤中的传播速度只有在空气中的 2/3 左右。另外,在大城市建筑密集地区(也正是一般交易所的所在地),光纤的复杂布线会进一步增大延迟,差距可能增至 2 到 3 倍。
  网络线路确定以后,数据就送到了 HFT 主机。这时候需要决定网卡的方案。专用的网卡除了自身硬件的设计外,一定需要的是切换掉系统自带的 kernel space TCP/IP stack,避免昂贵的 context switching。网络栈上的 I/O 延迟,收包、发包加起来做到 2~3 微秒是可以的。这个层面上 FPGA 是很有应用价值的,因为可以做一些额外的逻辑处理,进一步解放 CPU。
  网络部分的问题解决以后,最后就是核心的业务逻辑的处理。这部分也许会用到一些数学建模,但是没有什么神话,并非什么菲尔兹奖得主才能搞的东西(那些人的用武之地更多是去投行那边做衍生品,那才是真正需要高等数学的东西)。很多时候核心的还是延迟,这个在计算机内部分两个部分:一是 Core 的使用率,比如 IRQ Balance,cpuisol,Affinity 等等,主要是要尽可能地独占 Core;另一个是 Cache Invalidation,从 L1/L2/L3 cache 到 TLB,Page Fault,Memory Locality 之类的,都要仔细考虑——这个更多考验的是对体系结构的理解和程序设计的功力,跟语言的关系不大。
  具体选择哪种语言,首先是取决于公司的技术积累和市场上的技术人员供给。函数式语言(Erlang/OCaml 等)的好处是语言表达能力强、开发速度快、逻辑不容易出错,但相对的对机器底层的控制差一些,有时候他们的编译器或运行时干了什么不太容易搞清楚,所以在性能上的调优会比在 C++之类投入更多一点。这里面有一个取舍问题,要根据公司情况来具体分析。
  业务逻辑部分其实相当简单。做这种高速交易肯定不会有什么凸优化、解微分方程之类复杂的运算,核心的部分一般就是加加减减,比比大小什么的。业务逻辑本身的处理完全可以做到纳秒级;如果看到有人宣称他们的延迟是纳秒级,一般是指这种。
  操作系统同样是一个不需要神话的东西,普通的 Linux 已经有足够的空间用来做性能优化。简单地说,一个企业级的 Linux(如 Redhat)加上通用的架构(Intel 主流处理器)足以做到市面上已知的最低延迟,不必幻想有什么奇妙的软硬件可以做出超出想象的事情。
  ————————————————————————————————————————
  第三章
  Order Book:
  交易所在内部的 Order Book 上记录所有买家和卖家的报价,比如这样:
  Bid 表示买家,Offer 表示卖家,这张报价单表示买卖双方发出的所有报价单(Limit Order)。这张表才是高频交易最关心的信息。任意时刻,买家的出价总是低于卖家(比如这里的 98 对 101)。所以报价虽然一直在变化,但是只有报价是不会有任何成交的。
  什么时候会产生交易呢?有两种情况。第一是任一方发出市价单(Market Order)。比如一个买家发出一张单量为 10 的市价单,就可以买到卖方在 101 价格上挂的 10 份,这个交易成功之后,Order Book 会变成这样
  第二是发出一个价格等于对方最优报价的限价单,也会产生和上述情况相同的结果。
  需要强调的是,虽然真正的 Order Book 只存在于交易所内部,所有交易都在交易所内完成,但是交易所会把每笔报价和市价单都转发给所有人,因此所有的买家和卖家都可以自己维护一个同样的数据结构,相当于交易所 Order Book 的镜像。通过跟踪分析自己手里这份的镜像变化,来制定交易策略,是高频交易算法的核心思想。
  HFT著名算法:高频交易都有哪些著名的算法? - 量化交易 - 知乎
  工具:
  a. 使用内存数据库(如 KDB),百万条数据导入内存数据库也不过 100MB 左右的内存占用,毫无压力。在此基础上使用系统支持的语言(比如 KDB 中的 Q)进行算法开发。这是 Quant 界比较常见的一种方案,应该有成熟社区,容易找到帮助。如果你所在的机构正好有这方面的技术积累,就更方便了。但是缺点在于,数学计算比较受限于系统,如果你用到一些系统没提供的算法,开发成本比较大。KDB 的语言本身需要陡峭的学习曲线,甚至很多方面可能非常晦涩,比如一个 ! 就可以根据上下文不同表示多种不同的操作符,从取模到生成列表,对于新手来说入门可能有些困难。
  b. Python 神器:Python 是非常适合做 Quant 类工作的语言,本身就是科学计算方面的统治级语言,现在加入了 IPython,Pandas 等重量级神器,为 Quant 类工作量身定做,而且仍在飞速发展中,以后会越来越重要。IPython 提供一整套的类似 Matlab 的计算环境,包含了丰富的数学函数和画图工具,示例可参见 Jupyter Notebook Viewer。Pandas 则是专门针对金融类计算设计开发的计算库(Python Data Analysis Library),底层使用 HDF5 格式(一种高效的数据存储格式,对于金融时间序列来说远远优于 CSV),上层提供很多强大的内建函数(统计类的 mean,stddev,类 SQL 的 group by,order by,等等),而且本身工作在 Python 环境里,可以直接使用 Python 做编程方面的工作。更值得一提的是 HDF5 也是 Matlab 支持的存储格式,所以有必要的时候可以无缝迁移到 Matlab(如果正好有某个算法是 Matlab 提供而 Python 没有的)。需要强调的是 Python 在科学计算方面有巨大的优势,是统治级的语言,像并行计算,GPU 之类都有很好的支持,不用担心要自己搭框架。
  关于其他语言, 我自己很喜欢一个比较小众的组合:Mathematica+Java/Scala。 Mathematica 的优点在于,它本身提供函数式的编程语言,表达能力非常强大。比如 Map/Reduce 是标配,很多时候不需要去做烦人的 for 循环或下标控制,排版经常可以直接照数学公式原样输入,即直观又不容易写错;代码和输出混排的排版方式使得建模时的演算和推理过程非常流畅,甚至还可以直接生成动画,对于找直观理解非常有帮助(这几点分别被 IPython 和 R 偷师了一部分)。Mathematica 的缺点在于对金融类的时间序列数据没有很好的内建支持,使得存储和计算都会比较低效,因此需要用内嵌 Java 的方式来补足,对于数据格式或性能敏感的操作都可以用 Java/Scala 实现。在我心目中,这个组合无出其右,不论是快速建模还是建模转生产,都远远领先于其他选择。但 Mathematica 的商用授权很贵,如果公司本身不认可的话很难得到支持,这是最致命的缺陷。另外随着 Python 系的逐渐成熟,领先优势在逐渐缩小,长远来看 Python 的势头更好一些。
  ————————————————————————————————————————
  第四章
  策略员加入基金公司工作至少有三个动机:
  · 缺钱。这个很容易理解。或许你有不错的策略,但可能根本就没有足够的资金进行操作,那么公司首先可以帮你解决找钱的问题。最简单的做法是直接在公司管理的资金里划出一部分由你操作。
  · 即使你有一定的资金,加入公司仍然有好处:使用更大的杠杆。假设你已经确切知道一个策略有效,比如年化 20%,那么使用自有资金进行操作,你可能只能投入 100 万,于是一年以后实际盈利 20 万。而如果该策略实际的资金容量可以到达 1000 万,那么你只要能从某种渠道(具体可查看「劣后」是个什么概念?经常用于什么场景? | 「劣后」是个什么概念?经常用于什么场景? - 金融 - 知乎 )借到另外的 900 万,就可以赚得 200 万的收入;去掉对借贷方的补偿以后,仍然有远远超出原来用 100 万资金操作的收入。而这时怎么「借」就变成一个复杂的问题,其中可能涉及很多产品设计、法律条款等许多你并无兴趣也不想浪费精力的繁琐事务。借助公司的平台,这部分工作可以轻松转给其他专业人士。
  · 除去资金层面,要实际运行一个策略,特别是量化类型的策略,往往还需要复杂的 IT 系统支持。即便你是一个策略开发全制霸的高手,也不可能凭自己一个人的力量完成所有系统的开发工作。那么假如你想自己干这件事,就必须去聘请一些专业的 IT 开发人员,而一个沉痛的事实是,这笔费用往往非常贵。一个策略辛苦跑到头,发现还不够支付程序员的工资,这总是一件令人心酸的事情。所以加入一家公司的第三个好处,是不同的策略人员之间可以对 IT 成本进行共享,毕竟很多 IT 基础架构和实际的策略并无直接关系,通过共享可以有效降低这部分的成本。
  Q 宗与 P 宗:
  Q 是指风险中性测度。风险中性的意思主要是说历史数据不能帮助你预测未来的走势,所以你的决策是没有风险补偿的。这当然是一个非常虚幻的假设,但是由此而得的模型可以给出漂亮的数学性质,而且可以在缺乏数据的情况下得到一些结论,所以有一定的实际意义。涉及的数学技术主要是随机过程、偏微分方程之类。在数学派系里,这些显得相对高端,一般人概念里都是那些思维不同于常人的人捣鼓的玩意。
  P 是指真实概率测度。所谓真实,主要是说模型依赖的概率分布是从历史数据上估算出来的。严格来讲,我个人不认为这种东西叫做「真实」,最多只能说是从真实数据上估算出来的,显然没有什么东西保证历史一定会重演(比如黑天鹅)。但是这个是目前大家公认的说法,所以咱们不较真。从定义可以看出这套方法主要依赖数据,数据量越大估算的效果越好。涉及的技术主要是时间序列(ARIMA,GARCH 之类),Bayesian,以及现在流行的机器学习等方法。不难看出,为了倒腾数据,这套方法练到上层就要开始刷装备。
  两者对比可以看出:Q 重模型而轻数据,P 则重数据而轻模型。当然两者也都要即有模型也有数据,但从应用上来讲,Q 者是模型固定,用数据来精化模型的参数(calibration);P 者则可以有若干备选模型,由数据的计算结果来选择最佳的模型(estimation)。
  相关问题:P Quant 和 Q Quant 到底哪个是未来?
  非金融专业人士,可以通过什么途径进入金融业? - 金融 - 知乎
  ————————————————————————————————————————
  第五章
  推荐书单:
  Inside the Black Box: A Simple Guide to Quantitative and High Frequency Trading: Rishi K. Narang
  The Science of Algorithmic Trading and Portfolio Management: Robert Kissell
  Algorithmic Trading and DMA: An introduction to direct access trading strategies: Barry Johnson
  All About High-Frequency Trading (All About Series): Michael Durbin
  Flash Boys: Michael Lewis
  Broken Markets: How High Frequency Trading and Predatory Practices on Wall Street Are Destroying Investor Confidence and Your Portfolio
  The Problem of HFT: Collected Writings on High Frequency Trading & Stock Market Structure
我是高频交易工程师:知乎董可人自选集 (知乎「盐」系列) PDF
我是高频交易工程师:知乎董可人自选集 (知乎「盐」系列) EPUB
我是高频交易工程师:知乎董可人自选集 (知乎「盐」系列) MOBI




【下载地址隐藏】:                    点:回复可见地址
游客,如果您要查看本帖隐藏内容请回复





上一篇:稻盛和夫的经营哲学(六项精进+经营十二条+经营为什么需要哲学)(套装共3册)
下一篇:股票投资技术分析方法与应用 安妮 技术分析综述 形态分析
回复

举报

QQ|

GMT+8, 2024-5-6 00:55

快速回复 返回顶部 返回列表