[金融学习笔记] 谈一点程序化交易[一]

谈一点程序化交易 [一]


程序化交易(Programmable Trading)或者量化交易(Quantitative Trading)、高频交易(High-frequency Trading)、算法交易(Algorithmic Trading)基本都被用来指当前利用计算机技术进行金融证券交易的概念,每个名词各有侧重点,比如程序化交易侧重是交易的方法是通过计算机软件而非交易员手动交易;量化交易的概念侧重交易的决策是通过数学的量化方法而非人的感觉;高频交易指交易的频次很高,在短时间内可能有千万次交易而非中低频交易;算法交易则大多指利用某种定价模型和智能的算法进行价格风险分析。本文讨论的是和这些概念相关的领域,我们姑且称为程序化交易领域,来代表目前业界主流的(比如欧美主要交易市场的交易),通过使用超低延迟(Ultra-Low Latency)计算技术进行的金融证券交易。

应该说只谈一点程序化交易这个领域/行业的一些粗浅的概念,不一定完全准确,都是个人认知。


首先说说金融领域相关的一些企业。最基本的传统储蓄银行(Saving Bank),国内也叫商业银行,比如国内的工行建行中行农行,澳洲的Commonwealth, ANZ, Westpac和NAB,这些储蓄银行体量巨大,主要靠存贷利息差盈利,利润率低但风险也低。下来是投资银行(Investment Bank),国内称为券商,比如摩根斯坦利、高盛,国内的中信、国泰等,体量也很大,大部分依赖各种投资、并购或发行证券盈利,利润率稍高但风险也略高。还有各种各样种类庞杂大小不一的基金公司,所谓基金公司就是通过吸纳别人的钱,然后管理这些钱的企业或组织。基金有很多种分类方法,比如是对公众公开募集资金,就是公共基金(Public Fund),反之就是私募基金(Private Fund);根据基金允许投资的风险程度,可以分为保守的共同基金(Mutual Fund)和激进的对冲基金(Hedge Fund),比如一般的养老基金(Super Fund)都属于共同基金,而索罗斯的量子基金就是对冲基金;当然还有一些非商业的慈善基金组织,比如李连杰的壹基金之类。最后一类金融投资公司是 自营的,基本特征是大量使用计算机自动化进行短期套利交易,很多程序化交易公司都是某个或某些交易所的特许做市商(Market Maker),为该交易所提供流动性(volatility)并享有一定的特权。它和前几种的一个区别是,目前大部分程序化交易公司都是自营交易的(Proprietary Trading),就是公司交易所用的资金都是自己的,而大多数银行、投行和基金公司都是用别人的钱投资(当然也有一些VC,PE是自营的),所以程序化交易公司规模都比较小,但盈利率可能会比较高。

其次讲讲金融证券,顺便提一下国内外的差距。金融行业从本质来讲,本身是不创造财富的,它的作用是让资本高效流通,发挥资本的作用。从积极方面讲,它可以提高资金的使用效率,让社会生产生活更加丰富高效,但也容易造成了很多资产风险,酿成危机。金融是关于资本,通俗来讲就是钱的行业,和一般行业生产产品一样,金融也有各种金融产品。最简单常见的金融产品就是各种储蓄产品(活期、定期、零存整取等等)和信贷产品(房贷、车贷、信用卡等)。金融产品的一个特点就是资产证券化,把资产变成证券(security),便于交易和流通,比如交易小麦不用非把小麦运过来,而是用小麦证券。证券是交易的对象,在交易所里,大家买卖证券。证券实际上是一种合同(contract)规定了什么东西在什么时间值多少钱,比如股票(stock),债券(equity),期货(future),期权(option) 商品本身交易的市场我们一般称为一级市场,比如菜市场,而基于商品的债券进行交易的市场被称为二级市场,而金融业发展迅速,现在已经有各种金融衍生品交易,可以基于商品的证券进行交易,也可以在这个证券基础上再证券化,甚至基于某些指标(index)成为了N级市场,比如股指期货,这时证券的本身价值和其商品的关系就很难直接关联了。金融衍生品(derivatives)这个翻译不好,英文在数学里是导数,翻译者可能是文科生,尽管表现了衍生的金融产品这个外在,但没有把握它的内在本质。二级证券的价格实际就是对商品价格的一阶求导,N级证券价格则是对基于的若干商品的分别N-1阶的偏微分方程。国内金融业主要还在信贷和股票等,衍生品刚刚开始发展。中国目前是日新月异蓬勃发展,特别是一线城市,无论是房价还是工资都已经和国际接轨。特别是制造业,基本是国外能造国内都能造还更便宜。但金融业差距还是巨大的,无论从理论知识还是实践。

再次说一下计算机对产业的影响。应该说20世纪以来计算机和互联网革命对世界影响巨大,对各个产业都有不同程度影响,迫使传统产业系统性变革。比如ebay淘宝对传统零售业的冲击,Uber滴滴对出租车行业的冲击。但大多数产业计算机互联网只是中低级的应用,而对金钱最敏感的金融行业,受计算机革命的影响最深刻,因为技术的差别带来的是直接盈利的差别,在金融领域就是生死存亡。金融活动,无论是外汇、股市、期货、期权等基本都是零和交易,所有的交易都是由买卖双方完成,有人赚钱必定有人赔钱,竞争激烈程度使得技术的效用相对传统行业更加放大。金融行业往往都是第一时间采用计算机市场上最高端最先进的实用技术(注意不是学术界华而不实的技术),让自己在市场上更加有竞争力,同时由于金融行业薪酬的诱惑力,它总是能吸引最优秀的人才进入这个行业,对计算机专业来说,“一流程序员在华尔街,二流的程序员在硅谷,三流程序员留大学”,早已成为很多人的共识。

下面说一下交易的基本流程和概念。程序化交易里所指的交易,基本都是在证券交易所(Exchange)发生的交易,一般被成为场内交易;相对的不在交易所发生的交易叫做场外交易(Over-The-Counter, OTC),事实上据统计全球场外交易总量大于场内交易很多倍,但因为交易分散数据不易取得,所以交易公司基本都只做场内交易。每个国家都有若干股票、期货、期权或其他金融证券(Security)的交易所,比如美国的纽约证券交易所(NYSE),纳斯达克(Nasdaq),芝加哥期货交易所和期权交易所(CBOT,CBOE),这些交易所就是程序交易的舞台。交易所里进行各种金融证券的买卖,最原始的由在交易所的交易员(Trader)来做,后来传统的交易都是通过电话来完成下单,到后来可以网上下单到发展成很多程序自动下单。交易所里各种交易产品(product,和 instrument等价),比如股票,商品,证券等,每一个产品都有一个CLOB(Centralized Limited Order Book,没有找到公认的中文翻译 ),简单来说就是一张按价格排序的表(或者叫登记薄,book),记录了当前时刻所有订单(order),订单分两种,买单(bid order)和卖单(ask order),每个订单包含如下基本信息:对应的产品(product 或者 instrument),限价(limited price,比如买单就是最高出价,卖单就是最低出价)和数量。交易所就是负责对买单和卖单进行匹配,如果相互满足就触发交易(叫做trade或者hit),匹配的顺序是按照先价格优先,再时间优先的顺序。目前的交易所都是用计算机进行价格匹配,价格匹配服务器一般称为M.E. (Matching Engine)。交易所会把交易数据,即CLOB,广播(Multi-cast)给所有人,这样的市场数据服务器一般被称为M.D.(Market Data)。在美国或欧洲,通常可以做到实时提供数据,最差也在毫秒(ms)级别,而国内目前还差距很大。当然国内金融领域会慢慢接轨国际,这一天应该不会太远。对于一个任何想要参与交易的人或公司来说,基本交易的流程就是从交易所的M.D.读取最新的CLOB得知当前市场行情,然后根据自己的判断把相应的交易订单发送到交易所M.E.来交易。当然,这只是个概述,具体细节每个交易所,甚至每个产品都有区别,CLOB有的是以Order Feed的形式给出,有的是以Snapshot的形式给出;每家M.D.使用的协议格式、数据格式都不尽相同,比如有的使用文本数据,有的是二进制数据。

最后详细说一下程序化交易用到的主要计算机技术和发展方向。程序化交易的目标就是通过计算机程序,进行高速的自动化交易,从而在市场竞争中占得先机。目前程序化交易的两个主要特点就是高频(High Frequency)和低延迟(Low Latency)。高频,就是交易发生频度高,目前最新的软硬件技术可以支持每秒钟发出千百次的订单操作(比如生成订单、修改订单和取消订单),是传统人为交易是不可想象的,即使平均每单盈利很少,可是在交易数量的情况下,总体盈利也会非常可观(和薄利多销一个道理)。低延迟,就是程序化交易系统的反应速度极快,接收M.D.到给M.E.发起订单操作的延迟很低。由于M.E.在同样价格下会遵从时间优先的顺序进行匹配,所以对发现同样套利(Arbitrage)机会的交易公司,谁的系统延迟低,谁的订单就能先被匹配,哪怕差距只有几个纳秒(ns,nano seconds)也是胜者通吃。所以交易公司都在不遗余力、无所不用其极地优化自己的系统,降低延迟。简单讲几个关于低延迟的一些基本技术:一是COLO,既Colocation的简称,因为光速的有限性,在光纤上传输距离越短,数据延迟越低,交易公司的服务器都想尽办法放在距离交易所交换机最近的地方,最开始各个公司争相在交易所机房附近租房子,放置服务器,到后来主要交易所都在交易所的机房内设置服务器,由Broker代交易公司进行管理,并保证所有服务器距离交换机的光纤长度几乎相等,以保证公平,这就称为COLO。而COLO以外的交易系统很难在延迟上与交易公司竞争。二是定制化网卡技术,虽然大多数交易所的M.D.和M.E.仍然使用UDP和TCP协议,但普通以太网卡难以满足交易公司的需求,定制化的网卡往往能实现很多普通网卡以外的功能,比如bypass kernel,及基本的包处理、过滤、拷贝都能在网卡上完成,最新的网卡往往还有FPGA、内存甚至ARM处理器,俨然就是一台小电脑。这样能让网络操作延迟极度降低。三是极度优化的操作系统kernel和指令集级编程,保证CPU最大限度的用来进行低延迟的交易,而非花很多CPU cycles进行普通系统的调度、中断和无用的程序指令等。四是算法级的低延迟优化,交易系统中用到的算法,即使是常见的算法,都不是按常规算法库那样去执行,都进行了极度的低延迟优化,比如基本上所有算法都是O(1)的,连循环都看不到,能不在关键路径(Critical Path)计算的都bypass,能预先计算的都提前算好存在lookup table里等等。就这样,低延迟从过去的毫秒(ms,千分之一秒)竞争到了微妙(us,百万分之一秒),现在到了纳秒(ns,十亿分之一秒)级别,从low-latency发展到了Ultra Low-latency(超低延迟)。目前最新的发展方向是低延迟的同时,让程序更智能化,比如像AlphaGo那样利用机器学习自动找最佳交易策略,利用News Feed自动文本分析,分析新闻分析twitter来协助决策等等。 



你可能感兴趣的:(金融)