刚看了一片程序化交易的文章,基本介绍,我觉得写得不错,于是摘录我觉得有用的内容:

程序化交易(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级市场,比如股指期货,这时证券的本身价值和其商品的关系就很难直接关联了。二级证券的价格实际就是对商品价格的一阶求导,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(超低延迟)。目前最新的发展方向是低延迟的同时,让程序更智能化。

来源:http://blog.csdn.net/france8/article/details/51810690

转载于:https://blog.51cto.com/ggwhsd/1980571

关于程序化交易的点点知识相关推荐

  1. 程序化交易接口怎么实现自动下单功能的?

    很多投资者不了解程序化交易接口的使用方法,特别是在执行自动下单的时候,也不注意一下自选股里面能否满足自己的需求,要是没有满足,那么在投资过程中就会损失部分股票盈利的机会.对此,应该怎么样去了解程序化交 ...

  2. 期货程序化交易之期货入门知识摘录整理

           开发期货程序化交易程序,首先要熟悉期货交易术语,否则不熟悉业务,开发的程序将会漏洞百出.下面是我在学习过程中摘录的一些期货相关知识,还是比较零散,可以作为入门时的资料看看.由于是陆续从网 ...

  3. python 程序化交易信号闪烁_请版主帮忙解决一下程序信号闪烁的问题-开拓者知识 -程序化交易(CXH99.COM)...

    咨询内容: Params Numeric notaft(14.58); Vars Numericseries High5(0);// Numericseries Low5(0);// Numeric ...

  4. python用途适合做什么生意-PureQuant数字货币量化交易程序化交易python量化开源框架...

    什么是量化交易 量化交易起源于上世纪七十年代的股票市场,是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式.量化交易从庞大的历史数据中海选能够带来超额收益的多种"大概率& ...

  5. python程序化交易实例-用 Python 实现你的量化交易策略

    Python 的学习者中,有相当一部分是冲着爬虫去的.因为爬虫可以帮你解决很多工作和生活中的问题,节约你的生命.不过 Python 还有一个神秘而有趣的应用领域,那就是量化交易. 量化交易,就是以数学 ...

  6. 简单几步,教你在服务器上实现量化交易(程序化交易)

    简单几步,教你在服务器上搭建量化交易机器人 很多同学在学习量化时会有疑虑,量化交易是个很复杂的东西,我不懂编程或者基础太差还能进行量化交易吗?在跑量化交易之前是不是需要做很长的学习准备?一件未了解的事 ...

  7. 小白期货CTP程序化交易开发入门(一)--CTP开发基础

    接触CTP也才半年多,一边学习一边摸索,看到各大CTP的QQ群里,也都是在问一些很菜的问题,就简单总结和介绍下,今天主要是基础知识,即CTP程序的基础和开源的Demo版本: CTP交易接口是由:::: ...

  8. 转发保留不错一篇 数学模型神经网络在程序化交易模型构建中的运用探讨

    数学模型神经网络在程序化交易模型构建中的运用探讨 作者:唐中 目前,程序化交易已经成为国外投行和金融机构交易的主流手法,因为程序化交易是追求稳定持续的盈利模式,能够实现交易的稳定化,从而杜绝人工交易中 ...

  9. CTP程序化交易入门系列之一:准备

    前言: 笔者自毕业后一直从事低延时交易系统开发行业,这些年经历过神奇bug,给客户培训,回答客户千奇百怪的问题.在这个过程中,自身能力得到了很大的提升,但有时在面对一些小白问题时,总是感叹为何没有一系 ...

  10. 投机者怎么在市场中使用底部放量进行程序化交易

    小孙我自己很久之前就对金融市场交易很感兴趣,从三年前开始,便不断地学习和吸收交易方面的知识,包括最近发现的一个叫QR量化投资社区的不错的平台,也给了自己很多启发.结合最近的市场情况,心血来潮,在此就分 ...

最新文章

  1. android 观察者的框架,Android 架构师7 设计模式之观察者模式
  2. Microbit-高温报警系统
  3. map比vo效率 mybatis_mybatis-plus插件使用的一些问题
  4. 让步的人,最值得深交
  5. python语句大全input_input提示文字 Python基础输入函数,if-else语句,if-elif
  6. oracle以32位运行,Oracle在 32位系统上运行突破sga1.7g的方法
  7. centos6.8 配置mysql赋予mysql远程连接权限
  8. 《Python预测之美》送书活动,中奖名单公示
  9. Linux上运行Python文件
  10. UIFont各种字体
  11. Free Dwg Viewer-免费的AutoCAD DWG/DWF/DXF文件查看器
  12. 火狐扩展教程_Firefox扩展模板
  13. 雷达多普勒频率计算公式_手持式雷达电波流速仪应用
  14. html 的header标签和head标签
  15. C# 关于winFrom控制网页的自动登录的问题(网页刷屏器的制作原理)
  16. 什么是PBR?pbr入门基础干货
  17. 北京工业大学外网访问知网数据库方法
  18. M5311模组烤机测试装置(Arduino)
  19. 使用不同的TCP端口架设多个网站
  20. 计算机输入法如何显示在桌面,Windows10系统启用输入法语言栏桌面提示框的方法...

热门文章

  1. APS背景和入门基础
  2. 智能优化算法:阿基米德优化算法 -附代码
  3. 基于二进制粒子群算法的背包问题求解- 附代码
  4. 在linux中安装Jupyter notebook
  5. ftp linux 开启验证_Linux认证系统管理:linux下搭建ftp
  6. kubernetes集群Pod详细信息为Failed create pod sandbox,缺失镜像google_containers/pause-amd64.3.0解决方法
  7. JavaSE学习--单例设计模式
  8. Android AutoCompleteTextView悬浮提示列表原理简单分析
  9. 超赞 ! 老外的一种避免递归查询所有子部门的树数据表设计与实现!
  10. android问题:Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER