quantopian支持什么tushare 实盘交易接口

对于一个开源 Python 量化交易平台项目的建议有哪些?
来源:互联网
用python的交易员:
多谢大家的回答,一些问题的交流就发在我的这个回答里了。特别感谢何波、董可人、Mr Mistake、LIKE首先,为什么用python?目前本人所在的公司一共有三款平台,分别基于C++, C#和python。其中C#和python平台都是由交易员开发;C++平台则是由专职IT团队作为一个通用平台开发,内部组件进行了封装(交易员不可见),对外提供行情、交易的API用于策略开发(除了C++ 外也包括C#和python可用的API)。理论上这款C++平台应该是最为稳定和强大的,由专业人士设计,同时采用封装核心,暴露API,支持组件模块开发,linux服务器运行的形式。但是在实际运用中,交易团队表达了一个强烈的观点:这个平台实在是太难用了!1.
由IT团队设计的API功能非常强大,但是也太过繁琐,导致学习曲线极为陡峭2.
为了追求速度,没有设计原生GUI(本来就为了在Linux服务器上跑),但是今天绝大多数的非超高频(追求微秒级延迟的那种)交易策略,几乎都需要有人实时监控,你总不能让交易员盯着个linux shell上不断print出来的内容或者盘中去翻日志吧,这个运维风险就扛不起。尽管可以作为插件的形式开发GUI,但C++本身的GUI开发还是较为复杂的,非专业IT很难搞的定。3.
交易员团队的需求变化很快,通常等不及IT去排班开发,最好是今天收盘有个点子,明天开盘就能开始接实盘数据验证,没问题后天就能上实盘。比如去年四季度的分级基金套利机会就是稍纵即逝,那段时间如果能快速开发完成一套专门的监控套利系统,抓住的利润绝对会比用excel接wind数据来的多不少。4.
某些业务逻辑确实太过复杂,交易员想解释让IT明白,无奈IT并不是太擅长某些金融领域(比如期权高频套利的整个业务框架),交流成本太高。用web开发来做比较的话,C++实现的量化交易平台像是java在网络开发领域的地位,强大(几乎无所不能)、稳定(无数大公司的支持),但是也很臃肿(你一两个人开发试试)。以上的原因促成了我坚持使用python开发一个交易平台,这款平台的定位好比于node.js为前端工程师(用户体验的直接缔造者)提供了一个简洁又不失强大的后端平台,主要的目标用户群是中小型量化团队(根据我的经验,绝大部分的券商自营、期货资管和基金量化部门都不大)、专业的交易员团队(可以雇得起少量专职IT)以及一部分打算从互联网领域转行来的程序猿们(python在互联网公司用的不少)。总结下python在量化平台开发方面的优缺点(欢迎补充)。优点:1.
动态语言的快速开发特性,封接口有boost.python,写GUI有PyQt,时间序列有numpy,等等,几乎你想干的事都有现成的库可以用,这里吐槽下公司大牛自己写C++里的简单移动平均(SMA)算法,确实比常规实现快不少,但似乎对pnl没什么直接帮助。2.
学习成本低,这点算是个共识了吧?3.
真需要低延迟的时候,胶水语言很容易通过其他语言拓展:cython, ctypes, boost.python等等。4.
运行速度足够快,也许和C++比起来确实慢了不少,但是就我的经验来看,这点速度延迟对90%的策略pnl毫无影响。缺点:1.
GIL,该死的全局锁导致python无法有效利用多核CPU的性能,尽管可以通过拓展绕过去,但还是没有其他语言原生多线程利用多核的方案来的简便。2.
没有静态类型检查,重构的时候确实有点痛苦,不过一个良好的编程范式可以有效解决这个问题。3.
不适合用来搞超高频策略(追求微秒级延迟的差异),得承认这点python确实搞不过C++。常规基于TICK级数据的策略没问题。协议方面打算设计的尽可能宽松一些,代码可以随便修改、使用、分发、做成商业产品拿出去卖,都免费。交易亏钱了别来找我。开源平台的内容目前计划包括:1.
一个C++ API的封装框架,国内绝大部分交易API都是C++的,手动写python封装非常繁琐(不难),github上有个pyctp项目尽管已经存在了很久,但人气不高,个人认为和代码复杂度有关(目前据说是使用cython自动生成,没有详细的使用说明)。初期将会封装一个华宝证券LTS的API,一来ETF期权上市我目前也在做,二来和CTP的API几乎通用,金仕达、恒生也都提供通用接口。2.
一个事件驱动引擎,这东西不复杂,但是没见过的人第一次确实不好理解,身边大量朋友的经验。3.
基于封装API,事件驱动引擎,PyQt的一个桌面交易程序,将会实现LTS柜台上的绝大部分功能。4.
一个策略运行接口和策略模板,用于降低从金字塔、TB等软件上转移过来的用户的入门难度。发布平台打算用GitHub,不过今天刚看到海风的AT平台发布在了开源中国上,不知道有什么深意不?关于Quantopian这个确实是欧美在python量化交易领域的先行者,zipline库闻名已久,自己没用过。不过和我这个项目的方向略有不同,一来它接的是IB的API,二来它主要还是为自己的这个web应用服务(在服务器运行)。我的项目将会服务于中国用户,同时希望用户在自己的本地跑,不要受到第三方任何服务器的约束(谁都不想被偷策略)。另外目前在quantopian上并没有看到过特别好的策略,也许好东西不会免费放出来,but who knows.更新董可人的一些评论:1.
这个平台的定位处于TB、MC之类的低端量化软件和大型量化团队自己开发的复杂量化平台(Java、C++)之间,目标就是快速上手、开放源代码可以随便改、真要性能不足了容易上拓展(cython等等)。2.
Python缺乏静态检测确实是个不小的问题,比较容易出bug,解决方案是:a)
平台采取非常简单的核心架构,用户容易掌握所有源代码细节b)
测试,其实静态语言写出来的东西也还是得测试,python写测试还快些3.
框架本身不包含图形界面,我写上去的一个界面属于简化示例。从python角度上,可以将底层逻辑和GUI分到两个进程中,然后跨进程通讯,但这个方案对于快速开发的需求来说麻烦了点,可以作为业务需求稳定后改进的方向(其实就是我偷懒想交给开源社区来开发,不过确实我自己目前没这块需求).4.
国内的交易API通常是C++的,网络数据收发在C++环境中完成。在API封装中我做了个队列作为缓冲区向python中推数据,防止由于C++ API的回调函数被阻塞导致程序崩溃(这个坑没自己遇到过很难想到会有)。GUI端的更新我在期权做市过程中大概是每秒更新上千个表格中的单元格同时同步刷新大概40多条波动率曲线,耗时也就是几十毫秒而已,要知道国内的数据量和欧美不在一个数量级,所以并不是特别大问题,当然也调整了算法和GUI在事件驱动中的运行顺序后保证算法的优先响应,。5.
Esper那玩意太复杂了。我这个事件引擎就是实现不同组件向引擎注册对某个事件的监听,然后事件来了分发通知,懂编程的大神必然觉得是个小case,但对于大部分交易员而言这是个神奇的东西。6.
Trader被逼写代码这种事在国内已经成为一个必然趋势了,光是期权做市和套利平台,目前上海这里大量的欧美海龟期权交易员在寻找解决方案,希望这个框架能降低一些进入门槛吧。Mr Mistake的一些评论:1.
目前我的整个平台(框架+业务模块)加起来已经上万行代码,设计方面使用了不少OO,确实偶尔我也希望python能报编译错误。。。2.
用python的目标就是容易,真要性能我也直接去在公司那个C++平台上写得了。3.
Python的GIL就是个大坑,希望目前dropbox那个pyston项目能成功。4.
这种快速开发的工作通常是交易员自己负责的,策略不见得是那种长期运行的非常稳定的全自动策略,可能是某种需要程序辅助的半自动交易策略,比如同时监控市场上3000只股票的某些技术特征,然后盘中监控提示,辅助快速下单,用C++当然能写,但等写好估计交易员的需求已经变了。5.
国内交易所只提供标准的通信协议,然后由各家柜台公司接入后,对外提供柜台交易接口,通常是C++,期望能试着推动改变这个情况(每个接口都要封也太累了)。 更新项目在Github的地址
开发环境说明:windows 7 专业版visual studio 2013 expressboost 1.57.0python环境Anaconda 1.9.2(32位)刚完成了LTS API的封装和行情API的测试脚本,先上传了,接下来的工作顺序是:1. 交易API测试脚本2. 事件驱动引擎3. API的封装方面的教程4. 事件驱动引擎使用方面的教程5. 基于API和引擎开发的LTS交易客户平台(因为华宝没有提供官方的LTS交易软件)6. 策略引擎接口 更新完成了API的封装,上传了交易API的测试脚本。目前玩过boost.python的大神可以通过vnltsmd和vnltstd目录下的C++源代码编译出API,每个目录下的test文件夹里包含了编译好的API,使用方法参见测试脚本。争取明天放出事件驱动引擎后开始制作教程。 二次更新工作效率不错,已经放出了事件驱动引擎,有兴趣的可以看下了。项目的主页发布在,回头教程会放在这个上面。
前ORC员工,挺支持题主的想法的,python去做量化交易的模型也是比较容易实现的。Python如果进行快速prototype或者只进行编写最上层的策略本身而不进行order management,trade synchronization, 以及与您提到的与交易所或者broker进行的connectivity,那么还是非常不错的,有numpy, pandas等优秀的library。不过对于一个专业的交易系统,尤其是量化平台难度很大,仅仅python也很难满足需求,需要多种技术的结合,没有一个专业的团队合作是很难完成的。主要的问题在于python这种动态语言,写时一时爽,重构哭天喊地了要。大致说一下这么一套系统的难点:交易系统本身的架构:大量运算、order的执行与管理、对外的连接都需要服务器端的程序处理CPU intensive的处理,放在服务器端会有非常明显的优势服务器端会非常稳定,试想你的电脑出现windows更新等等网络方面的代码需要服务器端至少交易时段和交易所亦或是券商连接,需要处理大吞吐、低延迟的网络编程。交易、图形、报告界面需要GUI - 一般会运行在Windows或mac上(ORC最早的时候只有Mac版本的ORC Trader, 如果trader想要交易必须配置mac机器,想想也是醉了。。。),亦或是只用浏览器来控制交易,那么势必对后端的代码要求更加高。
由此可见你很难仅仅是一个“程序”就把一套交易系统给运作起来,这里就需要自己去设计一套基础的内部协议框架能让各个trading system的component去运作起来。给一个建议就是可以参考FIX,但这个协议也仅仅是偏向于order execution与基础的market data,比如risk方面的: Alpha, Beta, Sharpe就不要指望这种协议会帮你定义了。
做好了协议之后,那么问题又来了,这些component之间哪些需要低延迟哪些需要高吞吐,哪些需要TCP哪些用UDP就可以解决了。。所以一般你会发现你需要做一个这样的交易系统:GUI Client &---------&
&---------&
HK Exchange / BrokerStrategy Execution Engine
&-------& Gateway 2
&---------&
Tokyo Exchange / Broker
Gateway会帮你做一部分order management和处理每个市场的微观不同,比如每个市场的order type也会有相当大的不同,但是如何让一个trading desk能有a view of whole portfolio(不同市场的orders, trades, portfolio returns, risks),this is a hard problem. 兴许你就需要一套非常好的SOA - service oriented architecture来做分布式系统。PS: 仅仅是一个gateway的编写就需要一个程序员对金融交易市场有很细致深入的了解,他的头脑里面就要有how the orders matched in this market. 这也就是你文中提到的基于“柜台API”的开发,要知道国外(包括HK,台湾)很多市场不会有“API” 给你的,只会有一个网络协议。再后来,你会发现有更多的需求,比如满足风控,想有各种options pricing的计算,那么系统继续拓展:Strategy Execution Engine &-----& Pre Risk &----& Gateway &------& Post Trade Risk &----& Exchange.OMG!我如何track我的order flow呢?我的order到底到哪里挂掉了?是bug还是我的order不符合交易所的要求被reject了呢?到底在这个分布式系统中一个order的延迟多少?如果延迟过高的话我的策略会受到什么样的影响呢?2. 功能如果只是做click stock trading,兴许第一个架构就足够了。但是在金融领域会有很多细分的功能,如果是market making你会需要理解how quoting works, 但是click trading中只有order的concept兴许就够了。如果是券商的系统,他们兴许还需要知道每个用户的order、position的情况来处理突发情况或者风控等。如果是algo trading,兴许你还要提供科学计算的可能性。题主提到希望直接使用柜台API来进行操作,那么还涉及到这样的交易是DMA(Direct Market Acccess),券商未必会放开让你直接做DMA的在国内。那么又需要考虑连接哪家券商的API的问题。所以综上,兴许从一个部分出发做开源会更好,focus在一个方向做好。关于license,我们以前是从来绝对不会用GPL的,it's like a virus... 只能把代码自己写也不用GPL的。现在我和另外一位前同事以及前投行交易组的朋友、BAT小伙伴做了 。 也是想把量化交易更加开放地带给大家,我们拿着低延迟系统在做这么一个开放、免费的平台,也希望大家喜欢。Happy Coding & Happy Trading.
谢邀~~楼主的想法的确挺好,支持,谈几点我的看法吧。1. 楼主为何选择python?是因为自己熟悉python还是?我觉得选择什么语言应该是根据系统的特点去选择,而不是根据自己擅长去选择。python作为交易系统的核心,低延迟很难达到要求。python作为胶水语言,在quants中广为流传,主要用于策略研发过程和数据分析,或者作为胶水黏合各个系统。直接用于交易系统本身还是比较少吧。2. 关于协议方面,GPL还是LGPL完全基于作者你自己的意愿,你去了解了GPL和LGPL相关的约束就明白了,还能采用更宽松的BSD协议。3. 对于开源整个交易平台本身,我倒觉得分成独立的模块更合适,前端行情的Quote Proxy,后端交易的Trade Proxy,不过这2个方面的确quantsBox已经做得不错了。然后对于中间的CEP引擎,策略引擎、订单管理、风控管理等模块作为一个个独立的项目来开发,然后约定好标准,这里标准的制定非常的重要,quote结构、order结构,message结构。这样对于做一个完整的交易系统,扩展性会好很多。4. 发布平台选择GitHub就好,不过难说未来会不会被墙。。。5. 社区就用github本身不就好了吗?
Mr Mistake:
一看就是自己hands on不是闲扯淡的。平时直接接触python model所以来讨论一下。1。弱类型语言对于小型系统的早期来说绝对快速。但是在代码上几千行以后,架构和重构基本就很痛苦了,需要很好的OO discipline 这就不是经验少的dev能做到的了。有时候你自己可能都希望python要是能报编译错误多好!2。没看明白你的server side 和GUI是不是都要非得Python. 如果需要一个Server instance 加上n个GUI呢?在投行一般front end用WPF 多一些。后台不管Java c++ python都可以消息驱动的。用web也要但是很少。纯python的前台实话实说真的没见过。如果谁见过请告诉我,谢了。3。现在性能对你来说可能不是问题,如果有一天需要高性能的时候numpy会有很大优势但是多线程不会像Java好用4。像你提到的今天晚上有一idea明天就要进prod我看起来觉得有点吓人呢哈哈。迅速Agile release 是好事但是需要很强的dicipline : tests 写了多少 code coverage多少 CI有没有 deployment 是自动的不,每次有多少feature,Business test cases 写了没等等等等5。python对交易所的接口API和性能怎么样?是不是直接被交易所首选支持的?最后说一句吐槽的话,金融IT没看起来那么简单的需要很多积累。加油!
主要看你的定位在哪里。简单说,作为一个业余时间的练手就是很赞的作品,但要定位成专业交易平台则问题很多:Python的问题不仅仅在于延迟性能,更致命的是这个弱类型语言很难做编译期静态检测,系统复杂以后很容易写出 bug。这对于交易系统这种对系统稳定性有苛刻要求的系统来说是很难接受的。你的架构看起来是图形界面和策略代码都跑在一个进程里,如果这是真的那就意味着任何一个 UI 上的问题都有可能导致交易策略崩溃。看你的截图,开发这么复杂的图形界面要想不出问题,很难。截图上还可以看出这个系统运行起来会同时跑很多个 Order。Order 多了以后首先是上面说的稳定性隐患很致命,你的系统一旦崩溃,那些还在运行的 Order 估计多半要手动清理了,手慢了可能会有直接损失。另外系统需要实时收发行情数据来更新界面,如果架构上没有解藕的话,很可能意味着界面更新慢会阻塞网络数据的收发(俗称 backpressure)。事件驱动引擎要做好并不容易。比如有名的
就是相当复杂的系统(而且用户体验还很差)。用 Python 写,我觉得难度更加大。基本上,从计算机系统的角度考虑,我觉得最好还是不要定位成一个大而全的一体化交易系统为好。你作为一个交易员,如果能把自己熟悉的业务部分的若干模块提炼出来做精就很有价值了。开源协议 GPL 系是大忌,慎入。GPL 的意思是用了你的代码以后,自己的二次开发也要强制开源,这意味着所有的交易策略都要开源,那就没人敢用你的东西了。如果有兴趣在系统开发上向前走,几点建议是:核心策略相关的代码用强类型语言编写,做足检查和测试至少在进程粒度上把图形界面和交易策略分开现在的图形界面是 Web 的天下了,试着学学 HTML/CSS/Javascript。看到题主的回答中这一段非常有感触:但是在实际运用中,交易团队表达了一个强烈的观点:这个平台实在是太难用了!1. 由IT团队设计的API功能非常强大,但是也太过繁琐,导致学习曲线极为陡峭2. 为了追求速度,没有设计原生GUI(本来就为了在Linux服务器上跑),但是今天绝大多数的非超高频(追求微秒级延迟的那种)交易策略,几乎都需要有人实时监控,你总不能让交易员盯着个linux shell上不断print出来的内容或者盘中去翻日志吧,这个运维风险就扛不起。尽管可以作为插件的形式开发GUI,但C++本身的GUI开发还是较为复杂的,非专业IT很难搞的定。3. 交易员团队的需求变化很快,通常等不及IT去排班开发,最好是今天收盘有个点子,明天开盘就能开始接实盘数据验证,没问题后天就能上实盘。比如去年四季度的分级基金套利机会就是稍纵即逝,那段时间如果能快速开发完成一套专门的监控套利系统,抓住的利润绝对会比用excel接wind数据来的多不少。4. 某些业务逻辑确实太过复杂,交易员想解释让IT明白,无奈IT并不是太擅长某些金融领域(比如期权高频套利的整个业务框架),交流成本太高。这可以说是纯 IT 背景的人入行会遭遇的最大的挑战,一个 Pure IT Role 其实是很难适应交易这个行业的。干这行是非常需要复合型人才的,IT 如果只满足于在自己一亩三分地恪守软件开发的职责,后果就是 Trader 们被逼自己写代码,这实在是一出悲剧。
黄Charlie:
用python开发的现成平台quantopian都已经出hedge fund了吧。这个平台是自建社区,然后通过平台上crowd-sourced 策略建立一个实盘基金,等于留住了很多人,并且保持住了后续开发的动力。python实现对速度要求不高的策略应该是没问题的。
基于python的平台就应该是主要面向个人和小型机构投资者了吧,建议做好恒生和ctp的接口就应该很有市场了,如果有余力把金证的做了更好
yujian chen:
先赞。不过如果不开放业务细节的话,就是简单的行情模块、订单模块、波动率模块、风控模块的交互。核心就在波动率定价,再者就是根据波动率的报价逻辑。。这个不开源,其他意义不大,就是通讯和界面。
薛昆Kelvin:
楼主可以来这里看看,“通联量化实验室” ,也许可以给你一个参考策略编写:策略回测结果:事实上美国大行JPMorgan, BoA还有很多对冲基金AQR, WorldQuant等都是使用Python作为strats/quants做策略研究的语言, Python在国内量化界5年内也将成为风靡的语言但是整个交易系统都用Python来写是一个不太明智的选择有兴趣可以线下喝杯咖啡聊聊
关注。不如先拆分成多个子项目,定义一系列接口规范和约定。如果能搞定众多broker问题,做个优雅统一的proxy,大功一件。
我刚开始学习这方面的知识。(既不是软件科班也不是金融科班真是愁啊。。。。)用c++实现了一个非常简陋的A股配对交易回测程序。写这个小东西主要是为了理解各种交易细节和模型的实现。下一步的目标就是框架抽出来实现GUI和一定程度上的交易提醒。直接自动下单的接口对接对我来说还挺困难的。所以暂时的想法还是以界面或者log文件提醒为主。感谢楼上各位大神的讨论,学习ing
很好的项目,把复杂的ctp封装成简单的开平仓动作即可,让策略研究者集中精力在最需要做的事情上,而不是被coding搞懵。
jack jack:
回下楼下的第一点,一点浅见大神勿见怪,Python感觉还不错勒,适合操盘手(trader)用,估计IT大神们可能觉得效率偏低,但是对做交易的人来说很友善。原来在伦敦做交易时候,Python在很多基金的操盘手中都普及了,属于是trader比较喜闻乐见的程序,有时候晚上有个想法,我改完第二天上班就能用了。而C++什么的,你看有几个trader愿意去学的= = 一般都是quant或者超高频的公司才有兴趣深入吧抢到个板凳,哈哈,亲爱的题主师兄你界面挺漂亮,配色略像TT,赞一个简单提三个小建议,1 vol surface还是得要自己拉的哦,不知道是不是截图的问题,这个截图里面是中间价太偷懒了2 gamma建议除系数,可以用于futures option 但是etf option是不行的,交易时候会把自己看晕哦(支持师兄你的开源精神,怒赞!)
赞一个。python看过没上手,但感觉很亲切。关于开源AT到oschina,没啥深意,用了一下感觉好用就挪地儿了^_^系统架构都是共通的,语言选择上,一是个人熟悉(毕竟熟悉的东西解决问题更容易)二是够用(追求完美是iter天性,同时也是个坑)^_^
Hulifea钱:
1. 交易接口和策略分开。接口只管理和交易所的发单撤单成交。交易员或者quant可以每天更新策略而不影响接口。2.仓位,风险数据,pnl和交易分开,可以通过web实现。3.全面监测交易活动。可以通过python脚本实现。
考拉是只猫:
国内好像都在用Matlab,导致目前python的普及速度非常慢。而且目前国内由于交易制度等无法规避的原因,搞程序化交易、量化交易的人非常少,所以也影响了python的普及。不过楼主做的事情应该是很有意义,至于普及开我觉得恐怕要很漫长的过程
好多回答片面甚至谬误的观念实在不能忍,回答一下。o 延迟高低?交易系统的网络延迟绝对比语言层面高一个数量级。比如大券商,选低延迟的系统,完全没有选机房重要。著名的外高桥机房,报价会吓死网络公司,但是券商却很多。o 高频量大?你需要的是分布式设计,多个消费端加个消息队列是基本。o 工程化? 可读性,重构,包管理,设计模式。。。所有这些都是工程化思想。所有开发人员其实都应该学学php再去学学laravel这个开发框架。可以深刻理解到,作为工程化思想几乎为0,被嘲讽了这么多年的php,在合格的开发手里,是怎么做到工程化其实完全不比java差。o 线程优化性能? 现在流行的都是进程+协程的方式了,几乎所有主流语言都能轻松实现。python的GIL在这个方式下就完全无关了。python的发明人,大神Guido也解释过为什么设计GIL,这个设计只能说有优点也有缺点(对初级开发来说,优点还重要点),没有说移除了GIL的实现就强大很多,不然大神最初就不用加上GIL了。o 测试? 静态检查只是最最最基础的测试。单元测试没有全覆盖,没有自动化测试,怪语言容易出bug?这什么逻辑。。。python有behave和lettuce,php有behat,ruby有cucumber,测试界早已经进化出行为测试,但是按照我的面试结果看,这些测试框架,90%的开发人员完全没使用过,甚至都没听说过。这是怪人还是怪语言?你们吐槽的脚本语言没有静态检查,实际是——人家根本不需要。o GUI? 自从有了nodejs,html5+css3+js才是开发GUI利器(又有很多传统开发完全没听过)。开发速度完胜,性能完全没有问题。可以参见github开源编辑器atom的实现。当然python用pyQt来开发GUI也完全没有问题。o 事件驱动? 这是python的强项好不好。。。综合题主的需求,用python开发完全是完美选择。技术开发需要永远保持旺盛的好奇心,不断学习新技术和概念,才能保持跟上这个不断飞速进化和发展的体系。很辛苦,但是很值得。
大奖章网站:
支持开源!很多现有量化平台对用户的限制太多,用户容易被绑在一个平台上。
既然选择开源,而不是商业化运作,那么可以选择和国内高校一些金融学系合作,据我所知目前很多金融系都在尝试搞量化交易(以教学为主,兼顾研发、实战),可以获得很多经费、人员、服务器支持。
没啥特别的建议,个人比较熟悉C++,准备搞个C++的和你类似东东,或许就是你公司那个C++团队做的事情,不过我只打算弄个简单的,给自己用了。在C++平台上弄Python,个人是非常支持。而且开源更加不错。而且站在交易员的角度,软件的功能性肯定非常棒,建议做的时候还是多咨询下程序员,倘若架构再弄的不错的话。就是个非常优秀的东东了。
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动简单的回答:不是。&br&&br&但是这二者之间的确有千丝万缕的联系,所以在此尝试梳理一下。&br&&br&经典的经济学理论讲的是供需关系决定价格,一般会画两条曲线分别表示供需双方,曲线交点处就是市场价格。这种理论相对来说是很宏观的,因为它只能告诉你根据计算市场价格应该是什么,但不会告诉你这个价格在真实的市场上是怎么形成的。在真实世界,显然不会有人在做买卖之前会先拿出一张白纸往上画供需曲线然后求价格,实际上大家是通过一系列的协商和交互才能最终确定价格。市场微结构就是对交易市场的规则和交易过程的研究,目的是从微观层面上理解价格形成的过程,以及市场规则和结构对交易的影响。&br&&br&对市场微结构的研究本身由来已久,但第一次把这种工作冠上市场微结构这个名字的,应该是1976年 Mark Garman 的一篇论文 &a href=&///?target=http%3A///science/article/pii/00064& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Market microstructure&i class=&icon-external&&&/i&&/a&,论文名字就叫市场微结构,堪称本领域的开山之作。这片文章分析了两种交易模式(Dealer 和 Auction),给微结构研究提供了一个很好的示范。&br&&br&但真正将微结构研究系统地梳理总结,形成一门学科的集大成者,则是1995年出版的康奈尔大学教授 &a href=&///?target=https%3A//www.google.co.uk/url%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D1%26cad%3Drja%26uact%3D8%26ved%3D0CCEQFjAA%26url%3Dhttps%253A%252F%252Fwww.johnson.cornell.edu%252FFaculty-And-Research%252FProfile%252Fid%252Fmo19%26ei%3DWjInVJ3hMIPLaOjUgfAN%26usg%3DAFQjCNFwl2Epr0YB9nus5qclLnLFsosOgA%26sig2%3DsnchYHwGfIeLK0Vhwh6Wbg%26bvm%3Dbv.Cd.d2s& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Maureen O'Hara&i class=&icon-external&&&/i&&/a& 的经典著作《&a href=&///?target=http%3A///books%3Fid%3DudXjR2Dg7bwC%26dq%3DMarket%2BMicrostructure%26hl%3Den%26sa%3DX%26ei%3D0CQnVK-cGcXuaJ_kgIgH%26ved%3D0CB8Q6AEwAA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Market Microstructure Theory&i class=&icon-external&&&/i&&/a&》。在那个年代,交易电子化才刚刚起步,今天的高频交易还远未萌芽,那个时候对微结构的研究显然和高频交易扯不上什么关系。事实上这本书也是理论意义远大于实践。这本书提供了一套理论分析框架,用博弈论,贝叶斯学习等技术对微结构建模和分析。&br&&br&那个时代的学者们更多的是想要建立起交易市场的物理模型,希望像分析物理问题一样来分析交易市场。在这本书里提到的模型大都是理论上的创造,比如会把市场中的参与者分成几种类型,例如做市商,内幕交易者(informed trader),无内幕消息者(uninformed trader)等。有的模型很简单地假定市场价格是做市商通过对自己的库存管理来决定的,有的则是假定价格是通过内幕交易者和其他人之间的博弈来决定,其他人通过贝叶斯方法来不断推测市场上的内幕消息。这些假设的不同会导致模型中的均衡点随之变化,研究者一般是希望通过这些分析来揭示市场中的内在规律,比如 Spread 是如何形成的,成交量对价格有没有影响等。&br&&br&特别的,这本书以由浅入深的方式一步一步拓展研究的深度,通读本书可以很好地帮助你理解学者们是如何构建分析理论的。比如说最初的模型可能只是假设内幕交易者根据内幕消息来下单,整个市场按照每人轮番下单的顺序方式进行交易。在此基础上,可以增加一点变化,使做市商可以通过分析市场上的订单流来推测有多少内幕消息。更进一步,内幕交易者可以变得更聪明,通过模仿无消息者的交易模式来隐藏自己的交易。再然后,可以让无消息者也采取策略,让他们对做市商和内幕交易者的行为做出推断和应变。如此,每一步的改进都会让模型更加复杂,也更加逼近真实世界,通过对不断完善的模型的分析,很多市场的内在特质就会不断被揭示出来。&br&&br&但可以看出这门学科的重点是帮助理解市场结构和运作原理,并非探索赚钱秘笈。所以如果你想通过学习研究这些内容来寻找或者制定交易策略,很可能要失望。甚至在早期,这些理论模型也不需要考虑实际数据,其中很多更是直接假定价格过程是一个&a href=&///?target=http%3A//zh.wikipedia.org/wiki/%25E9%259E%2585& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&鞅&i class=&icon-external&&&/i&&/a&,走的是Q宗的路子(&a href=&/question//answer/& class=&internal&&P Quant 和 Q Quant 到底哪个是未来?&/a&)。&br&&br&沿着这条道路,2006年出版了一本纽约大学教授 &a href=&///?target=http%3A//www.google.co.uk/url%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D1%26cad%3Drja%26uact%3D8%26ved%3D0CCMQFjAA%26url%3Dhttp%253A%252F%252Fwww.stern.nyu.edu%252F%7Ejhasbrou%26ei%3DLDInVNy-IYPPaPPcgfAG%26usg%3DAFQjCNHpg8dOg9U_84y5hf_kmX1CFRvuCA%26sig2%3DAG8lG8-3t-Iz1VSClgtaHA%26bvm%3Dbv.Cd.d2s& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Joel Hasbrouck&i class=&icon-external&&&/i&&/a& 的著作《&a href=&///?target=http%3A///books%3Fid%3D8IUAQXqMDE0C%26printsec%3Dfrontcover%26dq%3DMarket%2BMicrostructure%26hl%3Den%26sa%3DX%26ei%3D0CQnVK-cGcXuaJ_kgIgH%26ved%3D0CDAQ6AEwAw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Empirical Market Microstructure : The Institutions, Economics, And Econometrics of Securities Trading&i class=&icon-external&&&/i&&/a&》,提供了该领域内一些较新的进展。这本书出版于《&a href=&///?target=http%3A///books%3Fid%3DudXjR2Dg7bwC%26dq%3DMarket%2BMicrostructure%26hl%3Den%26sa%3DX%26ei%3D0CQnVK-cGcXuaJ_kgIgH%26ved%3D0CB8Q6AEwAA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Market Microstructure Theory&i class=&icon-external&&&/i&&/a&》的十年之后,思路上一脉相承,两本对照着看可以看到很多熟悉的概念,比如序贯交易模型(Sequential Trade),库存模型等等。思想上仍然是用理论模型教你去理解市场结构。&br&&br&也许一些实战大牛会对这些研究表示不屑,认为这种纸上谈兵的理论模型根本不能刻画真实的市场和人性。但我认为要想真正对市场结构有深入理解,这是唯一可行的科学道路。真实世界中的变化有千千万,如果不能有效地化繁为简,提炼出抽象的数理模型,我们根本无从探寻市场本质。的确有些传说中的交易员通过经验或是直觉把握到了一些致胜秘笈,但很难让人相信这些技能在脱离了当时的市场环境或是操作人本身的特点之后还能够轻易地复刻。微结构的很多研究或许看起来简陋,但是这些简陋的模型却给更深层次的研究提供了坚实的基础,是无法忽略的。&br&&br&到此为止,微结构的研究都和今天我们所说的高频交易没有太直接的联系。你在这些书里不会看到所谓的低延迟,Co-location等新名词。但学者们显然更清楚这些问题,高频交易作为一个新兴的热门话题也得到学界的关注。2014年 &a href=&///?target=https%3A//www.google.co.uk/url%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D1%26cad%3Drja%26uact%3D8%26ved%3D0CCEQFjAA%26url%3Dhttps%253A%252F%252Fwww.johnson.cornell.edu%252FFaculty-And-Research%252FProfile%252Fid%252Fmo19%26ei%3DWjInVJ3hMIPLaOjUgfAN%26usg%3DAFQjCNFwl2Epr0YB9nus5qclLnLFsosOgA%26sig2%3DsnchYHwGfIeLK0Vhwh6Wbg%26bvm%3Dbv.Cd.d2s& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Maureen O'Hara&i class=&icon-external&&&/i&&/a& 就给出一篇论文 &a href=&///?target=http%3A//www2.warwick.ac.uk/fac/soc/wbs/subjects/finance/fof2014/programme/maureen_ohara.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&High Frequency Market Microstructure&i class=&icon-external&&&/i&&/a&,介绍在高频交易时代微结构的研究方向,比如高频时代交易规则应该怎么设计,如何监管等。&br&&br&这里值得一提的是一篇同胞的论文,&a href=&///?target=http%3A//www.yueshen.me/pages/about/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Zhou Yueshen&i class=&icon-external&&&/i&&/a& 的 &a href=&///?target=http%3A//goo.gl/MhwNz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Queuing Uncertainty&i class=&icon-external&&&/i&&/a& 就把延迟这个概念引入了微结构的理论模型中,对有延迟情况下的做市商策略做了理论分析。这篇论文赢得了 11th International Paris Finance Meeting 的 &a href=&///?target=http%3A//www.tinbergen.nl/news/bart-zhou-yueshen-wins-best-paper-award/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Best Paper Award&i class=&icon-external&&&/i&&/a&,&a href=&///?target=http%3A//www.yueshen.me/pages/about/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Zhou Yueshen&i class=&icon-external&&&/i&&/a& 本人也凭这篇论文拿到 INSEAD 的教职(顺带一提,此人师从 &a href=&///?target=http%3A//www.tinbergen.nl/fellow/dr-albert-a-j-menkveld/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Albert Menkveld&i class=&icon-external&&&/i&&/a&,近两年在高频交易方向也有好几篇很好的论文)。&br&&br&最后要提的是一本最为切合本题的著作,2013年出版的《&a href=&///?target=http%3A///books%3Fid%3Di2j3nQEACAAJ%26dq%3Disbn%3A%26hl%3Den%26sa%3DX%26ei%3DviUnVJ3VOsGVaqqsgKAG%26ved%3D0CB8Q6AEwAA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Market Microstructure in Practice&i class=&icon-external&&&/i&&/a&》。这本书不同于之前几本的地方在于,通过大量的数据分析从实践角度解释了微结构在交易方面的价值。比如介绍了因为欧美市场碎片化(fragmentation)而导致的一系列包括高频交易在内的新兴技术(Smart Order Routing,HFT,Dark Pool),各家交易所是如何通过改进交易机制(缩减 tick size,引进做市商等)来竞争客户,交易市场上的一些特征数据(order size,spread)的变化趋势等。&br&&br&这本书的价值和深度如何,我觉得可以由这句我最喜欢的金句来说明:&br&&blockquote&HFT (High Frequency Trading) is the price to p it is not possible to put trading venues in competition without agents building high-frequency liquidity bridges across them.&/blockquote&这可算是对 HFT 的存在和发展最透彻的解读了。&br&&br&另外,虽然本书主题是微结构,但实际上会让你对交易技术的发展历史和趋势有一个宏观的了解。看完这本书,你会对高频交易者到底在做什么有更深入的了解。(特别一提,这本书实际上对 HFT 持批判态度,并且给出了很多非常有含金量的分析,这也是本书非常值得一读的一个原因。)
简单的回答:不是。 但是这二者之间的确有千丝万缕的联系,所以在此尝试梳理一下。 经典的经济学理论讲的是供需关系决定价格,一般会画两条曲线分别表示供需双方,曲线交点处就是市场价格。这种理论相对来说是很宏观的,因为它只能告诉你根据计算市场价格应…
我来说几个吧。&br&&br&石油的现价低于期货价格,因为石油的存储需要成本。这个成本称为carry cost,它和期货到期后的递送成本(delivery cost)以及预期需求变化加在一起,组成了石油的期现价差。&br&&br&但是石油的保存和递送成本是可以想办法降低的。&br&&br&比如陆地上石油的储存和运输成本较高,所以在空船率高的时候,商品交易员会租下船只装满石油让他们在海上漂着,同时做空期货,到期后直接递送入港。这样大大节省了实际的储存和递送成本,形成和期限价差的套利。&br&&br&类似的策略天然气交易员也干过。&br&&br&某现货交易员朋友以前还跟我说过几个奇葩手段。比如通过和船长搞好关系,可以让他在卸货时把油轮的倾斜角度加大,可以导出更多的油。不同国家对于油品的要求不一样,但原油的现货价格是一样的,他们会利用这一点把好坏油掺杂,在不同国家之间做套利。&br&&br&还有两个关于电的奇葩策略:一个是在核电站周围布置红外监测设备,可以检测发电情况,从而对电价进行调整。另一个是人们发现在足球比赛中场时英国电力网的电力需求会突然加大,因为中场休息时英国人会集体烧水泡茶。。。&br&&br&最近又听到一个:某台湾期货交易员雇了直升机在巴西铁道上巡逻观测矿产出货情况,以求在其到达港口之前下注。&br&&br&--&br&最后安利一个我的live&br&&a href=&/lives/090304& class=&internal&&理工生如何进投行交易部门&/a&
我来说几个吧。 石油的现价低于期货价格,因为石油的存储需要成本。这个成本称为carry cost,它和期货到期后的递送成本(delivery cost)以及预期需求变化加在一起,组成了石油的期现价差。 但是石油的保存和递送成本是可以想办法降低的。 比如陆地上石油的…
HMM这样一个发明至今已有50年的经典模型,已经实现的应用之深广,无所谓前景不前景的了。但这不代表它没有生命力,所以你们不可以嘲笑它。因为HMM能够给你的不仅仅是几套算法,而更多地是一种研究问题的工具性视角,帮助你更加灵活自如地实现理论世界-现实世界的镜像转换。&br&&br&其实HMM的应用除了题主所提到的两个方面之外还有很多,尤其是当我们可以掌握的数据更加丰富多元的时候,更多的场景下我们可以拿来用HMM。我就简要说一些相关的hypothesis,不会涉及到具体模型和策略,但我会尽可能地把框架讲清楚。&br&&br&&br&&ul&&li&&b&统计套利&/b&&/li&&/ul&就先拿题主提到的统计套利来说吧。我们都知道理论上你所构建出的“协整组合[注1]”形成的价差应服从OU过程,但即便价差服从OU过程,一个实际价差也可能存在若干个不同的理论价差,也就是若干个参数不同的OU过程。如果这些参数还是动态的,那么用一个HMM很容易解决问题。&br&&br&&img src=&///equation?tex=%5Cbf%7Bx_t%7D+%3D+%5Cbf%7B%5CPi+x_%7Bt-1%7D%7D%2B%5Cbf%7B%5Cupsilon++_t%7D& alt=&\bf{x_t} = \bf{\Pi x_{t-1}}+\bf{\upsilon
_t}& eeimg=&1&&, (1) &br&&img src=&///equation?tex=y_t+%3D+%5Ceta+%5Cleft%28+%5Cbf%7Bx_t%7D+%5Cright%29+y_%7Bt-1%7D+%2B+%5Czeta+%5Cleft%28+%5Cbf%7Bx_t%7D+%5Cright%29%2B%5Cvartheta+%5Cleft%28+%5Cbf%7Bx_t%7D+%5Cright%29%5Cvarpi++_t& alt=&y_t = \eta \left( \bf{x_t} \right) y_{t-1} + \zeta \left( \bf{x_t} \right)+\vartheta \left( \bf{x_t} \right)\varpi
_t& eeimg=&1&&, (2)&br&&img src=&///equation?tex=z_t%3Dy_t%2B%5Cvarepsilon+_t& alt=&z_t=y_t+\varepsilon _t& eeimg=&1&&, (3) observation process&br&&br&(2)是OU过程的离散形式,三个系数的具体表示请自行推导。注意这里的&img src=&///equation?tex=y_t& alt=&y_t& eeimg=&1&&是服从OU过程的理论价差,可以拿来和你用你的仿射变换得到的实际价差&img src=&///equation?tex=z_t& alt=&z_t& eeimg=&1&&做比较,如果实际价差高于理论价差,就short你的协整组合;反之则long你的协整组合。当然为了减少交易成本,你也可以设置触发交易信号的阈值。&br&&br&当然还有一种思路,你也可以把假设放宽,不再假设理论价差服从OU过程,而是直接重新表示你的实际价差。比如在你看来,你的协整价差有两个states,一个state代表随机游走(random walk),一个state代表均值回归(mean reversion),也就是说你的价差并不是每时每刻都服从OU过程那么乖乖地往均值上靠,相反,它有时候会翻脸变成随机游走拦也拦不住。这两个过程的参数的状态转移过程就是hidden state process,实际价差就是observation process。这个时候你就要根据转移矩阵的概率判断当前的regime是否符合统计套利的环境。&br&&br&第一种思路就是题主所提到的经典思路,但可以有多种多样的扩展,比如将HMM和状态空间模型结合,或者重新定义价差的hidden states(如上面提到的第二种思路)。其实用HMM做统计套利的建模过程并不难,但参数估计是个大坑。这里常用的方法就是EM算法了。说句题外话,我个人十分喜欢EM算法,喜欢它在计算上的简洁和鲁棒。特别是牛顿方法废掉的时候更显EM的神采。但包括HMM的初始状态和转移矩阵等初始估计就是另外一个故事了,目前还真没什么好办法,一般就用样本内数据做MLE。加之模型里面涉及的参数个数也不少,过拟合也是个大问题。&br&&br&&br&&br&&ul&&li&&b&量化择时&/b&&/li&&/ul&简单说一下题主提到的量化择时。因为答主工作中研究趋势交易不多,所以仅围绕HMM的特点谈其应用。其实学过Probabilistic Graphical Model的都知道,HMM就是Bayesian Network的一个特例,具体说是Dynamic Bayesian Network(DBN,不要跟深度神经网络里面的DBN搞混)的一个特例,也有人称之为Hierarchical HMM。就用DBN来说一下题主提到的量化择时。我拍脑袋举个栗子,我们可以在头一层设置5个hidden states,大熊(strong bear)、弱熊(weak bear)、随机游走(random walk)、弱牛(weak bull, wu)、大牛(strong bull, su)。然后在每个市场趋势下还可能有若干种features,可以是基本面消息也可以是技术指标,这就考验市场直觉和特征工程的功夫了。最后observation可以简单地使用收益率来表示。根据预测出的收益率进行择时判断。&br&&br&因为择时交易归根结底就是预测,而市场在不同的regime下一定有不同的走势特点。HMM就正好可以用来描述和预测不同regime下的不同反应。这样设计下来模型就呈现出这样(其中白色单层圆圈就是hidden state,灰色圆圈就是observation):&br&&img src=&/aa5a5bf39f4bcb82a417_b.png& data-rawwidth=&925& data-rawheight=&598& class=&origin_image zh-lightbox-thumb& width=&925& data-original=&/aa5a5bf39f4bcb82a417_r.png&&&br&像这种“拜占庭风格”的模型似乎有点令人啼笑皆非,至于它们到底好不好用、该怎么用之类的问题纯属见仁见智,过拟合的可能性很大,但我还是建议有的人不要一上来就以一副“老子当年小米加步枪就能让他老蒋的精锐部队跪了你服不服”的样子对待那些看上去复杂的模型。因为这些模型的思路其实很可能会给你提供新的视角和见解,让你最终建立出简洁的模型。就像你盖房子的“脚手架”,脚手架搭建得繁复冗余也没有关系,随时可以修改,但最后要盖出线条优美又结构稳固的房子出来。&br&&br&&br&&ul&&li&市场微观结构&/li&&/ul&如果真要说前景的话,HMM在算法交易和高频交易上的应用可以算得上,虽然以间接的方式。HMM主要是可以基于tick数据研究股票价格的日内动态变化,特别是在市场日内的不同状态下的变化,比如接下来要说到的price revision、order arrival、duration等等,这属于市场微观结构的内容。计量经济学家常用ACD模型研究tick data,但使用HMM可以得到具有state-dependent特点的比如price revision和duration的分布,从而根据这些市场微观结构的观察结果又将便于算法交易和高频交易策略的构建。&br&&br&我们可以用一个有限状态{1, ..., K}的离散马尔科夫链&img src=&///equation?tex=S_t& alt=&S_t& eeimg=&1&&作为hidden state process,转移矩阵为&img src=&///equation?tex=%5CPi+& alt=&\Pi & eeimg=&1&&。时间t对应某一交易日内第t笔交易。至于observation process那边则有price revision和duration,就像这样:&br&&img src=&/a66cdc3debc38dce357c20_b.png& data-rawwidth=&528& data-rawheight=&238& class=&origin_image zh-lightbox-thumb& width=&528& data-original=&/a66cdc3debc38dce357c20_r.png&&其中&img src=&///equation?tex=X_t& alt=&X_t& eeimg=&1&&为第t笔交易发生的价格变动,&img src=&///equation?tex=%5Ctau_t& alt=&\tau_t& eeimg=&1&&为第t笔交易距离上一笔的duration。&img src=&///equation?tex=%5Ctau_t& alt=&\tau_t& eeimg=&1&&的计算可以根据由指数幂律分布拟合的order arrival rate来计算,&img src=&///equation?tex=X_t& alt=&X_t& eeimg=&1&&可以用一个结合了价格零变动的离散pdf和价格非零变动连续pdf的mixture model求积分来计算。&br&&br&如果你带入数据的话,通常可以得出一个stylized fact:在state 1,trade duration很短,价格变动也很小;在state 2,trade duration长,价格变动的方差也就很大。同时状态转回到state 1的速度比回到state 2要快得多。这与我们的直觉相符合。&br&&br&单就这一方面,HMM的应用就可以很丰富。算法交易的一个重要方面就是如何处理刚到来的信息,这写信息既包括价格、成交量、duration、买压卖压等交易信息,也包括公司公告、行业动态和宏观经济等消息信息,如果你以一个机器学习的视角看的话,&b&HMM可以作为一个在线学习(online learning)算法&/b&,因为它可以online地学习市场状态和得到与price revision、duration和状态转移概率等模型参数。所以HMM非常适合用来设计交易算法。&br&&br&&b&比如基于限价单的算法交易。&/b&&br&&br&这个思路是从Avellaneda[注2]那里得到的启发。我们假设mid-price就是一个有若干regime的布朗运动,即&img src=&///equation?tex=dP_t%3D%5Csigma+_tdW_t& alt=&dP_t=\sigma _tdW_t& eeimg=&1&&,其中&img src=&///equation?tex=%5Csigma+_t%3D%5Csigma%5E%7B%28S_t%29%7D+& alt=&\sigma _t=\sigma^{(S_t)} & eeimg=&1&&,&img src=&///equation?tex=S_t& alt=&S_t& eeimg=&1&&是个连续有限状态的马尔科夫链,决定着mid-price revision的波动率的regime switching。注意离散的HMM用在实证研究上没问题,但算法交易常常用到随机最优控制或者动态规划,所以要映射成连续的HMM。&br&&br&限价买单指令价格&img src=&///equation?tex=%28P_t-%5Cvarrho_t+%5E%7B-%7D%29& alt=&(P_t-\varrho_t ^{-})& eeimg=&1&&和限价卖单指令价格&img src=&///equation?tex=%28P_t%2B%5Cvarrho_t+%5E%7B%2B%7D%29& alt=&(P_t+\varrho_t ^{+})& eeimg=&1&&,其中 &img src=&///equation?tex=%5Cvarrho_%7Bt%7D%5E%7B%5Cmp+%7D++& alt=&\varrho_{t}^{\mp }
& eeimg=&1&& 就是到mid-price的距离,我们费半天劲也就是为了得到&img src=&///equation?tex=%5Cvarrho_%7Bt%7D%5E%7B%5Cmp+%7D++& alt=&\varrho_{t}^{\mp }
& eeimg=&1&&的最优解 。限价单的执行速率(rate of execution)就显得格外关键,&img src=&///equation?tex=%5Clambda_t+%3D+%5Clambda%5E%7B%28S_t%29%7D& alt=&\lambda_t = \lambda^{(S_t)}& eeimg=&1&&代表rate of order arrival,但交易执行的问题是:order离mid-price越远,指令的执行速率就越低,而且是以指数级下降。那么我们就在order arrival的基础上再乘以一个指数函数,&img src=&///equation?tex=%5CLambda_%7Bt%7D%5E%7B%5Cmp%7D%3D%5Clambda_t++e%5E%7B-%5Ckappa_%7B%5Cmp%7D%5E%7BS_t%7D%5Cvarrho_%7Bt%7D%5E%7B%5Cmp%7D++%7D& alt=&\Lambda_{t}^{\mp}=\lambda_t
e^{-\kappa_{\mp}^{S_t}\varrho_{t}^{\mp}
}& eeimg=&1&&,其中&img src=&///equation?tex=%5Ckappa+& alt=&\kappa & eeimg=&1&&是个常数,用来控制限价单到mid-price的距离的尺度,可以用个启发式算法计算。你也注意到了,这里price revision和duration不是相互独立的,因为&img src=&///equation?tex=S_t& alt=&S_t& eeimg=&1&&都对其有影响,至多算是条件独立。另外,算法交易里的限价单最怕的就是你的order迟迟得不到执行,得不到执行的原因不是regime发生的变化就是有更有利的order arrival。所以当你在regime发生转换的概率较低的情况下发出一个immediate-or-cancel的指令,如果这时候突然regime变了或者有简单粗暴的市价单闯进来,你这个指令就很难得以执行。换言之,rate of order arrival和price revision的波动率都是决定你的交易算法选择怎样的&img src=&///equation?tex=%5Cvarrho_%7Bt%7D%5E%7B%5Cmp+%7D++& alt=&\varrho_{t}^{\mp }
& eeimg=&1&& 的因素。那么剩下的工作就是在你的效用函数中求取关于&img src=&///equation?tex=%5Cvarrho_%7Bt%7D%5E%7B%5Cmp+%7D++& alt=&\varrho_{t}^{\mp }
& eeimg=&1&&的最优解了。由此你可以决定最优的下单时机,或者赚取bid-ask spread,等等。&br&&br&&b&比如高频交易中的返佣(rebate)。&/b&&br&&br&先举个例子说一下什么是返佣:如果一个限价单filled,提供流动性的一方可以得到0.25分/每股的返佣,而吸收流动性的对手方要支付更高的交易费用。高频交易者求返佣的其中一个方法就是观察被拆分成若干小单的机构大买单的出现。如果某股票当前价格为10.00元/每股,高频交易者利用速度优势放出一个10.01元/每股的买单——这就是在提供流动性了,所以这个买单很快会被那些试图以10.00元/每股卖给这家大机构的交易者hit。此时的股票价格就是10.01元/每股了,大机构的小买单也随之跟进到这个价位。然后高频交易者立马调头放出一个10.01元/每股的卖单——这同样是在提供流动性。这样一个来回,高频交易者虽然没有从股票价格中赚钱,但赚到了0.5分/每股的返佣,不亦快哉。&br&&br&返佣策略当然不是无风险的空手套白狼,高频交易者就怕价格朝着不利于自己的方向走。所以我们的HMM就派上用场了,它可以告诉我们一组返佣策略是不是能赚到钱。比如在state 1里,每笔交易之间的duration很短,价格变动的方差也很小,非常适合高频交易者拿返佣。高频交易者要考虑至少三个问题:1)这样的state的持续性怎么样?(从转移矩阵里可以看到);2)在这个state内,价格零变动的概率是多少?(从Xt的参数里可以看到);3)如果价格非零变动,那么价格变动的波动率是多少?(从Xt的参数里可以看到)。所以说HMM放在这儿就是一个online learning algorithm,可以动态学习我们想要知道的市场微观结构方面的当前状态。&br&&br&&br&&br&其实HMM可应用的范围依然很广,绝不仅限于我上面提到的这几方面。&b&只要你发现你的研究对象里清晰地呈现出不止一个regime的形态,并且能从逻辑上确定observation和hidden state的镜像关系,那么HMM就是一个比较好用的模型了。&/b&顺便再举个小栗子,就比如那些衡量市场信息不对称特征的指标,比如PIN(Probability of INformed trading)和PSOS(Probability of Symmetric Order-flow Shocks),也可以用上HMM。你可以拿HMM估计PIN和PSOS的值,以此观察一个重大消息发布前后的市场信息环境或者市场情绪的变化,因为private information或者informed trader对市场的影响和public information或者noise trader对市场的影响完全会是两种形态。经验表明HMM算法可以得到比经典的EHO法、EEOW法、DY法[注3] 更好的估计值。&br&&br&&b&但是,在没有对所要解决的问题有深刻认识之前,甚至在寻找到合适的问题之前,不要有任何幻觉,不要强套任何模型或算法,不要把自己像买彩票似的两块两块地消耗殆尽,那样你不会有任何收获。只有在对模型的深入探索和对市场的深刻洞察的时候,你才可以目不识丁而经纶满腹,足不出户而情满江湖。&/b&&br&&br&&br&&br&[注1] 这里的协整不单单指的是大家所熟悉的时间序列教材里的协整检验,统计套利中的协整有更严格的内含,同时可以有更宽广的外延。详见「&a href=&/question//answer/& class=&internal&&统计套利中的「协整」是什么意思? - 郭小贤的回答&/a&」&br&&br&[注2] M. Avellaneda and S. Stoikov, High-frequency trading in a limit order book. Quantitative Finance, Vol. 8, No. 3, April –224. &a href=&///?target=https%3A//www.math.nyu.edu/faculty/avellane/HighFrequencyTrading.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&math.nyu.edu/faculty/av&/span&&span class=&invisible&&ellane/HighFrequencyTrading.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&[注3]
这三种方法分别以作者姓氏首字母组合命名的,EEOW为Easley, Engle, O'Hara and Wu,DY为Duarte and Young,EHO为Easley, Hvidkjaer, and O'Hara.
HMM这样一个发明至今已有50年的经典模型,已经实现的应用之深广,无所谓前景不前景的了。但这不代表它没有生命力,所以你们不可以嘲笑它。因为HMM能够给你的不仅仅是几套算法,而更多地是一种研究问题的工具性视角,帮助你更加灵活自如地实现理论世界-现实…
谢题主的问题,有幸一直在国内做这方面的投资研究,希望借此与大家进一步交流。&br&&br&首先我想说一说在Alpha策略的研究中,一些通常的设置:&br&&u&&b&基差的不可预测性:&/b&&/u&&br&如果大家有耐心做过关于基差预测的研究,就会发现在实际研究和投资过程中,预测基差是非常困难的一件事情,其难度甚至不亚于直接预测大小盘的走势。当然,市场机构各有神通,不排除有少数市场有实力的机构能够在特定的时间段内、特定的预测区间下对基差做出&大概率&准确的、量化的预测。然而正如同Alpha策略选择用对冲期货来规避市场风险的初衷的一样,市场上大部分的机构在测试其策略时,往往直接用”指数“来替代股指期货对策略进行回测,从而希望能够”真实“地呈现策略的本来面目。然而这一设置,后面会说到,在投资过程中,会带来很大的问题。&br&&br&&u&&b&行业中性:&/b&&/u&&br&同”市场中性“策略这个名字一样,Alpha策略追寻地是剔除了市场、行业判断的纯粹的套利收益。直白地说,这是因为量化投资在直接预测大盘走势、预测行业强弱上并不具有特别的优势,原因在后面会说明。所以,国内的Alpha策略在早期(注意:我说的是早期)一般都会将策略在某个行业上的权重配得跟指数一致。这样、由于行业相对强弱所带来的风险也会被规避掉。然而这一设置,仍然会带来很多问题。&br&&br&&b&&u&回测的时间:&/u&&/b&&br&由于数据获取等种种原因,2007年之前的数据是有非常多缺失且不完整的。如涉及到指数权重、财务数据、会计准则更改等等问题。所以一般而言,国内的Alpha策略最早也是从2007年中开始回测,更有甚者可能从2008年之后开始回测。But, time does matter. &br&&br&如果说Alpha策略在中国所遇到的研究困难,就不得不从股指期货这个对于Alpha策略来说唯一的对冲工具说起了。IF合约是从日在中金所开始交易的,国内Alpha策略的兴起也基本上与IF的上市密不可分,所以我把Alpha研究在实际操作过程中遇到的困难分为以下几个时期:&br&&br&&b&A. 2010年4月-2014年10月(迷人的潘多拉魔盒)&/b&&br&如果大家在这个时期做Alpha策略,你会发现赚钱太容易了!记得曾经跟某BGI回来的量化私募大佬电话会议的时候,该大佬说,现在Alpha随便什么策略都能赚钱。言语中,是戏谑,是无奈,却也隐含着担忧。&br&&br&在这个时期,你会发现用一些非常简单的信号,用经典的Alpha框架,回测起来,年化15%以上的收益、夏普3以上的策略一堆一堆的。你可能会突然觉得你是这个世界上最聪明的人,你发现了新大陆!&br&&br&如果说,在当时的环境下,Alpha研究有什么隐忧的话,那就是:IF本身的问题太大了。这句话什么意思呢?IF的标的指数是沪深300指数,而沪深300指数最大的特点就是金融业的权重太大了!而且银行股的只数太少了,只有16只!&br&&br&如果大家读过Grinold的Quantitative Equity Portfolio Management(此君来自Barra,做Alpha的同志必然读过他的书;Barra Risk Model也算是发源于他的研究),就会记得,一个策略的Information Ratio跟涵盖股票的只数的开方、截面离散率是正相关的。但是金融股、尤其是银行股有什么特点呢?低波动、同涨同跌严重(相对其他版块),低价股多且日内波动率极低。前两个特点导致银行股本身很难有高Alpha,最后一个特点则导致交易起来十分困难,这样的话, 策略如果跟指数一样,配很高的权重在银行上,就要忍受始终在银行业上赚不到钱甚至亏钱。多说一句,为什么低价股交易起来会很困难呢?比如你要买农业银行(日收盘3.17元),假设下一交易日开盘3.16(买一)/3.17(卖一),实际交易你会发现,低价股的盘口很少动的,因为动一下就是0.01/3.16 = 32bps就出去了,这个在交易过程中太难忍受了,要知道有时候Alpha策略一天还不一定能赚32bps呢。所以如果你一直挂在买一,就面临交易量大无法成交的风险,如果跨过盘口去对手盘成交,Oh god,真是能疼出血来。&br&&br&BUT!在当时,这些都是小问题,因为当时Alpha太高了,或者说,小盘因子的Alpha太高了。所以,接下来,回测时间的问题就来了。&br&&br&&b&B. 2014年10月-2014年12月(Alpha策略痛苦的回忆)&/b&&br&其实这波小盘的强势从2013年或者说2012年就开始了,Alpha策略在这几年的回测动辄40~50%的收益率,其实大部分Alpha策略在年是不好的,但是由于08、12、13的高收益的提升,它们往往被忽略了。这个时候,现在已经众所周知了,市场开始转向了。&br&&br&其实回过头来看,除了量化投研人员之外,主动投资研究的人士早就看到了这次大牛市的到来,而量化投资的童鞋成天与数据、模型、代码和论文打交道,本身的市场敏感性相较而言则要差很多,而且大部分做Alpha的朋友是不喜欢或者是厌恶Beta的,这种厌恶来源于保守,也来源于Beta很难用量化看懂。&br&&br&于是,大家看到,金融股开始狂飙,大小盘转换开始加速,基差开始急剧拉升。犹记得当时我看见Alpha策略那触目惊心的亏损的时候,真心佩服那些能够坚持账户市值中性的大佬们。虽然策略本身的缺陷是显著的,但是在那样环境下的坚持,我认为是这对自己投资理念的坚持。&br&&br&这个阶段其实就是市场给Alpha策略研发人员上的一课:应该说,量化策略本身(如包含统计学习特性)和量化策略开发人员是具有很强的学习市场能力,但当你从未见过、考虑过、测试过这样的市场状况时,你无法保证量化策略的成功。这是量化天生的缺陷,它是数学、是统计、是基于过去对未来的预测,当你需要它预知它从未见过的事物时,这几乎是不可能的。&br&&br&总结下来,这段时间,Alpha的失败有几大原因:&br&一、由于市场特性的变化、大小盘风格发生大逆转、流动性偏好发生大逆转。&br&二、由于IF本身的结构特征,在金融股狂涨时,如果调仓频率低,由于市场涨跌,会自动产生市值敞口、行业敞口。&br&三、基差的急剧拉伸带来的巨大浮亏。&br&&u&这几个原因并不是独立的、而是相辅相成的。&/u&&br&&br&所以,这一段痛苦的经历,对Alpha策略来说,也是涅槃重生后的宝贵财富,当然,你得能活下来,不少Alpha策略当时已经被清盘了。&br&&br&&b&&u&C. 2015年股灾之后(狂欢之后的负重者)&/u&&/b&&br&股灾之前的2015年对Alpha策略是美好的,简直太美好了,半年,很多的基金或产品轻轻松松录得50%以上的收益。然后就是雪崩了,然后就是监管介入,提高保证金,限制交易手数,期指流动性大跌。目前期指的流动性差不多是股灾之前流动性的百分之一。&br&&br&但是好在中证500期货(IC)的推出很好的解决了沪深300期货本身的结构性问题,使得Alpha策略面临更少的市场风险和风格风险,从而能够更好的挖掘“真正”的alpha。&br&&br&但是深度贴水的问题就来了。个人观点,这种深度贴水,是对做多期指时流动性缺陷、政策限制缺陷等问题的补偿,在监管不发生改变的前提下,可能是一种“Normal Backwardation”。这种深度贴水带来两个困难:一、如果在深度贴水下建仓,一旦基差收窄,账户经常要面对2-3%的回撤;二、移仓成本太高。因为市场多头套保需求多,而投机多头又受到限制,所以一旦需要换仓时,移仓成本会非常高,IC近月合约通常都在3%左右甚至往上,这意味着,如果一年换仓12次,Alpha一年得挣36%以上才能勉强避免由换仓导致的亏损。&br&&br&&u&&b&最后,策略的转向:&/b&&/u&&br&现在,很多的Alpha策略开始探求其他的突破,这些方向是Alpha进步的动力,比如:&br&一、放开行业中性、市值中性的约束,用量化方法学习提取市场特征,动态调整。&br&二、结合CTA策略、结合场外期权产品、结合期货纯多策略等等;&br&三、新的数据源,也意味全新的Alpha来源。
谢题主的问题,有幸一直在国内做这方面的投资研究,希望借此与大家进一步交流。 首先我想说一说在Alpha策略的研究中,一些通常的设置: 基差的不可预测性: 如果大家有耐心做过关于基差预测的研究,就会发现在实际研究和投资过程中,预测基差是非常困难的一…
第一要对技术类的工作有兴趣,对数学和编程相关的工作不排斥。做到这一点已经很不容易,在我认识的人里,大部份人都对这种工作没什么兴趣。特别是江湖上还流传着做技术只能到三十岁,以后一定要转管理之类的传言。但是要把 Quant 需要的手艺活学全了,多半你要读个 PhD,毕业可能已经快30了,还得进入业界锻炼几年,30以后可能才是真正能创造价值的时候。那时如果你突然表示自己其实对搞这些技术没有兴趣,很难说不是一件尴尬的事情。&br&&br&能够做一些技术工作的人里,又包括了只喜欢纯数学做理论,和只喜欢写程序这样的人。或许前者更适合留在大学教书,后者不如去互联网公司。但要做 Quant,你应该对两者都有一定的热情。&br&&br&第二要对金融市场有兴趣。技术做的好的人一般选择也比较多,能建模能编程的人去别的科技行业也能找到不错的工作,单纯从收入上来说我不觉得 Quant 这一行就一定比其他行业有优势。但市场本身是一个绝对独特的存在,做 Quant 的人肯定是对市场的兴趣远超过去研究高能物理或是人脸识别。&br&&br&也许有些人喜欢把研究市场误读成赚大钱。我觉得世界上有很多事情,比如说数学定理或是物理定律,或者是一段程序,是千真万确亘古不变的东西,但是唯独赚大钱这件事,根本没有任何定理保证你如何之后就能成功。而且你知道过去一个月最受世人关注的那位姓马的老板既不搞数学也不写程序。所以我建议不要舍本逐末,赚钱这件事由上帝决定,选择做自己感兴趣的事却可以自己决定。&br&&br&至于一天的生活,我想世界变化这么快,这种事情实在是微不足道。要不要从事这个职业,最重要的是上面说的那两个条件,其他的事情相比之下都是细枝末节了。
第一要对技术类的工作有兴趣,对数学和编程相关的工作不排斥。做到这一点已经很不容易,在我认识的人里,大部份人都对这种工作没什么兴趣。特别是江湖上还流传着做技术只能到三十岁,以后一定要转管理之类的传言。但是要把 Quant 需要的手艺活学全了,多半…
谢邀。&br&&br&这个问题很有意思。这中间的区别更多的是历史遗留问题,并且来源于学术上的流派不同。&br&&blockquote&&b&多因子资产定价模型只是对定价核(Pricing Kernel)的线性逼近,ICAPM,APT和Fama-French是三个最流行的分支。&/b&&/blockquote&&br&先列个小提纲吧。心急的人可以跳过第1部分和第3部分。&br&&ol&&li&定价核(Pricing Kernel)和边际消费效用增长率 &/li&&li&多因子模型是定价核的线性逼近&/li&&li&ICAPM&/li&&li&APT&/li&&li&Fama-French&/li&&/ol&&br&&b&1.定价核(Pricing Kernel)和边际消费效用增长率&/b&&br&在一个经济体里,投资者配置资产的目的是为了最终获得财富,而财富最后用于消费,消费产生效用(utitlity)。可以证明,对于任意的资产,总是满足下面的关系&br&&br&&img src=&///equation?tex=p_t+%3D+%5Cmathbb%7BE%7D%5Bm_%7Bt%2B1%7D%28%7Bp_%7Bt%2B1%7D+%2B+d_%7Bt%2B1%7D%7D%29%5D& alt=&p_t = \mathbb{E}[m_{t+1}({p_{t+1} + d_{t+1}})]& eeimg=&1&&&br&&br&即,在&img src=&///equation?tex=t& alt=&t& eeimg=&1&&期的资产价格是&img src=&///equation?tex=t%2B1& alt=&t+1& eeimg=&1&&的价格和红利之和的折现。由于下一期的价格和红利的数值都是不确定的,所以我们对其取期望。而这个用来折现的函数&img src=&///equation?tex=m_%7Bt%2B1%7D& alt=&m_{t+1}& eeimg=&1&&本身也是一个随机变量,一般称作stochastic discount factor(SDF)或者更流行地被称作&i&定价核(Pricing Kernel)。&/i&&br&学术界流行的观点是,任何资产定价模型只是CCAPM(&a href=&/question/& class=&internal&&CCAPM 模型和 CAPM 模型的关系是什么? - 金融学&/a&)的一个特例而已。在CCAPM中,定价核可以被写成一个关于边际消费效用增长率的关系式&br&&img src=&///equation?tex=m_%7Bt%2B1%7D+%3D+%5Cbeta+%5Cfrac%7Bu%27%28c_%7Bt%2B1%7D%29%7D%7Bu%27%28c_t%29%7D& alt=&m_{t+1} = \beta \frac{u'(c_{t+1})}{u'(c_t)}& eeimg=&1&&&br&其中&img src=&///equation?tex=%5Cbeta+%5Cin+%280%2C1%29& alt=&\beta \in (0,1)& eeimg=&1&&是一个主观折现率,它的数值越大则下一期发生的事件在决策者的心中越重要。&img src=&///equation?tex=u%27%28c_t%29& alt=&u'(c_t)& eeimg=&1&&是边际消费效用。&br&&br&&br&2.&b&多因子模型是定价核的线性逼近&/b&&br&在现实中,由于投资者的效用函数的具体形式是不确定的,所以我们很难直接计算定价核。在这个情况下,我们可以假设定价核可以被下面一个&i&线性关系式逼近&/i&。&br&&img src=&///equation?tex=m_%7Bt%2B1%7D+%3D+a+%2B+b%27+f_%7Bt%2B1%7D& alt=&m_{t+1} = a + b' f_{t+1}& eeimg=&1&&&br&这时候我们可以证明资产收益&img src=&///equation?tex=R_%7Bt%2B1%7D& alt=&R_{t+1}& eeimg=&1&&的期望满足&br&&br&&img src=&///equation?tex=%5Cmathbb%7BE%7D%5BR_%7Bt%2B1%7D%5D+%3D+%5Cgamma+%2B+%5Cbeta%27+%5Clambda& alt=&\mathbb{E}[R_{t+1}] = \gamma + \beta' \lambda& eeimg=&1&&&br&&br&其中&img src=&///equation?tex=%5Cgamma& alt=&\gamma& eeimg=&1&&是一个常数,&img src=&///equation?tex=%5Cbeta& alt=&\beta& eeimg=&1&&和&img src=&///equation?tex=%5Clambda& alt=&\lambda& eeimg=&1&&是两个&img src=&///equation?tex=p& alt=&p& eeimg=&1&&维度的向量。&img src=&///equation?tex=%5Cbeta& alt=&\beta& eeimg=&1&&就是我们常说的&i&贝塔&/i&,它是资产收益对因子的&i&敏感性&/i&,而&img src=&///equation?tex=%5Clambda& alt=&\lambda& eeimg=&1&&是因子的数值。&br&&br&&b&3.ICAPM&/b&&br&最先得到多因子定价模型的应该属于Merton(1973a)的ICAPM(&a href=&/question/& class=&internal&&ICAPM 和 CAPM 的关系是什么? - 金融工程学&/a&),虽然Merton本人只是想要拓展已有的CAPM,但他最后得到的资产收益公式恰好就是一个多因子模型,如下&br&&br&&img src=&///equation?tex=%28%5Cmathbb%7BE%7D%28R%29+-+R_f%29+%3D+%5Cbeta_m%28+R_m+-+R_f%29+%2B+%5Csum_%7Bi%3D1%7D%5En+%5Cbeta_i%5Eh%28%5Calpha_i%5Eh+-+R_f%29+& alt=&(\mathbb{E}(R) - R_f) = \beta_m( R_m - R_f) + \sum_{i=1}^n \beta_i^h(\alpha_i^h - R_f) & eeimg=&1&&&br&&br&其中&img src=&///equation?tex=R_m& alt=&R_m& eeimg=&1&&同CAPM一样是market portfolio的收益,而后面几项带&img src=&///equation?tex=h& alt=&h& eeimg=&1&&的是Merton所定义的&i&对冲项&/i&(hedge),&i&它们被用来对冲经济环境的变化。&/i&这些能够用来刻画一个经济体的运行状态(经济增长\衰退,信贷扩张\收缩,等等)的变量被称作&i&状态变量&/i&(state variable)。&br&&br&自然而然地,在ICAPM中,选择的因子主要是宏观经济变量,因为它们能够刻画目前的经济状态或者能够预测未来的经济状况。从直观上很容易理解,宏观经济会影响到资产的收益状况,所以它们当然应该成为定价因子。&br&&br&&b&4.APT&/b&&br&Ross(1976)中文称作套利定价理论,即APT。APT首先承认可能存在不止一个定价因子,像CAPM那样的单因子模型在现实中不足以令人满意,这篇论文的一个重要贡献就是让大家开始系统地考虑多因子定价模型的可能性。&br&&br&Ross假设资产收益满足下面三个等式(下面的每个等式都是关于矩阵和向量的等式,&img src=&///equation?tex=%5CSigma& alt=&\Sigma& eeimg=&1&&是一个对角正方矩阵)&br&&br&&img src=&///equation?tex=%5Cbegin%7Beqnarray%7D%0AR+%26%3D%26+a+%2B+b+%27+f+%2B+%5Cepsilon%5C%5C%0A%5Cmathbb%7BE%7D%5B%5Cepsilon%7Cf%5D+%26%3D%26+0%5C%5C%0A%5Cmathbb%7BE%7D%5B%5Cepsilon+%5Cepsilon%5D%27++%26%3D%26+%5CSigma%0A%5Cend%7Beqnarray%7D& alt=&\begin{eqnarray}
R &=& a + b ' f + \epsilon\\
\mathbb{E}[\epsilon|f] &=& 0\\
\mathbb{E}[\epsilon \epsilon]'
&=& \Sigma
\end{eqnarray}& eeimg=&1&&&br&&br&注意到这里的&img src=&///equation?tex=R& alt=&R& eeimg=&1&&没有取期望,而&img src=&///equation?tex=%5Cepsilon& alt=&\epsilon& eeimg=&1&&作为非系统风险用来解释不能被因子&img src=&///equation?tex=f& alt=&f& eeimg=&1&&所解释的资产收益波动。剩下的两个条件类似于OLS中的要求,首先是非系统风险是独立于系统性风险的,其次非系统风险彼此之间不会相互影响,所以&img src=&///equation?tex=%5CSigma& alt=&\Sigma& eeimg=&1&&是一个对角矩阵。&i&从实际操作上来说,APT很像是统计学上的PCA。&/i&在这样的情况下,非系统风险可以通过持有分散化投资的资产而消除掉。&br&&br&紧接着,Ross证明了,为了保证市场上没有套利的可能性,一个足够分散的资产组合中的资产收益应该满足&br&&img src=&///equation?tex=%5Cmathbb%7BE%7D%5BR%5D+%3D+%5Cgamma+%2B+%5Cbeta+%27+%5Clambda& alt=&\mathbb{E}[R] = \gamma + \beta ' \lambda& eeimg=&1&&&br&这就跟第二部分里的多因子模型的一般形式长得一模一样了。&br&&br&但是Ross的APT的理论价值要大于实际应用价值,因为Ross虽然证明了如果存在定价因子并且定价核是一个因子的线性函数,那么无套利条件就可以保证得到一个APT模型,&i&但是Ross却不知道这些定价因子具体是什么&/i&。既然如此,又怎么检测APT到底有没有用,具体又怎么使用APT呢?学术界的对手当然不会放过这个机会。下面两篇论文的标题让我直接笑出了声:&br&Shanken(1982)&br&&img src=&/v2-acdb2dc5f63caea9ab4be_b.png& data-rawwidth=&663& data-rawheight=&260& class=&origin_image zh-lightbox-thumb& width=&663& data-original=&/v2-acdb2dc5f63caea9ab4be_r.png&&Dybvig, Ross(1985)&br&&img src=&/v2-504b13e32fbc5d88537f2d_b.png& data-rawwidth=&694& data-rawheight=&198& class=&origin_image zh-lightbox-thumb& width=&694& data-original=&/v2-504b13e32fbc5d88537f2d_r.png&&学术界对于APT的研究兴趣在八十年代一直很高涨,但是两方谁也难以说服谁,因为即使找到一个可以用来做定价的多因子组合,也很难证明这些因子就是对的,即使这些因子是对的,还需要证明定价核是这些因子的线性函数。难。&br&&br&5.&b& Fama-French&/b&&br&到了1993年,Fama和French采取了完全不同的方式来解释资产的收益。他们既没有假设什么理性投资者和关于人生的投资组合选择问题,也没有假设市场中不存在套利的机会和多因子。他们的论文简要来说就是,“&i&别废话了,我们直接来run regression吧&/i&”。由于丢掉了理论的包袱,自然他们的模型产生的数据拟合结果比之前的CAPM和APT或者ICAPM都要好得多。&br&&br&Fama-French起源于两个被大家发现的定价现象:&br&&ol&&li&小市值的股票平均收益率更高&/li&&li&低市净率(P/B)的股票收益率更高(低市净率的一般被当作&i&价值型&/i&股票,反之则为&i&成长型&/i&股票)&/li&&/ol&&br&之后Fama-French通过公司金融的数据把股票按照市值还有市净率的高低分隔成25个投资组合(市净率从高到低5档,市值从高到低5档)跑了回归,发现..显著。好的搞定。他们得到了下面的多因子模型&br&&br&&img src=&///equation?tex=%5Cmathbb%7BE%7D%5BR%5D+%3D+R_f+%2B+%5Cbeta_m%28R_m+-+R_f%29+%2B+%5Cbeta_s+SMB+%2B+%5Cbeta_h+HML+& alt=&\mathbb{E}[R] = R_f + \beta_m(R_m - R_f) + \beta_s SMB + \beta_h HML & eeimg=&1&&&br&&br&其中SMB = “small minus big”,即市值小的公司组成的投资组合回报与市值大的公司组成的投资组合回报之差;而HML = “high minus low”,是账面价值比较高(注意这是B/P比值,是市净率的倒数)的公司组成的投资组合回报与比值较低的公司投资组合回报之差。&br&&br&&i&由于Fama-French缺乏严谨的经济学假设,立马就受到了很多人的攻击&/i&。比如Fischer Black当年(1993)就写了一篇论文批判FF的论文只不过是data-mining罢了,这个批评直到今天仍然不绝于耳。遥想1993年Black的身体状况已经很差了,仍然要呕心沥血对这篇论文提出批评。&br&&br&但是随后几年Fama和French一连发了好几篇论文,用数据证明了&i&三因子模型在长期,不同的国家,都适用&/i&。至此FF-3 factor model一时间变得很受欢迎了。这有很多影响。一方面,实证金融学一下子就把做金融理论的同行打趴在地上,Fama-French不仅提供了结果,更提供了一整套研究的方法,用一些反对者的人来说,data-monkey都可以发现一个新的定价因子。一时间因子模型如雨后春笋般变得到处都是,学术界现在都有超过300个因子了。另一方面,多因子模型突然变成了一项可以学习的科技,你不需要一个经济学家,只需要一个能熟练操作统计软件的人替你不停地找因子就好了。Fama-French的三因子已经能够解释90%的资产个体收益差距了,剩下的因子再错也不至于产生太大的损失。相应地,quant equity公司也是成批次地涌现,一时间active portfolio management把passive portfolio management踩在了脚下。虽然最近几年学术界和业界都开始相应地做出调整,但是无法否认Fama-French的三因子模型是划时代的。&br&&br&谁叫French懂得什么叫&i&市场营销&/i&呢?(我绝对是在夸French) 在学术界的同行都不愿意分享自己的数据和代码的时候,你只需要点击一次鼠标,就可以直接下载French替你算好的结果&br&&a href=&///?target=http%3A//mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kenneth R. French&i class=&icon-external&&&/i&&/a&&br&你说引用量和影响力能不上去吗?&br&&br&&br&&b&参考文献&/b&&br&&ol&&li&Black F. &b&Beta and return&/b&[J]. The journal of portfolio management, ): 8-18.&br&&/li&&li&Campbell J Y, Lo A W C, MacKinlay A C. &b&The econometrics of financial markets&/b&[M]. Princeton, NJ: princeton University press, 1997.&br&&/li&&li&Cochrane J H. &b&Asset Pricing:(Revised Edition)&/b&[M]. Princeton university press, 2009.&br&&/li&&li&Fama E F, French K R. &b&Common risk factors in the returns on stocks and bonds&/b&[J]. Journal of financial economics, ): 3-56.&br&&/li&&li&Merton R C. &b&An intertemporal capital asset pricing mode&/b&l[J]. Econometrica: Journal of the Econometric Society, 7.&br&&/li&&li&Ross S A. &b&The arbitrage theory of capital asset pricing&/b&[J]. Journal of economic theory, ): 341-360.&/li&&/ol&
谢邀。 这个问题很有意思。这中间的区别更多的是历史遗留问题,并且来源于学术上的流派不同。 多因子资产定价模型只是对定价核(Pricing Kernel)的线性逼近,ICAPM,APT和Fama-French是三个最流行的分支。 先列个小提纲吧。心急的人可以跳过第1部分和第3部分…
既然有100多人关注想知道答案,我就抛块砖好了...&br&&br&&a href=&/people/song-si-yuan& class=&internal&&宋思源&/a&老师说他知道的动量策略基本都被淘汰了,我挺好奇国内会不会不一样,下午端午放假没事我翻了翻上次做的作业,又码了几行代码,用A股市场的数据跑了跑,感觉结果(写在后面)还可以啊,然后就有了这篇答案...&br&&br&&img src=&/cdab84f0d4dcc7f572fae8_b.jpg& data-rawwidth=&1440& data-rawheight=&861& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&/cdab84f0d4dcc7f572fae8_r.jpg&&&br&不过做出来的毕竟是paper profit...后面会多写写我能想到的paper profit可能有的缺点。&br&&br&For those who want to save time...&br&&br&&img src=&/1caeebd76a0c4f70b1cb5_b.jpg& data-rawwidth=&927& data-rawheight=&478& class=&origin_image zh-lightbox-thumb& width=&927& data-original=&/1caeebd76a0c4f70b1cb5_r.jpg&&&br&&br&&b&&u&1.数据说明&/u&&/b&&br&&br&&br&我选用了日-日(数据库不给力真的桑不起...延迟都能有1个月),A股市场上&b&&u&所有有交易记录&/u&&/b&的3112只股票的&b&&u&周收益&/u&&/b&数据。&br&&br&(为什么选A股?因为我assume 题主说的&在中国&就是指买A 股...)&br&&br&&img src=&/64a45ec30c426df0601461eaed9f03eb_b.jpg& data-rawwidth=&272& data-rawheight=&235& class=&content_image& width=&272&&&br&&br&大概有8W多条,只选用了公司代码,日期,和周收益三个数据&br&&br&&img src=&/273197edefe6a55a2d98da8df60858d6_b.jpg& data-rawwidth=&266& data-rawheight=&283& class=&content_image& width=&266&&&br&为什么只做了六七个月?因为我不太想虐待开着虚拟机跑SAS的小MBA...&br&&br&因为是周数据,其实也差不多了嗯。&br&&br&为什么选周数据?明明大家做动量不都是用月数据嘛....因为我有点想模拟散户的心理..后面会说。&br&&br&&u&&b&2.策略简述&/b&&/u&&br&&br&搜了几篇论文搞清楚了动量策略指什么,其中主要参考了论文[1]里面的方法,选用mid-return当基准计算超额回报的想法来自于论文[2]。&br&&br&Long story short &b&大致的思路&/b&是这样的...&br&&br&动量策略的拥簇者认为,市场有可能不是完全有效的&br&&br&(尤其是在天朝,有时候用a股数据做CAPM检验,最后得出的无风险收益率齐刷刷是负的,真是无语凝噎..)&br&&br&因为市场的不有效,股价对信息的反应可能是迟钝的,即今天涨的股票明天可能会继续涨,就像一列行驶的火车一样,停下来或者加速都需要时间。(如果假设反应过度,那就叫反转策略)&br&&br&下面是详细点的思路:&br&&br&&img src=&/f6e05cd26c67d299f7a42_b.jpg& data-rawwidth=&765& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&765& data-original=&/f6e05cd26c67d299f7a42_r.jpg&&(上图是我随手用ppt画的,中文字体找不到太好看的,索性用英文了,有人认识这字体么...挺有名的)&br&&br&就是:&br&&br&1)分析n-k 到 n 个周 (Period A-B) 的股票回报,选出回报最好的一组(winner),回报一般的一组(mid),回报最差的一组(loser)&br&&br&2)
分析 n 到 m+n周 (Period B-C) 的 winner , loser ,mid 的回报&br&&br&3)分析 n-k+1 到 n+1 个周 (Period A-B) 的股票回报,选出回报最好的一组(winner),回报一般的一组(mid),回报最差的一组(loser)&br&&br&4)
分析 n+1 到 m+n+1周 (Period B-C) 的 winner , loser ,mid 的回报&br&&br&5)
循环往复直到世界(数据)的尽头...&br&&br&6)
换个 k , m 接着跑循环... 我一共做了36组&br&&br&&img src=&/3d17ca76d49a8203220e_b.jpg& data-rawwidth=&470& data-rawheight=&279& class=&origin_image zh-lightbox-thumb& width=&470& data-original=&/3d17ca76d49a8203220e_r.jpg&&(这表下面会用到,暂称为table1好了)&br&&br&(有兴趣的同学可以到下面附注里面找代码来看,花了俩三小时用sas写了200多行,没有进行任何优化)&br&&br&&b&&u&3.结果分析&/u&&/b&&br&&br&说到分析量化策略的结果,我们首先要考虑的肯定是..&br&&br&Trading cost (交易成本)!&br&&br&因为没有做过实盘,不知道A股有没有bid-ask spread,不过我想bid-ask spread 代表的liquidity cost 总是有的(因为你不总能以想要的价格买进卖出..)&br&&br&bid-ask spread 的估计基于论文[4],是纽交所研究部出的:&br&&br&&img src=&/e4eeb25c143d4_b.jpg& data-rawwidth=&643& data-rawheight=&108& class=&origin_image zh-lightbox-thumb& width=&643& data-original=&/e4eeb25c143d4_r.jpg&&&br&最后我先选择了0.21%做spread算了一下(其实券商里面做量化的大概不需要手续费吧...):&br&&br&&img src=&/e2eb5ab76_b.jpg& data-rawwidth=&295& data-rawheight=&48& class=&content_image& width=&295&&&br&&img src=&/3478935caf527a5b64873fcbdb7bbb03_b.jpg& data-rawwidth=&687& data-rawheight=&549& class=&origin_image zh-lightbox-thumb& width=&687& data-original=&/3478935caf527a5b64873fcbdb7bbb03_r.jpg&&&br&横坐标代表table1里面的serial(序号),分别是用不同的selecting-period和holding-period跑出来}

我要回帖

更多关于 tushare 实盘交易接口 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信