作者SweetLee (Sweet)
看板Stock
标题[投稿] 由工程师观点看历史数据回测
时间Tue Feb 4 00:31:45 2014
小弟股龄17年 但之前玩法几乎都是买定存股领股息 手上一堆十年以上股票
当时每年基本上只看盘两次 三月和九月 更换一两档持股 所以几乎算是新手
去年想开始专职玩股票 於是开始研究中短线
身为一个工程师 职业习惯又最没大脑的研究方法八成就是:
(1)想或找一个操作策略 (2)写成程式判断 (3)用历史数据回测 (4)若失败则回到1
虽然花在研究的时间还不多 但还是分享一些跟回测有关的心得
并不是操作策略 而是一些跟做回测有关的观念和想法
最主要也让各位高手看看小弟的思考上有没有错误的观念 让小弟修正 并整理思绪
1) 买入和卖出价位
这个比较基本
之前板上看到有人用"今天收盘"的数据求出买卖讯号之後 又用今日收盘价买入
这样的回测数据根本没有参考价值
小弟我因为上班 开盘时间无法看盘
所以回测基本上是用买卖讯号出现後隔天的"开盘价"进出的
上一段太基本了 补充一点 这里会延伸出一个问题
如果是像小弟这种依据收盘资讯来跑操作策略的回测 有个大弱点: 停损
例如停损设5% 但第一天跌了7% 第二天开盘价卖出 可能跌停 那是损失两个停板!!
更惨的情况是第一天指标显示"买入" 第二天开盘价+7%买到 却收在跌停价
指标转为卖 於是第三天开盘价卖出可能是跌停价 24小时内损失三个停板!!
所以要小心的是 用每天的收盘资讯跑程式选股 应避免玩飙股
不然十年内发生一次快速转折可能让你模拟结果的年化报酬率直接降低2%
2) 回测的时间区段
用一年的资料回测肯定是不够的 小弟认为最少要十年
例如2013年可能顺势操作的策略很难做 可是其他年可能很好做 每年都不太一样
实际上 除非是玩很活泼的股票 不然只用10年 取样数其实还不太够
如果有计入手续费和证交税 通常跑出来不错的操作策略每年周转率不会太高(小於10)
也就是十年内进出不到100次的取样 统计上的信赖度其实还没算很高
可能运气好差个一两次30%50%的波段 整个年化报酬率就差了3%
补充另一点是小弟个人的做法 就是模拟的区段开始价位要等於(或接近)结束价位
以大盘为例 若模拟区段的起始是7000点 结束也要7000点左右
现在大盘约8500点 要模拟要找个大约8500的起始点来模拟
为什麽? 这是要避免高风险操作
如果今天跑的模拟区间是5000点到8000点 A策略赚60% B策略赚120% 这样B比较好吗?
不尽然 搞不好其实A策略是买进0050持有 而B策略只是A策略开两倍杠杆而已
当遇到另一段区间是8000点跌回5000点时 A策略赔37.5% 而B策略赔75%
更惨的是 总合起来从5000到8000再回到5000 A策略是赚0% 而B策略是赔45% 哪个好?
如果模拟有计入配股配息A策略可能还有年化5%报酬率 而B策略仍是赔的
所以呢 模拟区间小弟个人的习惯是找起始点和结束点价位差不多的区段
但这又跑出另一个问题 就是台股长期而言是会涨还是持平的?
如果从大盘指数100点开始看 台股长期是上涨的
但是以小弟的股龄来看 我没看它长期在上涨(79年台股就破万点了 目前未创新高)
如果认为台股长期是会上涨的 则应该找指数上升趋势符合长期趋势的区段
但是以目前台股的历史看来 取样数还差很多
或许明年就会突然涨一波 从此不回头(等小弟经济学好一点再来研究这个问题)
也或许小弟有生之年内 都不会碰到那种黄金时期吧
3) 持股率和报酬率之计算
因为小弟自己写的模拟系统不是用买进和卖出讯号 而是用"持股率"
所以有持股10% 50% 100%之类的操作
这会引伸出一个问题 就是你模拟的策略的报酬率 并不是 (卖出价/买入价-100%)
正确的计算应该是 (卖出价/买入价-100%)*持股率
有一种简化的例子 一种赌博的方法 每次输就加倍赌注的赌法
一开始下1元 有1/2的机率赚1/1=100%
输了再下2元 则有(1/2)^2=1/4的机率赚1/(1+2)=33%
依此类推 1/8的机率赚1/(1+2+4)=14% 有1/16的机率赚6.6%
光前三项加起来就有60%以上的报酬率了 听起来很棒对不对?
但其实这是个公平的赌局 期望值是1 长期报酬率是0%
如果你把实际总资本算进去 例如总资本是1024元
那麽其实下注1元赚1元只有1/1024=约0.1%报酬率 输了加倍下注赚回一样都是0.1%
那麽其实只有0.1%*1/2 + 0.1%*1/4 + 0.1%*1/8 + .... +(-100%)*1/1024 = 0%
所以这才是正确的报酬率算法
会提到这个 是这几天看了一本平民股神的书
他说到他的操作方式根本不怕破产
其实是因为他平常都只拿几百万在玩股票 持股率占他的总资产很低
(这是正确的资金控制)
所以虽然他的操作方法常常赚好几成甚至上倍 但他操作风险很高 是不敢梭哈的
不然以这种几成的报酬率 玩了四十年 怎麽会只有几亿资产?
他70万本金开始玩 假设现在有7亿资产 涨了1000倍 分40年 年化报酬率是18.85%
这还是他有经历过民国七十几年的大多头黄金时期所平均出来的报酬率
其实他这几年应该赚不少 因为他说他资产大多放在房地产上
回归正题 操作策略的报酬率 不应该以持股的报酬率来计算 而要再乘上持股率
尤其是有加码或摊平特性的操作策略 不然你会高估了那个策略让你资产增加的威力
这三点不小心写得有点罗嗦
本来想要写五点的 後面还有两项想讨论回测实验落入fit最佳参数的问题 还有"股感"
这两点更长 更多可以讨论 为了不让大家觉得太罗嗦 就先打住
避免最佳参数及股感的问题 让小弟我最近使用的策略不再跑大量的回测了
目前小弟使用中的是一个使用"高斯分布随机漫步"理论"公式推导"的操作方式
跑过回测 绩效普通而已 但其他策略都很难通过小弟的"避免最佳参数"测试 只好用这个
最近看了杰西李佛摩和平民股神的书 让小弟开发新策略的方向转向"股感"而不是"模拟"
股感这东西很难讲 就像西洋棋大师(靠直觉的股感)vs超级电脑(靠程式判断的模拟)一样
(一言难尽 详细观念请参阅"快思慢想"一书)
目前10%资金用来练"股感" 90%资金继续旧操作方式
等小弟花点时间练一下股感 再来看能不能替换掉目前随机漫步的操作策略
当然也可能最後终究还是要回到写程式跑模拟这一途
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.255.40.145
1F:嘘 likesea :赞。又把古早人做过的事情再做一次。 02/04 00:33
2F:推 clubsir :恭喜得到LIKESEA大大嘘的祝福 02/04 00:35
3F:推 paleomort :我对於你买的定存股获利比较感兴趣,十年以上不知结 02/04 00:35
4F:→ paleomort :果如何 02/04 00:36
这个方法因为小弟已经不使用了 倒是可以透露
纯脆数字举例 如果我把资金等分在10支年报酬率10%的定存股上
则总平均报酬率本来应该是10%
小弟不使用这个方法的原因是 如果这几间企业 平均稳定生命期是10年
大约10年会有因为什麽变化而绩效转坏 导致股本损失50%
(半年才看一次咩 有时看到时都跌很惨了)
(而且你看到跌30%到底是算价位便宜应该买进? 还是可能有未爆弹该卖?)
那平均每年会有一间出状况
报酬率算起来总共是 10%*10/10 + (-50%)*1/10 = 5%
其实跟买0050放着配息 差不多而已 报酬率稍高一点但风险也稍高一点
5F:嘘 ko531736 :对帐单? 02/04 00:36
※ 编辑: SweetLee 来自: 111.255.40.145 (02/04 00:48)
6F:推 Ting1024 :跑资料可以获得一点点东西,不过还是离市场太远啦 02/04 00:43
没错 跑完资料後 再看到市面上的书 会比较能判断哪些是有用的 哪些是没用的
而且知道为什麽还是要实际下去练功才有用 至少知道该努力的方向了
7F:推 skyprayer :股感比西洋棋更神秘 超级电脑也无法模拟 02/04 00:47
8F:→ skyprayer :西洋棋规则很清楚 股市涨跌的规则很难捉摸 02/04 00:48
ㄜ... 那用麻将来比喻好了
就是需要"技术"又需要一点"运气"的game 还有"对手是活的"变因在里面
※ 编辑: SweetLee 来自: 111.255.40.145 (02/04 00:53)
9F:推 paleomort :感谢分享,相当好的经验。 02/04 00:52
10F:嘘 hihieveryone:很糟糕掰了 02/04 01:36
11F:推 su27 :2006年的资料模拟0050我的绩效都两三百%以上 02/04 02:40
12F:推 arbit :恭喜成为编号23 徵文活动结束後至少可得888P 02/04 04:46
13F:推 Suboy :前辈的话要听....跑这些东西都还不能成为买卖依据。 02/04 08:14
当每个前辈说法不一样时 只能靠自己研究来判断了
我们做工程也常遇到这种事 A说这样 B说那样
要听谁的还是要自己研究分析完後才知道 前辈的说法就是用来加速自己的研究的
14F:推 asiu :如果加入货币供给额 经济成长率 GDP 可能会更好 02/04 10:02
这... 太难了吧? 我的资料里面没这些数据
15F:推 oldxeng :股龄17年不简单 02/04 10:59
除了第一年以外 大部分没认真在玩
去年底开始看一些书 准备退休时有些事情可以动脑 免得老年痴呆了
16F:推 ljsnonocat2 :是用哪个软体回测?套装软体 excel 还是自己写? 02/04 11:07
用EXCEL里面的VB Script写的 资料用EXCEL从证券交易所抓的
17F:推 eyenet11 :买定存股17年,持股成本变0了吗? 02/04 11:30
18F:→ eyenet11 :人生有几个10年可以玩股欸? 02/04 11:36
呵 看你怎麽算吧
像我用元大的Yeswin 有些持股的成本它就显示0元(我也不知道它怎麽算的)
但以我的观点 他其实并不是成本0元
如果买两张10元 涨到20元卖掉一张 再跌回10元
我比较喜欢说"已实现获利50% 未实现获利0%"
如果说"另一张持股成本0" 会让我脑袋有点混乱 而且难以跟其他策略比较绩效
※ 编辑: SweetLee 来自: 111.255.163.118 (02/04 14:08)
19F:推 virtual :推 02/04 17:35