【科技新闻入口】【python派期货跟单软件】 【Quicklib首页】 【mdshare.cn行情数据中心】 【开户中国】 【酷操盘手】【量化界】【python派社区】【python资源导航】 你好,做量化的朋友,请加群点击链接加入群: python量化交易程序化回    A股程序和交易接口群     CTP_API开发技术核心群

为什么回测效果非常好的策略实盘却不行?



  • 作者:杨博理

    来源:知乎

    我的建议是,依次了解并检验下面的内容,原因是在我的经验里,这些问题出现的概率是由高到低的:1. 算错了。不是我乱回答好嘛,是血的教训啊。在我做量化测试的历史里,回测出现有显著盈利能力结果时,95%以上是这个原因导致的错误。例如,某个负号在计算时漏掉了、百分号忘记除了、不同语言下迭代0和1起始点的混淆,等等等等,往往会给出一个好到我觉得必将改变世界的结果。所以本人现在都养成了只要结果很好,一定先彻查是否算错的习惯。顺便给个我用来判断结果是否过好的检测手段。鉴于我的交易策略跨度比较大,因此需要一个适用性广泛的手段,我的做法是用期望为0的正态分布模拟资产回报率,首先使用历史数据估计出标准差,然后模拟n段测试期等长的回报序列,从而得到n个交易策略盈亏结果,如果实测结果在这n个结果的尾部两端,就说明结果过好或过坏。这是单资产的交易策略,如果是多资产,融合相应的组合流程即可。当然也存在一些变种,例如求得概率结果而非直观的盈亏结果等进行判断。不过本人大部分时间都不会做的那么详细,受打击的次数多了,稍微看看都知道是不是有问题了。2. 未来函数。其他答案中多次出现了这个提法了,说明确实是一个根本性问题。未来函数的杀伤力在于,它会出现的不知不觉。例如一个著名的分析师语言:“在熊市末期积极建仓,在牛市末期卖出股票”,我要是知道这是末期了,我还听你这些话干什么啊。还比如做量化的时候对曲线的平滑、整体模型的估计、统计特征的提取等等,都应该注意未来函数的出现。要控制它的出现,唯一要做的就是小心,因为逻辑中的错误,比前面说的“算错了”更难以检查出来。我自己的经验是,在编制测试流程时严格按照时间顺序进行,样本内的计算就强迫自己彻底屏蔽样本外的数据。一句话,经验是财富。3. 存活者偏差。这是“未来函数”族群中的王者,单独拿出来说。下面的内容来自维基百科:幸存者偏差(英语:survivorship bias),另译为“生存者偏差 [1]”或“存活者偏差”。常用俗语“死人不会说话”来解释其成因。 意思是指,当取得资讯之管道,仅来自于幸存者时(因为无从由死者获得来源),此资讯可能会存在与实际情况不同之偏差。常见于财务金融领域之文章。 此情况常见于投资理财之节目或文章,例如当投资理财之电视节目仅邀请投资成功者上节目谈论其成功投资之经验,观众会将该成功投资者投资之方式,视为高成功率之投资方式,但观众并不会在电视节目看到以相同或类似投资方式,但最后失败的投资者,因而高估此投资方式之成功机率。用指数或者全市场样本进行长期交易策略测试的同志们,请一定小心指数成分股的变更和股票退市对策略的影响!4. 过拟合。先给定义,来自百度百科:为了得到一致假设而使假设变得过度复杂称为过拟合。想像某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据(即再拿样本中的文档来给它,它绝对不会分错),但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据稍有不同的文档它全都认为不属于这个类别。 标准定义:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。 ----《Machine Learning》Tom M.Mitchell好吧,数据挖掘的人写的东西,看来国内搞金融的人都高端大气不愿意用百科,有空我把wiki的英文翻译过来好了。针对量化交易的小方向来说,就是说交易策略中参数用多了、或者交易流程设置过于复杂了,导致交易策略过度提取了样本数据中的某些显性信息,而误读了整体数据中的真实信息。如果你有较好的统计基础或者计量基础,你应该明白过拟合的含义,学界为了R方和结果显著性不顾一切乱来的太多了,负面例子不胜枚举,如果不太理解请补课。5. 泛化能力。与“过拟合”关系密切,在绝大部分情况下就是“过拟合”问题导致的结果,不过含义是截然不同的,且存在例外,因此单列出来。最出名的例外就是现在红火到爆的Deep Learning了,简单来看就是隐层数增加的人工神经网络,所以亦称Deep Neural Network,虽然由于隐层的问题,参数一度多到无法正确估计,但是有了数据量的巨大提升和Autoencoder之类的处理方法之后屌丝逆袭干掉了一众分类算法。最近去百度的吴恩达就是这方面的专家,更不用提Hinton他老人家,Google的科技吉祥物好嘛。扯远了,回来,下面的定义来自百度百科:概括地说,所谓泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。好吧,这还是搞数据挖掘的人写的东西。用我们这个方向上更易理解的话说就是:样本内的数据的某些特征规律,在样本外的数据中也存在,这种特征可以提取出具有盈利能力的交易策略。因此,这种存在性越强、或者说样本外盈利能力越强,泛化能力就越强。在我个人的交易哲学中,已知数据全部都是样本内数据,人为划分样本内外的做法是学术术语,有可能会产生自欺欺人的后果。个人看法,仅供参考,而且为了交流方便我仍然会在下面使用这种学术说法。为了将这种泛化能力的欺骗性尽量降低,我的做法是在某一段样本期内划分样本内外,然后将这段样本期作为样本内,在另一段时期做样本外检验,依此迭代,能做几层做几层。抱歉我暂时没法把这个流程说清楚,有灵感了我来改答案。但是确实很有效,一般做两层,大部分好策略就不好了,根本不用实盘浪费时间浪费钱。泛化能力是量化交易盈利的灵魂,涉及到哲学和技术两个层面。有空我会增加这部分的内容。6. 真实交易环境限制。@Awing Xu 写的很好,请移步参考。闪烁信号的问题主要出现在中长期交易中,大部分是使用日度数据进行回测造成的。解决方案包括设定一个与交易点差距的阈值,使得交易行为的到达条件不那么敏感;或者固定在一天的某个时间点监测并进行交易,忽略其他时段的价格变动,等等。实际交易中不可能成交的价位。使用市场单,价位变动,单个价位容量不能满足,市场剧烈波动影响成交价。场内规制,庄家或报价商打止损。这三个我统一归纳为交易中的摩擦,不知道有没有理解错,如有,致歉。第一个我展开说一下,由于下单环境的不同,单子到达交易所的时间也就不同,较大的时间差往往造成策略计算时的价位不可能成交的情况,波动大时尤甚。另一种情况则是流动性较低时,买卖单无法被对手及时匹配所导致的价位变动。这一问题可以通过提高议价能力、优化下单和计算环境等来缓解。第二个和第三个问题,主动的解决方案包括狭义的Algo Trading所代表的分单建仓等技术,以及对交易规则的合理应用等。这是另一个大的研究方向,不作展开。与闪烁信号主要出现在长期策略不同,摩擦在高频交易中极为明显。高频中稀薄的盈利往往会被大量摩擦蚕食,进而导致理想环境下的盈利策略失去盈利能力。实践中,一个优秀的策略测试流程一定会考虑到摩擦因素,而针对套利类交易来说,对于摩擦损失的估计和预判甚至是整个策略的核心所在。真实交易环境的限制涵盖很广。断电、断网、计算机故障等因素也是其中之一。肯定还有其他的问题限制,欢迎补充。集思广益,不甚感激。7. 策略周期。策略是有周期的,站在风口上,猪都会飞。在趋势行情下,盘整策略会亏,在盘整行情下,趋势策略会亏。那我用技术手段,区分趋势行情和盘整行情呢?这是对未来行情的预测,提前固化的预测手段是具有时效性的,依然是一个大的周期问题。存不存在不会过期的盈利性策略呢,我认为有,具体的内容我会在后面混沌等内容中展开来讲,因为太哲学。目前而言,我寄希望于找到一个有效周期足够长的策略,我还没有找到,但会继续努力。实际上,策略周期是“泛化能力”在时间上的着重体现,基于这个思路,我对这个性质的检测方式仍然是两层的样本内外检验,只不过会对样本期的长短、时段变化更为关注,研究这些变化带来的结果的变化。到了这里,我已经开始感到自身的软弱无力,交易是一个看天吃饭的活计,量化交易也不例外。

    谢邀,实盘不理想有以下几点策略中使用了未来函数,实际交易中不可能成交的价位。闪烁信号,回测没有闪烁的问题,实际交易中信号出现然后消失了,但仓位已建。使用市场单,价位变动,单个价位容量不能满足,市场剧烈波动影响成交价。手续费和价差没有包括在回测中,高频率交易尤其敏感。使用某一时间段市场波动,不适合现市场波动,回测要检验多种市场状况。还有因素如场内规制,庄家或报价商打止损。长期策略问题较少,高频问题较多。。。。。。。。。。。看了大伙的回答,发现少了回答一个重大问题,数据拟合。 为什么遗漏了,是因本人觉得这是交易员和程序员开发策略的分别,国内怪圈是公司开发策略,编程员,数据发掘,交易都是同一人,不知各位情况是否一样,我是看各公司招聘条件是这样的。扯远回正题。市场只是惊人相似,不是重复。混沌理论中分型指明这一点(混沌是物理理论,请参考物理学正解),所以策略开发时不应参数优化,这是本人理解,使用一个参数是有理由的,客观的。这里的客观是某些统计模型计算出的参数或不变的条件。就算主观的参数也比优化的好,思路出来的结果,不能使用优化去改变。尽可能使用相对不变的条件作为策略开发,如果使用的条件是不断变化的,怎么可能设计出有统计意义的策略?不知理解正确与否,请指点。

    作者:Awing Xu

    来源:知乎

    作者:小牛

    来源:知乎

    先膜拜一下LZ,问了好多问题,好勤奋。开始正题。像未来数据,滑点等显而易见的原因我就不多说了,这些都很容易理解。主观投资方法也不多说了,因为和主题无关。其实一直困扰我的问题更有点像“哲学”问题:这个问题的一种提法是:我们能用数学模型预测未来吗?换一种我认为更好的问题提法:我们能用数学模型逼近乃至完全描述世界(金融产品)的运作规律吗?第一种提法是第二种提法的必要非充分条件。换句话说,如果我们能用数学模型逼近世界(金融产品)的运作规律,那我们就有了真实的预测能力。简单一点,我用“模型对规律的逼近度”这个描述来替代上面的描述。为了解释这个问题,要先阐述三个我自己的观点。一、物理世界和人类社会的建模,就规律逼近度上讲,本质上没有区别,只是强弱的问题。比如,物理模型的规律逼近度会很强 —— 牛顿三大定律那么好用;经济学的规律逼近度就差很多,经济学的预测能力,大家都懂的。所以简单说一个模型行不行,那是不科学的。比如说牛顿三大定律就是真理,经济学就是狗屎,很不理性。我们真的只能说(乐观估计):“这个模型有多行?”二、模型的规律逼近度只是度量相关关系,而非因果关系大部分人,包括我自己在内,未必真正理解什么叫做因果关系。在经济学中,老师经常告诉大家,要先寻求经济意义,再进行建模。相对层面上,这样看起来确实很有效。但往深了想,我们所谓的“意义”,未必那么有意义。举几个例子,也许会更容易理解。为什么苹果会掉到地上?牛顿说,是因为有地球引力。爱因斯坦说,是因为地球附近的空间弯曲了。我说,因为有一群无法看到的调皮神仙,会把每一个苹果按到地上。这个例子告诉我们说,所谓因果关系,其实跟我们看问题的角度有关系,而这个角度是我们可以自己臆造的。用比较现代的语言来讲,可以弱弱理解为“假说”(并不准确)。再举一个例子,“雄鸡一唱天下白”这两者明显不是好的因果关系,更好的(未必是真的因果)“因果关系”是,太阳出来了,所以雄鸡叫了,所以天下白了。这个例子告诉我们,很多有明显相关关系的事情,很可能并不具有我们想象的因果关系。再举一个例子,“种豆得豆,种瓜得瓜”。可是,种豆未必得豆,种瓜未必得瓜呀。如果天气不好,种豆也不会得豆。如果土壤很差,种豆也不会得豆。如果没有水,种豆也不会得豆。所以天气、土壤、水等等缺一不可。那么凭什么说“种豆”跟“得豆”是因果关系呢?我们甚至都不能赋予“种豆”这一因素更大的权重 —— 因为任何因素都是缺一不可的。这个例子告诉我们,我们往往以为的主要原因,从绝对理性的角度讲,其实只是我们的“近视“和偏见。所以因果其实是非常复杂的事情,用数学或者逻辑的方法实在是没办法搞清楚的。然而,好消息是,对预测来说,我们也并不需要搞清楚因果关系才能赚钱。我们只要知道雄鸡一叫,天就大概率要亮了,这样就已经足够赚钱了。对因果关系,相关关系,高善文老师有过一篇很精彩的论述《光线是可以弯曲的》。有幸当面请教过高老师关于这方面的问题,高老师的基本观点是,想要研究清楚因果关系,必须要有一个封闭的系统,但实际中,经济系统是不封闭的,所以我们没办法真的搞清楚因果关系的,但总是有一些办法能够逼近。至于什么办法,在此不表,有心人自会找到。三、假设的实证比推理过程更重要学过经济学的都知道,所有的经济理论都是先有一系列的假设,再通过数学推理得到的。在这里,很多人往往会有一种倾向,总觉的那一系列的高大上的推理是最重要的。但在实际中,恰恰相反,假设的实证最为重要 —— 有多少人还记得每一个理论背后的假设?问题的关键是,现实肯定不会完全满足假设条件。那么这个差距究竟会对模型造成多大的影响?这其实才是实际投资中的核心问题。但这些问题在传统经济金融学中,往往涉及的非常少(也可能是我孤陋寡闻)。综上所述,要进行量化投资建模,步骤其实是:1. 建立相关性假设(不是因果关系),比如A -> B2. 量化描述相关性假设3. 实证(不是推理)假设的历史有效性4. 判断假设的未来有效性我们用一个简单的趋势跟踪策略来描述之:1. 相关性假设是,如果出现了较大的趋势,那么趋势会大概率延续2. 我们简单一点,上穿均线买入,下穿均线卖出。3. 哇,回测结果好棒!4. 实盘亏死了T_T…问题出在哪里?1. 趋势会延续这个相关性假设真的很有“规律逼近度”吗?2. 量化描述没有别的更好的方法吗?3. 回测是唯一标准吗?4. …其中第1,3点是最难的。2也不容易,但相对简单。对1来说,用数学的方式没办法证明,最多证伪。2是数学建模的内容,水平有限,也不多说了。3是我想讲的重点。先举一个极端变态的例子:我们现在已经知道今天每一分钟的股指涨跌情况:我写出以下策略:if(time=9:15:00) 买进,持仓一分钟平仓卖出if(time=9:16:00)卖出,持仓一分钟平仓买进if(time=9:17:00)…总共有270个。然后根据每分钟的实际情况,把买进或者卖出,填上去就可以了。如果你更勤奋一点,可以再加上日期,扩大样本,一直写下去:if(time=20140611 - 9:16:00)…回测百战百胜呐!很变态吧,很无语吧。先不要着急批判这个策略。实际上,有时候很多策略看起来非常有逻辑道理,但实际上已经掉到这个陷阱里面去了,还浑然不觉。这个陷阱有一个很好听的名字,“过度拟合”。如何避免过度拟合?我的结论是,数学上,我们只能给出一些置信度什么的,但真的没办法完全排除过度拟合的嫌疑。极端一点,牛顿三大定律,其实也是对世界的拟合,只不过拟合的置信度很高 —— 卫星不都转得好好的吗?但是到了微观世界或者光速世界,就又完全不一样了。怎么办?有人会说,那我分两组样本,一组建模,一组测试,不就好了。可是,这也一种拟合,因为不好的策略在你测试的时候,也被扔掉了,所以本质上并无差别。再高级一点,还有很多看似好用的标准:参数优化的时,收益对参数变化不能太敏感。收益在参数空间中的分布是比较连续的。等等。这些有用吗?我觉得未必。另外,还有一个概念,很多人容易忽视:为了解释这个概念,我们建立一个简单的模型:假设我们只买入,一段时间后卖出。我们的目的是为了挖掘A->B的模式,其中A代表一种技术形态,B代表买入后收益的分布。目标就是:在样本中找到尽可能多的A,让B对我们更有利。在做这件事情的过程中,很多人只关心如果出现A,再出现B的概率。但事实上,有一件事情非常重要,那就是A->B在整个样本中的概率有多少。很多人死在这个上面了,特别是高频策略中。为什么这么说?先举一个简单的例子:我们做一个策略:在一分钟线上,如果股指一分钟上涨超过2%,我们马上卖出,持仓5分钟后卖掉。这个估计只会交易一次,就是光大8.16事件那次。然后赚钱了。有人会说,不对呀,你的交易样本太少了,只有一个,没有统计意义。我承认,没有统计意义。但事实上,交易样本绝对数量是一个标准,还有一个标准是,交易样本占整个样本空间的比例。比如如果,你有10亿的样本 ,你找到了一个交易1000次的策略表现很好,但由于1000次在10亿次当中的比例实在太小了,我们完全有理由怀疑,这只是随机效应。很多高频策略,失效极快,未必是跟市场变得有效有关系,也许策略本来就无效。这个判断标准在关联分析中叫做支持度,同样地,也有置信度。当然,支持度,置信度也都是人为设定标准的。那么什么标准最合适?谁都不知道,只能凭运气和经验。总之,由于科学理论的只可证伪性,连牛顿三大定律都可以失效,那么回测很好,实盘失效那实在是太正常不过了。微信公众号:小牛八卦关注小牛八卦,学习智能工具。

    作者:starseeker

    来源:知乎

    1.交易的冲击成本是非常重要的一个因素。从实际经验来说,交易的冲击成本会比你盘面上看到的那些成交量所感觉到的冲击成本大得多。一个日成交亿元的创业板股票,你成交个10%左右可能就需要打高2个点左右。而冲击成本又是很难模拟和计算的,事实上我现在也在想有什么好的办法可以来进行模拟。光大的816是很好的例子,这点钱就打高了那么多。冲击成本带来的另外一个潜在的因素就是成交失败后的处理。比如说你做一个套利,两条腿的。如果只成交了一条怎么办?一般来说肯定是不利于你的方向的那条成交的,那么你需要马上去补另外一条,这个时候的滑点已经不是1,2个点了,而且你补的话一般就用市价了吧。而本身套利就赚这几个点的点差,这种情况在你的策略回测中是无法模拟的。2.讲一个故事:曾经某同学给我讲过他们公司的一个故事,他们公司是美国top的对冲基金之一。曾经开发过一个股指套利的策略,模拟的时候很ok,但是上了实盘就开始亏钱。最后发现原因是美国的股指在芝加哥交易,股票在纽约交易,他们的对冲基金在纽约。交易指令到达纽约会比到达芝加哥快那么一点点。然后他们就在两个地方的中间搞了个机器发指令解决了这个问题。3.策略本身的问题,简单的来说。策略也是概率问题,本身可能就是50%概率,但是在过去的某段时间表现出来的是55%概率,你觉得策略不错啊,nb啊。上去以后就表现出来45%的概率水平了。你的想法是怎么策略不行了,而其实人家只是恢复正常而已,过去表现好才是真正的"运气好",我想这个原因是很多人所谓的策略表现不行的原因之一。

    作者:杨影枫

    来源:知乎

    在理论方面其实答得已经相当全面了,我就从实际交易经验来说说平时如何对策略进行回测和未来效果预估。1回测结果来看,首先如果你的策略超级赚钱,年化收益率/最大亏损值能达到20倍以上,每年获利都超过200-300%,那么最大的可能是——————你用到了未来函数。仔细检查流程,看是否在某个环节会用到了在实际情况中不可能得到的市场信息。比如在一分钟开始阶段就用到了本分钟的最高最低价,或忽略了K线内最高最低价产生的先后顺序。最好的杜绝未来函数的方法是在回测时编程采用流程控制,将行情数据每个tick推入,得到交易结果。2检查参数使用数目。很显然,参数使用越多,策略泛化能力的越差。就日内趋势类策略而言,在回测时需要遍历的参数最好不要超过三个。当然具体还是要视策略本身的构造和样本内外测试结果而定,不能一概而定。3交易频率判断,交易频率越低,策略的泛化能力越差。交易频率低,说明策略本身就是参数优化后找到的特例结果。4观察本身市场结构是否发生了变化,策略本身都有自己的适应点和不适应点,进入市场后很可能正好运气不好,赶上了不适应期。所以要对本身策略有一定的宏观理解,来判断当前行情是应该赚钱还是亏钱,判断如果亏钱是因为本身行情层面不给力还是策略层面出了问题。5其他交易细节,比如报单时延、期望成交价格拿到概率、平均滑点、其他交易规则限制等等等等就不一一列举。

    作者:杨影枫

    来源:知乎

    在理论方面其实答得已经相当全面了,我就从实际交易经验来说说平时如何对策略进行回测和未来效果预估。1回测结果来看,首先如果你的策略超级赚钱,年化收益率/最大亏损值能达到20倍以上,每年获利都超过200-300%,那么最大的可能是——————你用到了未来函数。仔细检查流程,看是否在某个环节会用到了在实际情况中不可能得到的市场信息。比如在一分钟开始阶段就用到了本分钟的最高最低价,或忽略了K线内最高最低价产生的先后顺序。最好的杜绝未来函数的方法是在回测时编程采用流程控制,将行情数据每个tick推入,得到交易结果。2检查参数使用数目。很显然,参数使用越多,策略泛化能力的越差。就日内趋势类策略而言,在回测时需要遍历的参数最好不要超过三个。当然具体还是要视策略本身的构造和样本内外测试结果而定,不能一概而定。3交易频率判断,交易频率越低,策略的泛化能力越差。交易频率低,说明策略本身就是参数优化后找到的特例结果。4观察本身市场结构是否发生了变化,策略本身都有自己的适应点和不适应点,进入市场后很可能正好运气不好,赶上了不适应期。所以要对本身策略有一定的宏观理解,来判断当前行情是应该赚钱还是亏钱,判断如果亏钱是因为本身行情层面不给力还是策略层面出了问题。5其他交易细节,比如报单时延、期望成交价格拿到概率、平均滑点、其他交易规则限制等等等等就不一一列举。

    在理论方面其实答得已经相当全面了,我就从实际交易经验来说说平时如何对策略进行回测和未来效果预估。1回测结果来看,首先如果你的策略超级赚钱,年化收益率/最大亏损值能达到20倍以上,每年获利都超过200-300%,那么最大的可能是——————你用到了未来函数。仔细检查流程,看是否在某个环节会用到了在实际情况中不可能得到的市场信息。比如在一分钟开始阶段就用到了本分钟的最高最低价,或忽略了K线内最高最低价产生的先后顺序。最好的杜绝未来函数的方法是在回测时编程采用流程控制,将行情数据每个tick推入,得到交易结果。2检查参数使用数目。很显然,参数使用越多,策略泛化能力的越差。就日内趋势类策略而言,在回测时需要遍历的参数最好不要超过三个。当然具体还是要视策略本身的构造和样本内外测试结果而定,不能一概而定。3交易频率判断,交易频率越低,策略的泛化能力越差。交易频率低,说明策略本身就是参数优化后找到的特例结果。4观察本身市场结构是否发生了变化,策略本身都有自己的适应点和不适应点,进入市场后很可能正好运气不好,赶上了不适应期。所以要对本身策略有一定的宏观理解,来判断当前行情是应该赚钱还是亏钱,判断如果亏钱是因为本身行情层面不给力还是策略层面出了问题。5其他交易细节,比如报单时延、期望成交价格拿到概率、平均滑点、其他交易规则限制等等等等就不一一列举。

    作者:李承素

    来源:知乎

    先说一下对已有回答的不同意见:1、过去不能代表未来。事实上我们做交易大部分流派的基石就是”已有的事后必再有,已行的事后必再行,日光下并无新事(《圣经.传道书》)“。只不过策略本身可能在过度拟合等方面犯了错误。2、滑点。策略的周期越长,越偏向于高赔率低胜率的趋势系统,滑点的影响就越小。这个一般不是实盘出问题的主要原因。3、流动性。这个一般在回测之前就要选好,如果是高频策略且准备大资金介入,就不要在半死不活的市场品种浪费时间。再补充几个没提到的,都是实际经验,分享讨论一下:1、回测周期匹配的问题。如果实测周期与回测不匹配,误差就会很大。回测较短周期的数据,常常因为事件的影响或短期内大趋势的影响等,导致“效果很好”;而回测十数年以上的大周期,实盘策略短时间内又看不出效果。这是假设你模型本身没问题,且具有长生命力。2、模型本身的问题。参数越多的模型,死的越快,需要不断更新;而非常简单的策略,却可能是市场中的”永动机“,最多沉寂几年,便又再生。所以想要策略长生不老,需在优化和过度优化中做个选择,也可能是在收益率与策略生命中的选择。3、资金管理的问题。回测只是解决了出入场信号的问题,要把仓位管理加入到回测当中。如果回测和实盘都使用同样的资金管理系统,偏差不会太大。4、心理。大家都提了,但是再多的强调也不为过。如果纯自动交易,则不存在。

    王某J
    人送雅号:“亏的稳健”

    因为绝大部分的策略都是这样做出来的:市场历史走势:1,2于是我们聪明的小明做出了以下交易模型:=+1,历史回测完美!第二天市场走势:1,2,4我们睿智的小明决定升级我们的交易模型PLUS版:=2*,回测完美!第三天市场走势:1,2,4,7WTF!我们饱经市场磨练的小明已经目瞪狗呆爬起来继续改进我们的交易模型PRO版:=+(n-1),一如既往的回测完美!!然而第四天:1,2,4,7,666W!T!F!!!小明呕出十两血,抬下~~下面小亮上场~第一天…

    作者:王某J

    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    作者:find goo

    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    如果指数不涨不跌,十年前3000点,今天还是3000点,再过十年也许还是3000点。股市平均一年分红不及银行利息,如果散户每年交易一次,需要交0.15%的印花税(别跟我说你不用交印花税),加个手续费、喜欢追高滑点、被迫杀跌滑点,每次可能要损0.5%以上,如果交易十次要损失5%,加上机会成本的损失利息3%,每年要损失8%。如果每年挣个手续费8%,二十年可以涨466%,10万变46.6万,但如果每年损失8%手续费,10万元二十年跌到1.88万。而1.88万要追上46.6万需要涨24倍,每年增长8%需要42年才能实现追上,实际根本无法追上,因为46.6也是每年增长的。如果时间拉得更长结果更恐怖。可见股票的上涨和下跌是非线性的,复利增长只要是每年增长很容易实现复利效果,时间越长复利因子的非线性作用越大,而一旦加入亏损经过时间这个长轴放大后天壤之别,一个天堂,一个地狱。可见光是加入了亏个手续费和挣个手续就是天壤之别,市场因素中还有非常多类似手续费对收益影响的,比如货币汇率波动,银行利息波动。在程序回测中,人们没有看到复利因子带来的非线性额外收入,而实际交易很难实现复利效果,因为复利模型基本是零回撤(这种零回撤实际上是程序的过度拟合的结果导向选择),而且是每次满仓操作没有任何零头,你看到过有天天满仓炒股不亏损的人吗?我是没有,程序回测是在后视镜选择中过度拟合了收益,时间越长这种收益拟合性越强。你用程序回测时收益逆天,这时该策略可能是站在高峰之上,你实盘交易时回撤大、涨起来慢如蜗牛,掉入回测峰坑中,也就不难理解了。我觉得复利回测中的非线性系统的后期巨大差别类似洛伦兹吸引子的蝴蝶效应,初始条件的细微差别经过时间轴放大,后期会引发蝴蝶效应,最终天壤之别,理想如同镜中花水中月可望不可求,而人们总是喜欢追求高收益完美,喜欢用水中月镜中花来当做追求的目标,沉迷在虚幻中不能自拔,但美好如同画中反弹着琵芭的飞天,从来没有到过人间。

    python量化交易


Log in to reply
 

社区手机APP介绍
社区APP通过 手机扫描二维码下载2 社区 APP(Android)点击下载 download
沪ICP备17025576号-1