为什么回测很理想丰满现实骨感图片,实盘却骨感

拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(39f1f647a16543b3-ua98).
重新安装浏览器,或使用别的浏览器量化交易「回测易.实盘难」如何选择入场时间
“回测易,实盘难”那么(投资者)应该何时实盘跟随某一交易策略?
这里有两种思考行为方式:(赌徒们只会关注第二种)
第一种:如果你是一个研究型的交易者
你会留意策略的每日回报,并会根据一段时期的日回报计算出日回撤的详细情况,然后还会分析收益大小是否是随机分布(可以尝试在EXCEL中计算,如果有需要的话我可以提供方法)。如果收益是随机分布的,那很有可能在出现几次亏损交易后,或者在达到平均回撤峰值后进行投资
-- 如果收益不是随机的(这种情很少出现),那么在投资前,就会等待更大幅度的回撤
--入场投资后,会坚持用策略交易较长的一段时间。其实好的交易员非常清楚他们的策略的背后的数理逻辑,可以去问问他们。
第二种:如果你是一个“想快点赚钱的”类型的个人投资者
面对任何一个显示高回报,
有高胜率的策略权益创出新高的时候,你都将很有可能会马上加入这个策略跟随者的大军。那么你猜,接下来会发生什么?
其实在跟踪或使用一个优秀的交易策略的过程中,只要出现一个很正常的回撤(回调),这类型的投资者就会马上停止该策略,尽快从策略中撤出,想规避掉回撤带来的损失。但可能过了一小段时间之后,策略权益又创新高,这类投资者却只能眼睁睁地看着了。
到这里,我们可以非常明显地知道哪种方式会好些,当然是第一种情况。
麦道夫式的回报
(注:麦道夫深知投资者在高风险和高收益之间会寻求理想的均衡点,因此其投资公司提供的年回报率始终维持在10%-12%,这种回报率相当于或略高于道琼斯30种工业股票的平均增长率,稳健且可信的投资回报率最终导致投资者对麦道夫基金趋之若鹜)
是否会引发巨大的问题?是的,他的确在很长的一个时间周期里,没有一个月是亏损的。在一个被数学,数字完美描述的世界里,即使是一些大型的机构基金也被麦道夫的数字所愚弄蒙骗,因为他们太贪婪和懒惰了。
原则一:没有人能长期百分之百盈利
期权卖方能够唯一具备这个能力,虽然偶尔能够在较长的一段时间不断盈利,但是他们最终还是会被的他们较高风险的-ve
gamma绞杀出局。这仅仅是一个时间问题而已。任何除了长期的波段交易外,低于30次的交易,在统计上来说显的并那么不重要。
原则二:杠杆
资深交易员的格言是,用每次交易承担的风险不超过2%的方式,来保护你的资金池。即使你已经很好地进行了多样化的策略投资,也不能让你避免杠杆的风险。2%这个数字对于某些人而言可能很小。在你具有了更强的策略挑选能力的时候,你可以更激进些...但首先要做好你的基本功。
最后但同样重要的是,要和策略师进行沟通,并尝试发现更多的信息...在你的账户准备进行实盘交易前,如果策略没有TOS认证,了解为什么策略师没有或者不准备tos认证。(TOS认证是策略师用自有资金也在使用该策略进行实盘交易的一个认证,这是C2特有的策略认证标识。)
当然,如果你更喜欢通过交易获得快乐,而不是想要通过交易获得产生长期回报的话,那请忽视这些,并享受这一过程。对于以娱乐为目的交易者说来,我认为
:一切交易对他们来说都是好的交易。
如果按照原则1来操作,等待更大的回撤出现时再进场,那么你可能会在等待中丧失一系列有利可图的交易。或者,假设当前的回撤已经足够大了,于是你开始使用策略,并且产生了一系列亏损的交易,那么,你正好赶上了新的历史最大回撤。
我会观察,看一下开发者如何从一个深度回撤中恢复过来,并且我需要看到更多的数据。我会观察一个更长周期的表现。即使一些策略师已经交易了很长的一段时间,但有时1个错误就可能吞噬他所有的利润。所以你可想象,如果我们谈论的是一个交易时间不长的新人策略开发者会是一种什么情况。
其它参与者的讨论观点:
参与者x君:
我认为总是会有这样的可能性发生即:你会错过一系列赚钱的交易。但此文的主要观点是,进行系统地投资,了解你正在交易中可能的机会。尤其当你决定对某个策略加大持仓时,这点变得极其重要。送上最好的祝福,并希望你的交易成功。
参与者y君:我认为作者说到了点上,还有一些其他情况,则取决于投资者是什么样的投资目标了:比如在策略免费试用期间启动策略交易,赚点小钱或者可以选择保守型的策略进行长期投资,亦或留一部分资金用于高回报、高回撤,甚至是亏损时加倍开仓的策略。
什么是自动交易?自动交易是让您不需要进行任何手动交易就能跟随i量化海外专场-(C2)交易策略系统的技术。我们的自动交易技术让您能够设置任何数量的C2策略系统的自动交易,您可以离开您的电脑,所有操作都是自动的。您随时能够在Collective2的自动交易控制面板中自由管理持仓、下单,同时您也可以在C2的自动交易控制面板中查看策略的表现。
——互动——
#今日话题#
你认为如何选择实盘跟随某一交易策略的时间点?
参与方式:在文末评论区写出你的看法或者故事,小i君会选出以为最佳回复者,送出Collective2创始人Matthew
Klein的书籍《惊变》一本。
截止时间:日(周三)中午12:00
公布时间:日(周三)i量化微信订阅号
内容简介——一向在国际金融市场上游刃有余的基金经理蒂莫西遇到了大麻烦,他在对日元的卖空赌博中遭到惨败,他的基金损失了总价值的三分之一。投资人将近三千万的财富被抹掉了,他的公司面临破产的危险。雪上加霜的是,他深爱的妻子凯瑟琳突然自杀。连蒂莫西自己都有些奇怪,在这样焦头烂额的日子里,他最关心的居然是死去的妻子账户里十五万美元的去向......
点击访问collective2,免费体验智能交易
产品咨询|商务合作|读者投稿|版权交易
微信:ilianghua2016
电话:400-997-3668
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。量化交易中所谓「回测易,实盘难」的问题怎么解释?-石投金融
下载客户端
三步轻松贷款,贷款利率低
量化交易中所谓「回测易,实盘难」的问题怎么解释?
怎么看待量化交易中关于“做出一套回测赚钱的系统很容易,实盘赚钱的系统很难”这句话。是指回测时候使用了未来函数,还是过度优化,或者是实盘交易中会产生滑点问题导致回测的结果不准确?求解答。
匿名用户 |
浏览次数:229
常见类似问题
回答共有8条
首先,要看策略是通过市场运行的原理推导出来的还是通过过去市场运行的历史归纳出来的,相对而言,归纳出来的策略在适应性上更具针对性的同时,也更容易导致归纳出来的策略在以后更容易失效,而从原理出发推导出的策略会稳定些,但是针对性会丧失一些。这是… 显示全部 首先,要看策略是通过市场运行的原理推导出来的还是通过过去市场运行的历史归纳出来的,相对而言,归纳出来的策略在适应性上更具针对性的同时,也更容易导致归纳出来的策略在以后更容易失效,而从原理出发推导出的策略会稳定些,但是针对性会丧失一些。这是从策略的特性上来讲的,具体选择哪一种策略萝卜青菜各有所爱。第二,一些回测和实盘的差异所导致的,比如板上无法成交,三板协议平仓,滑点,延迟等因素,都会使得回测效果好于实盘。第三,参数的过度优化,特别是策略中用于衡量周期或者幅度的参数,如果过度优化,则会出现过度拟合的现象,解决这个问题的方法之一就是进行断代,全历史地,每一年地进行回测优化,综合每年及全历史的结果,根据自己的风险偏好选择一个适当的参数。另一个方法是通过参数优化的结果考察策略的可靠性,假如参数优化后形成高原,所谓高原就是临近的一些参数使用的结果表现都差不多,那么这样的策略往往实盘表现更接近于回测,如果形成的不是高原而是一个个山峰,这个值表现很好,但临近的值表现却很差,这样的策略就难以做到实盘跟回测类似。第四,拔电源的冲动,历史数据回测往往很快,在回测的时候亏损根本看不到,只给了你一个赚钱的结果,但实盘不同,连续亏损,资金回撤,等等会给人带来痛苦感,开始怀疑,并且持续时间有可能很长,长达两三年的都有可能,这时候你就坚持不住想拔电源了。暂时想到这么多,如果以后有新的感悟或者发现现有的错误,再来更新。共勉。
回答于日 00:00
过去行情是确定的,未来行情是不确定的, 对过去行情有效的,未来行情不一定有效, 一点浅见, 显示全部 过去行情是确定的,未来行情是不确定的,对过去行情有效的,未来行情不一定有效,一点浅见,
回答于日 00:00
谢邀。 一方面,过去已经发生了,只要往上面去套,总能套出个能赚钱的方法。但这个只是针对过去的。未来总会发生各种意想不到的情况。 另外,简单的用程序回测,会忽略一些实际的情况,例如题主说的滑点,在例如开盘就涨停/跌停,实际操作根本无法进场,也… 显示全部 谢邀。一方面,过去已经发生了,只要往上面去套,总能套出个能赚钱的方法。但这个只是针对过去的。未来总会发生各种意想不到的情况。另外,简单的用程序回测,会忽略一些实际的情况,例如题主说的滑点,在例如开盘就涨停/跌停,实际操作根本无法进场,也就没意义。最后,即使回测都是合理的、考虑的各种实际的情况,但知道这个和按这个做是两码事。海龟里面已经说清了,同样的系统,有人就是做不到。
回答于日 00:00
这个涉及到量化系统的时效性。 一套量化系统可能会满足过去几年的市场风格。然而市场风格时时在切换,一套在以前行之有效的系统,未必在未来可以继续赚钱。 显示全部 这个涉及到量化系统的时效性。一套量化系统可能会满足过去几年的市场风格。然而市场风格时时在切换,一套在以前行之有效的系统,未必在未来可以继续赚钱。
回答于日 00:00
回测易~是因为你都已经知道事情的结果 从果去推因只要你能自圆其说就能成~ 好比一个人已经成为了成功人士~ 你可以说他成功的原因是他勤奋善良乐于助人广积阴德 好比你当了皇帝再出版个四书五经、毛泽东思想等等 你再找一个勤奋善良乐于助人广积阴德的因~ 却… 显示全部 回测易~是因为你都已经知道事情的结果从果去推因只要你能自圆其说就能成~好比一个人已经成为了成功人士~你可以说他成功的原因是他勤奋善良乐于助人广积阴德好比你当了皇帝再出版个四书五经、毛泽东思想等等你再找一个勤奋善良乐于助人广积阴德的因~却不一定能得到一个同样的果好比你精通四书五经、毛泽东思想却当不了皇帝其实这就是军队演习跟实战有啥区别的问题这种问题实在问的太多了~都不知道从哪里说起了远的咱就不扯了~我就总结一下回测与实战发生差别的各种原因吧1、回测模拟的误差1)回测中有意无意的未来函数(有意的叫骗子,无意的叫傻子)2)交易成本估计误差~实盘有滑点~而回测对滑点可能估计不足3)实盘主力合约换月时升贴水与理论回测所使用的连续合约数据发生差异(这个误差比一般人想象的要大,不然就不会有跨期套利了)2、实盘执行的误差1)停电、死机、掉线、延迟等不可抗拒性因素2)连续涨跌停板、主力合约交易标的停牌等回测时没估计到的意外事件(10年一遇的黄金跌停)3)人为手动干预(资金曲线半年多无法新高无法忍受停掉策略、或者一笔浮盈太多忍不住止盈)3、历史没法重演~理论统计的误差~技术含量最高的误差~前面两种误差都有办法控制在一定范围内而这类就只能跟着感觉走了~样本内样本外测试?减少参数个数防止过度拟合?参数敏感性测试?参数自适应?呵呵...牛市的规律到熊市就不适用了~而道指100年的数据回测出来的策略也可能在101年失效(或者说你抗不过去)历史重演只是假设~没有规律是静止不变的打战时你用骑兵~我就用机关枪你用机关枪我就打阵地战挖战壕你挖战壕我就用坦克~...很多事物都是不断发展变化的~兵法、哲学、自然科学都是如此策略失效很正常~这本身就是个客观规律~如何排除这种误差那就是客观量化投资中的主观艺术部分了
slevin lee
回答于日 00:00
晚上失眠了,也来回答一下这个问题,上点自认的干货,希望对题主有点帮助。不过有点偏题就是了,睡不着,胡说八道了。 不讨论为啥历史回测容易盈利,但是实盘亏肿的问题,讲讲怎么避免这个问题。 1.实盘和回测最基本的区别是,回测存在虚假交易的问题,导致… 显示全部 晚上失眠了,也来回答一下这个问题,上点自认的干货,希望对题主有点帮助。不过有点偏题就是了,睡不着,胡说八道了。不讨论为啥历史回测容易盈利,但是实盘亏肿的问题,讲讲怎么避免这个问题。1.实盘和回测最基本的区别是,回测存在虚假交易的问题,导致实盘的偏差。为了规避这个问题,我一般都是回测中使用close or open 价格下单,就是说等一根K线走完了才下单,避免在K线中下单,这样测试的结果实盘和回测之间不会出现成交不了的情况。2.上面的答主提到的overfit, 过拟合的问题。对于策略和数据间的overfit, 我建议可以利用加扰测试的办法。就是在原始数据上人工加上一个随机的扰动,再把测试的结果同未加扰的数据测试结果比较,理想的情况是变化很小。这种想法的来源是,如果一个策略确实是一个规律,它就应该是性质良好的,至少是连续的,连续的函数对输入的微小扰动应该有抑制作用,使输出有界。而对于参数的overfit就相对简单,不要选孤立的参数点就行了。3. 关于策略有效性的问题才是大问题,回测挣再多,未来不适用,或者很快失效了,这才是题主提到的问题的关键。确切讲,没啥好办法,或者大家有好办法也不说出来(这算是交易最核心的问题了),呵呵。我来提供点思路:1.测试的数据尽可能多;2.做完回测,做前测, 就是分数据内和数据外测试, 不过对效果持怀疑态度。3. 干货来了, 国外有家公司, trading system lab,这家公司干的活是用遗传算法来搜索好的策略,一般看到交易网站上,前面带TSL的策略都是他家出的。他们提出一个标准来筛选策略,很简单,但应该比较有效,1) 策略在回测中交易次数越多越好;2) 表示策略的程序越短越好。这句话比较模糊,我的理解是表示程序的自动机转移路径数目越少越好;如果一个策略能通过以上各条测试标准,应该能挣钱的概率大一些吧。 O(∩_∩)O~
回答于日 00:00
Data Dredging:同樣的樣本一直重復用到非常多不同模型上, 總會有一兩個模型湊上顯著的結果 設顯著水準 p , 同樣的樣本試了 n 個模型, 那至少有一個模型滿足要求的機率是 1 - (1-p)^n p 代入 0.01 的話, 只要試過的模型數量 n >= 10, 則瞎貓湊上『偽』顯著… 显示全部 Data Dredging:同樣的樣本一直重復用到非常多不同模型上, 總會有一兩個模型湊上顯著的結果設顯著水準 p , 同樣的樣本試了 n 個模型, 那至少有一個模型滿足要求的機率是 1 - (1-p)^np 代入 0.01 的話, 只要試過的模型數量 n >= 10, 則瞎貓湊上『偽』顯著模型的機率就大於 0.34只要資料有重復使用就會造成 Data Dredging, 且多數人看到樣本外測試結果很差, 就會重複用同樣的樣本外資料去配不同的模型, 所以說...樣本外測試沒用, 樣本外測試沒用...減少模型參數也沒用, 減少模型參數也沒用... 已經是統計學中老早就知道的問題, 但量化交易者不少人統計功底不扎實, 前仆後繼來搞回測解決方法很簡單, 避開那些使用資料量有限的策略, 只關注那些能不斷有新資料產生來驗證的策略, 每個資料只能使用『一次』就要丟棄不用至於那些所謂的回測結果, 則無從知道那到底是試過多少模型的結果, 我想也沒人會誠實回報, 只能通通無視
回答于日 00:00
不同风格的策略对于回测的要求是不同的,比如对于多因子选股或者趋势策略等,需要注意的几点是: 1. 区分好样本内数据和样本外数据,这个和机器学习很类似,样本内数据用于训练,样本外数据用于校验。这样做的目的是为了避免过拟合陷阱。 2. 收益的分布,看… 显示全部 不同风格的策略对于回测的要求是不同的,比如对于多因子选股或者趋势策略等,需要注意的几点是:1. 区分好样本内数据和样本外数据,这个和机器学习很类似,样本内数据用于训练,样本外数据用于校验。这样做的目的是为了避免过拟合陷阱。2. 收益的分布,看看你回测后所有交易的收益分布,看看你的收益来源是少数的几次大的收益还是来源多次的小的收益。来源于大的收益,你的收益波动性就很大,实盘往往会达不到你的效果。3. 参数的稳定性。如果你某个参数过敏感,随便调整下就对收益影响很大,那你实盘的情况和模拟盘也有很大可能会有出入。这类策略严格来说,避免了一些常见的坑,还是比较容易做到回测和实盘类似的。对于高频交易来说,回测和实盘的差距就更大了,需要注意的点就更多了,简单列出几个吧:1. 数据的精度,基本来说,这类策略需要是全部行情严格按照时间戳来回放,分钟级别的都太粗糙了。2. 滑点问题,实盘很难避免滑点,你要估计出一个滑点的数字,在回测里扣除。3. 行情的延迟问题,在回测里行情是没有延迟的,而在实盘行情必然有延迟,这部分也会对收益有很大影响。4. 成交问题,有些策略,比如被动做市商策略,你需要自己模拟订单的撮合成交情况,这部分和实盘往往有很大差距,你需要尽可能的去近似。而你采用交易所提供的模拟撮合环境的话,基本上是不可信的。5. 在实盘因为延迟的缘故,你还会遇到反向选择的问题,你也需要去评估实盘和回测这方面的差距。总之,在高频交易策略中,实盘能达到回测60%的效果,就是回测做的很成功的了。
回答于日 00:00
对以上回答还不满意?您可以想我们的的专家咨询您的问题
*此回答内容仅代表网友个人观点供用户参考及研究用途,不构成任何投资理财建议
贷款相关计算器
大家都在问
热门银行贷款利率?责任编辑:zwl
净额(亿)
同花顺财经官方微信号
手机同花顺财经
专业炒股利器
同花顺爱基金
您有什么问题想要告诉我们?
留下您的联系方式,以便我们向您反馈结果
提交成功,感谢您的支持!
收益宝·活期
7日年化收益率
理财宝·短期
7日年化收益率我也想躺着收钱:一个比特币套利系统的实现
我的图书馆
我也想躺着收钱:一个比特币套利系统的实现
记得在很早的时候就在知乎日报上看过青铜时代:中本聪之惑这篇文章,当时的我完全没有搞懂作者在说什么,只是觉得很厉害,于是在添加完收藏之后也没有在多想这件事,也没有精力去想这件事。大约在11月的时候,我终于忙完了手头所有的事情,一下子闲了下来,再一次重新整理收藏夹的时候再次发现了这篇文章,于是我又聚精会神地读了一遍,这次依然没有搞懂整个系统是怎么盈利的,但是我记住了一个数字:280%,作者估计的系统年化利率,虽然没有理解这篇文章的意思,但是我还是着手开始设计一个平台,因为即使因为各种原因,只能达到作者十分之一的收益率,28%,也是极其可观的。平台的第一步肯定是先抓去一部分数据进行分析,同时这也是这个系统中最简单的一个部分,当时发现中国三大比特币交易平台 火币,btcc,okcoin 都有开放的查询接口,而且接口比较稳定,所以没有必要自己去页面爬取数据了,同时我也发现,各个平台也开放了交易接口,虽然不是特别稳定,稳定性也可以凑合凑合,这是我和青铜时代:中本聪之惑作者所处环境非常不一样的第一点:01 技术门槛大幅度降低第二个不同点在抓取三个平台数据开始后不久就显现出来,&img src="/DownloadImg/7/.jpg" data-rawwidth="640" data-rawheight="322" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-8b32dc033b08b4fed54f_r.jpg"&上面这张图是火币和btcc的价差实时监控,可以发现的是价差非常非常的小,接近没有,而且波动幅度也不是很大,总结起来就是:上面这张图是火币和btcc的价差实时监控,可以发现的是价差非常非常的小,接近没有,而且波动幅度也不是很大,总结起来就是:02 套利空间大幅度减小真的是特别大幅度的减小,知乎文章的作者提到的价差空间在几十甚至上百的范围内,而仅仅夏天到冬天,价差就已经缩小到了几乎看不到的地步,非常恐怖。这两个消息一好一坏,一下动摇了我的决心,但是经过大概0.5秒的纠结,金钱的诱惑还是战胜了理性,我决定继续把项目进行下去。由于当时又找了实习,所以白天实习,晚上心情好的时候就写一点,不久抓取平台就完成了,没多少工作量,然后就是漫长的数据积累阶段了,没有一定的数据,我是没法凭空设计一个模型出来的,但是平台在抓取的同时也可以做一些其他的事情,于是我开始恶补一些金融的入门级知识,比如股票的实时成交价格是怎么产生的,order book是怎么一回事,什么是盘口,市价单,现价单,冰山委托都是什么东西,交易所是怎么赢利的,什么是做市商,什么是对冲,这些东西其实都相当入门级,但是对于一个计算机系的学生来说就是天书了。在吃透了这些概念之后,我终于完全理解了套利的操作是怎么进行的:首先在两个比特币交易平台分别部署现金,并且借入一定数量的比特币
在两个平台价差拉大时在价位较高的平台卖出,在较低价位平台买入,确保数额相同
在两个平台价差缩小甚至逆转时再做逆向操作
大家也可以参考一下知乎文章上的“两个苹果”的解释,这三步操作其实描述的就是一个对冲,对冲是一种规避风险的方法,这里被对冲掉的就是比特币本身的价值,也就是说,本来我们在投资比特币本身,通过对冲,我们实际上在投资的是比特币市场之间的价差:&img src="/DownloadImg/7/.jpg" data-rawwidth="640" data-rawheight="328" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-ca55cf2dae3d58bbafb4_r.jpg"&这个行为有一个学术点的名字:统计套利这个行为有一个学术点的名字:统计套利整个统计套利的基石就在于把比特币币值变化的风险给对冲掉,所以我们必须做到以下几点:平台上部署的比特币必须是借来的(或者说是融币融来的)
必须保证价差计算准确,不能有太多的滑点(实际成交价格和意向成交价格的偏差)
同时整个系统的延迟必须做到最小,否则在两个交易所的下单会受到币值波动的影响
但是这里就有一个问题了,投资价差和投资比特币本身有什么区别呢?区别只有一个,就是价差收敛,什么叫价差收敛呢?就是说价差虽然会有变化,但是始终是稳定在某个值附近,实际导致这个现象的原因是不同比特币交易所买卖的实际上是同一个东西——比特币。就像不同地方的麦当劳一样,价格可能会有不同,但总体上这种价差不会发生太大变化,总是在某个值上下变化。利用这个特点我们就可以做出一些有意思的策略了。但是想要对冲掉比特币本身的价值就意味着需要融币,融币意味着每天千分之一左右的利息,就是说如果今天你的策略获得的利润小于千分之一,那么即使你的策略能够产生利润,也是没有价值的。在对比特币的不断了解中,我也发现了比特币的魅力之处:所有交易所全天候24小时交易
国内三大交易所的比特币人民币现货交易完全没有手续费,但是提现的时候会有手续费和延迟
完全没有涨幅和跌幅的限制,也就是说在一分钟之内理论上来说完全有可能1个比特币会变成不如一张厕纸值钱,也可能变得比一吨黄金还贵
监管很少,交易所有整个跑路的风险(参考Mt.Gox)
在收集数据的同时,我也开始了套利平台的一些基础建设,根据设计,平台划分为几个大的并且互相几乎完全独立的模块:抛开比特币本质不谈,比特币交易的这些性质简直就是金融的一朵奇葩,所以比特币交易的数据也是非常有特点,或者说非常有价值的,这也更加激发了我对比特币的兴趣。03 哈勃(hubble)&img src="/DownloadImg/7/.jpg" data-rawwidth="296" data-rawheight="220" class="content_image" width="296"&hubble 模块的计划功能是图形化的数据抓取和展示平台,作用是数据可视化,提供平台的价格和差价的可视化功能。当时的希望是能够通过hubble来目测发现一些市场的基本规律。最后hubble整个是用web2py框架写的,抓取则用的是crontab,提供市场分钟级的数据展示,用来观察市场走势。04 南柯(Nanke)&img src="/DownloadImg/7/.jpg" data-rawwidth="267" data-rawheight="220" class="content_image" width="267"&取名自南柯一梦,作用是市场数据的回测,为了回测方便,我把策略逻辑和框架逻辑分离,最后南柯模块可以直接在网页上编辑和回测策略,并且查看报告。取名南柯其实也是警示自己,回测再美好也是南柯一梦。05 黄粱(Huangliang)计划中南柯的姊妹模块,提供比南柯更精细的回测功能,但是目前并没有开发。06 矩阵(matrix)&img src="/DownloadImg/7/.jpg" data-rawwidth="349" data-rawheight="144" class="content_image" width="349"&是的,矩阵取名自黑客帝国,这个模块很有意思,是一个根据即时交易所价格模拟策略在交易所行为的模块,在南柯初期验证过的策略代码在上线之前都需要经过matrix的模拟,但是matrix目前的功能比较有限,只能模拟交易所的市价单行为,因为市价单只需要再查一遍order book就可以了,但这对于我来说已经足够,matrix还可以模拟交易所的交易延迟和交易失败造成的影响,并且也支持在线编辑策略代码和热加载,热重载,和同时模拟多个策略的行为。但是,matrix这个模块的名字也时刻提醒着我,再真实,也是假的,matrix不能也不可能模拟市场的全部行为,一切以线上为准。实际上也由于种种原因,市场的行为在中高频的情况下也和matrix有相当的差异。07 斯叶特(sjet)&img src="/v2-136d4f4bf9d13b8fbef4b9_b.jpg" data-rawwidth="445" data-rawheight="220" class="origin_image zh-lightbox-thumb" width="445" data-original="/v2-136d4f4bf9d13b8fbef4b9_r.jpg"&先说一下命名吧,卡伦·斯叶特是一款非常老的游戏《homeworld》中库申人的精神领袖,是一个女科学家,把自己嵌入到了库申人的巨大飞船mothership中作为生物cpu,这个游戏也是第一款让我感动的游戏,有兴趣大家可以了解下。把这个传奇作为模块的名字,模块的作用也很明显了:sjet是整个平台的核心,是线上策略运行的地方,也运用了和matrix相近的技术,支持策略脚本的线上编辑和热重载,理论上sjet和matrix的策略脚本可以通用,就是说在matrix经过验证的策略理论上可以无缝直接在线上运行,但是实际操作的时候还是有一些策略需要经过一些小修改才能上线到sjet。还有一些小模块不表08 框架开发中遇到的一些技术问题Q&A如何让程序持续抓取?这个问题有两种解决方案:crontab定时抓取
demon进程中循环抓取
其中hubble模块使用了第一种而matrix和sjet模块使用了第二种。如何实现热加载,热重载python策略脚本?初始化时直接import 策略模块,循环判断策略脚本是否发生变化,如果发生变化,则重新加载,唯一需要注意的一点是在重载是不能直接再次import模块,而要使用python的reload语句。这里还有一点就是由于需要在线上程序运行的时候热重载,所以最好要把策略做成无状态的,就算有状态的话最好也要用文件,或者数据库,或者redis的形式存储下来,否则策略一重载状态就没了。另一个需要注意的地方是由于程序常驻内存,所以不当的策略会导致内存泄漏,稍微注意一下就行。程序需要在两方下单,要是一方失败了怎么办?需要对双方的下单进行事务化处理,但是这种事务和数据库的事务完全不同,而是类似于分布式事务,对于fail的处理需要谨慎,在一次套利开始时纪录下两个市场账户中的比特币分布和期望中交易完成后时称中的比特币分布情况,接下来分别发送两个下单请求,然后锁住整个交易系统,接下来在市场账户中的比特币分布达到成功条件或失败条件时解锁交易系统继续交易,在其他情况下判断交易应该继续进行还是回滚,走相应的逻辑就行。交易受滑点的影响太大怎么办?这个也是目前交易中遇到的最大问题,策略经常在南柯和矩阵中运行非常良好,但是一到sjet就开始亏钱,揪其原因就是滑点太大,这个问题目前来看几乎是无解的,只能设计一些策略来减少滑点造成的损失。目前自动化交易的利润空间有多大?我手头上也没有具体数据,但是就目前这个策略上线这几天的运行情况来看,是一个数学期望大于30%的年化收益率,但是风险(方差)非常大,而且需要更多时间来验证,但是不排除今后设计更好的策略能够提升。为什么使用市价单而不考虑限价单这种不会产生滑点的手段?也考虑过,限价单并不是立即成交的,有可能一直不成交,会大大增加套利事务的复杂性,不是不想用,是没想好怎么用才合适。09 交易策略在解决了这些框架开发的问题之后,我终于可以将注意力集到交易策略上了,按照知乎文章上的思路,首先是找出两个市场价差分布的均值E和方差σ,然后再确定一个大于0的参数α,然后在价差大于E+ασ时做正向搬运,当价差小于E-ασ时做反向搬运,这是一个简单而有效的策略,唯一可能导致亏损的点就是交易时的滑点了。这里唯一需要确定的参数是α,一个较小的α意味着更多的交易次数,但是也意味着每次交易的利润会变小,然而南柯和matrix的模拟显示这也意味着更多的总利润,这是比较耐人寻味的一点。然而减小α的代价就是系统受滑点的影响也就更大,如果没有较强的高频交易能力,一个较小的α会让你亏成翔。抛开其他问题不谈,我们肯定是希望有一个尽可能小的α,但是由于这个系统的交易延迟有1~2秒之久,比一个高频系统的最低要求都差太多了,只能算是一个中低频的自动交易系统,所以说α就不能选的很小了。绝对不要小看这一两秒,这一两秒足够让一个在matrix和南柯上爆赚的策略在实盘亏成翔,所以说:回测很丰满,现实很骨感。这句话绝对非常非常有道理。我们不妨把上面这个策略称为simple sigma,整个simple sigma策略的假设就有这几点:两个市场的价差不恒定,而是在某个数值(E)附近上下波动
两个市场的价差大体上符合正态分布
这两个假设都是基本上正确的,所以说理论上这个策略是可以做到盈利的。10 深入思考两个假设虽然上面两个假设都是正确的,但是实际上微观的价差的分布并不总是围绕平均值波动,并且如果根据历史数据计算出一个价差的平均值,那么谁也没法保证这个平均值在将来也会适用,我们观察一下下面这张图:&img src="/v2-b017e0c4107635cfae8ca1_b.jpg" data-rawwidth="640" data-rawheight="319" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-b017e0c4107635cfae8ca1_r.jpg"&这张图显示的是火币和btcc两个市场1月4日到1月6日三天的价差数据,在前一个红框里,价差围绕着3.5左右波动,而在后一个红框里,价差围绕着0上下波动,如果我们按照simple sigma策略的思路,那么我们就会失去1月6号几乎一整天的套利空间。我们需要的,是一个能够动态反应价差“均值”的标志,它不能变化得太快,否则会失去“均值”的作用,也不能太慢,否则难以跟上价差的变化幅度,所以必须有一个参数来确定这一点。也就是在这个时候,我想到了之前做智能车的时候运用到的一个数学工具,互补滤波,整个智能车项目对于我来说就是一场巨大的悲剧,但是我却记住了互补滤波,互补滤波原本的作用是过滤掉一些信号中的高频杂音,从而提取出有用的低频信号,但是在不同的场景下也有一些其他的用途,但是是否适合运用在这里,效果如何呢?不了解互补滤波的同学可以戳这里接着首先,我修改了simple sigma策略,将其中的E(均值)换成了互补滤波的输出,并且在南柯和matrix上进行了回测和模拟,回测和模拟都显示这种新的策略比simple sigma的盈利多30%以上,那么理论上,这个策略还不错。(后来看《统计套利》这本书才知道,这种方法早也被人发明出来了,叫指数加权平均移动模型,所以说多读一点书还是可以少走一些弯路的)总的来说,用上了互补滤波的策略之所以比simple sigma表现得更好,还是因为它正确地精细化了市场价格差波动的模型,现在模型的假设是这样的:两个市场的价差不恒定,在某个特定时间段内会在某个数值(E)附近上下波动
两个市场的价差大体上符合正态分布
一个时间段内市场的价差大体也符合正态分布
是否还有能更加正确或者更加精细市场行为的模型呢?我认为肯定是有的,只是我没有发现而已,如果大家觉得自己发现了一些有意思的市场规律,一定要告诉我。但在发现更好的模型前,就用它上线了。11 上线那些事由于本人技术太渣,上面这些事情做完时,时间已经从11月中旬到达了12月末,除了sjet之外的模块都已经上线,只剩下最重要的实盘策略模块sjet了。于是我挑了一个好日子上线,12月31日晚上,这样一来,系统第一次盈利就会在1月1日这样一个好日子,以后装逼的时候就可以说在2016年的第一天我上线了一个牛逼的系统,然后如何如何,想想也有些小激动呢。其实真正的原因是平时要实习,也只有元旦假期才能确保我有充分的时间处理刚上线系统中的各种bug。上线的时候,我选择了一个非常保守的仓位,0.01比特币,大概是30块钱,所以就算我的系统爆炸,也就是半天饭钱而已。果不其然,系统完全被各种bug所困扰,只进行了一两次有效交易,而且由于各种bug,系统完全在贴钱,新年第一天的也时不时的需要查看一下系统的稳定性,我也是醉了。新年的第一天不仅没有盈利,系统反而因为稳定性原因亏掉了1毛钱,但是上线还是勉勉强强上去了。装逼失败。1号2号基本上解决了系统的各种bug,3号把收益的图形化模块上线了,终于从图形化界面上看到系统第一次盈利:&img src="/v2-880bd501144daaa8567aca22_b.png" data-rawwidth="640" data-rawheight="306" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-880bd501144daaa8567aca22_r.png"&然而还没来得及高兴多久,刚刚盈利的money马上给亏回去了:然而还没来得及高兴多久,刚刚盈利的money马上给亏回去了:&img src="/v2-172de4f1cc5009c09fdc_b.png" data-rawwidth="640" data-rawheight="338" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-172de4f1cc5009c09fdc_r.png"&调查原因发现策略本身没有问题,是滑点造成的利润损失,于是6,7号两天我开始尝试调整模型参数(调大α),并且加入一些策略(在开始交易前考虑价差变化方向和速度),希望能够有效遏制滑点,结果是滑点没有消失,但是严重程度有所减轻,经过一周多的验证,系统可以盈利:&img src="/v2-fd1e01cc9ed0fddfa148e97_b.png" data-rawwidth="640" data-rawheight="193" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-fd1e01cc9ed0fddfa148e97_r.png"&后几天的时间慢慢把系统的监控模块titan也上线了,系统收益和稳定性报警都能够通过短信形式直接发送到手机上,实现了半个自动化运维。后几天的时间慢慢把系统的监控模块titan也上线了,系统收益和稳定性报警都能够通过短信形式直接发送到手机上,实现了半个自动化运维。&img src="/v2-ea22cb8abc5f7f0960a94a_b.jpg" data-rawwidth="640" data-rawheight="1138" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-ea22cb8abc5f7f0960a94a_r.jpg"&&img src="/v2-e644e8c1eb84f62b433ebe_b.jpg" data-rawwidth="640" data-rawheight="1138" class="origin_image zh-lightbox-thumb" width="640" data-original="/v2-e644e8c1eb84f62b433ebe_r.jpg"&当然系统中还有很多非常不完善的地方,并且算法还存在非常大的继续优化的空间,也希望对交易算法有了解或者感兴趣的同学email我或者私信我,我们可以一起改进这个系统。注:本文转载自IcyBee's blog
TA的最新馆藏[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 理想太丰满现实太骨感 的文章

 

随机推荐