gtlizz 发表于 2015-2-3 16:26:29

[原创]谈谈程序化交易那点破事

开发一个程序化交易策略的过程本质上都是在追求经验风险最小化。为什么叫“经验风险”?根据已知的历史数据去归纳总结,不就是经验嘛。经验风险最小化顾名思义就是根据已知样本数据去不断优化你的策略,去达到风险最小化的目的。为什么叫“风险最小化”?风险就是指你出错的可能性,我们通过不断的优化去减少出错的可能性,不就是风险最小化嘛。风险最小化更直观的理解就是收益最大化。(呵呵,别嫌我啰嗦)。
于是通过我们的不懈努力终于得到了一个经验风险最小化的模型,但现在问题来了,我们选定这个模型的假设与问题真实解之间究竟有多大差距,我们就没法得知。比如说我们认为宇宙诞生于150亿年前的一场大爆炸,这个假设能够描述很多我们观察到的现象,但它与真实的宇宙模型之间还相差多少?谁也说不清,因为我们压根就不知道真实的宇宙模型到底是什么。
直观的表现便是用历史数据测试很好的模型一旦实盘就不行了。(为什么不行?本人曾千百遍的逼问自己),看看经验风险最小化原则我们就会发现,此原则适用的大前提是经验风险要确实能够逼近真实风险才行。但实际上能逼近么?答案是不能。(为什么不能?因为样本数据相对于真实世界来说简直九牛一毛,有人可能会说那我用一个品种上市以来所有的历史数据来做样本,我会问他“那未来呢”?哈哈哈)
闲话少说,来看看我们的真是风险到底是什么:
R(w)≤Remp(w)+Ф(n/h)
公式中R(w)就是真实风险,Remp(w)就是经验风险,Ф(n/h)就是置信风险,经验风险代表了分类器在给定样本上的误差,置信风险代表了我们在多大程度上可以信任分类器在未知文本上分类的结果
也许有人会问为什么公式不用等于号要用大于等于呢?因为公式的第二部分是没有办法精确计算的,因此只能给出一个估计的区间,也使得整个误差只能计算上界,而无法计算准确的值(所以叫做泛化误差界,以上公式及理论基础请问度娘,本人不做过多介绍)。
经验风险大家容易理解,那置信风险呢?置信风险与两个量有关,一是样本数量,显然给定的样本数量越大,我们的学习结果越有可能正确,此时置信风险越小;二是模型(函数)的VC维,显然VC维越大,推广能力越差,置信风险会变大。
那到底什么是VC维呢?(读到这里肯定有人开始讨厌我了,但不打紧,为了大家更好的理解,我还是解释一下),所谓VC维是对函数类的一种度量,我们可以简单的理解为模型的复杂程度,VC维越高,一个模型就越复杂。VC维理论是统计学习理论界的大牛Vapnik和Chervonenkis创造的,详细的解释此处需要2000到3000字,大家还是去问度娘吧。
现在大家都明白一个直观的道理了吧。原来交易策略要适应未来并长期有效,关键就是要函数的VC维越小越好(程序越简单越好)。
回过头来我们谈谈策略优化的问题,我们有一定的样本数据,通过过度优化(设很多参数,加很多过滤条件…),必然会得到一个测试效果很好的模型(数量为N的样本数据必然能被一个N-1次多项式函数几乎100%的拟合),也就是说,只要模型足够复杂,不管多么非线性的数据总是可以被拟合的。但是…这不和我们刚才提出的要减小VC维,减小模型复杂度的理论相冲突吗???好吧,为了减小模型复杂度,那我就不去优化策略好了,可是不去优化策略,我程序的拟合度又很低,在历史数据里测试都没法赚钱,怎么办呀???
为了更好的解释这一问题,我又要提出两个遭人烦的专业名词了,“偏差”和“方差”,具体还是去问度娘。一个在历史数据中没怎么优化的模型,测试效果肯定不好,叫欠拟合,一个在历史数据中过度优化的模型,测试效果肯定好,叫过拟合。欠拟合就叫偏差太大,过拟合就叫方差太大,怎么才能在偏差和方差二者之间权衡呢?这个问题正是我下一节要讲的。这是一篇连载的帖子,作者暂时有点累了,呵呵……
(一大堆文绉绉的专业名词和概念想必看了就烦,想刨根问底的朋友可以去看看网易公开课里面有个叫斯坦福大学机器学习公开课的课程,讲师是目前大名鼎鼎的百度的首席科学家吴恩达)

smallyjowen 发表于 2015-2-17 21:11:03

看懂了,很有启发,高手呀,请继续发光

jyktzjyktz 发表于 2015-6-2 10:31:01

:victory:

tsctnet 发表于 2015-6-23 10:39:40

为什么不写了

topgun0791 发表于 2016-5-20 08:23:17

为什么不写了

realyyh 发表于 2016-5-22 20:49:28

不太明白

myc45595 发表于 2017-9-24 09:55:03

很有启发如何调整过拟合是个很难的课题

wk1206 发表于 2017-12-12 15:41:42

高手
页: [1]
查看完整版本: [原创]谈谈程序化交易那点破事