对于一套理论模型,如果对于历史的回测都不能取得满意的效果,那么,对于未来,你敢相信它吗?尽管对于历史的回测满意的模型,对于未来的效果,数学拟合意义来讲,依然是模糊的,但是,总比回测都不能合格的模型要强一些。这就是经典理论还能存在的理由之一。
(一)、年度级别的回测试验
一般散户,都会千方百计通过各种媒体找到股神巴菲特的言论和行迹,想从中学到点什么。可是,巴菲特从来不直接说股市技术问题。那么,他到底用什么技术?他的成功基于什么样的理论数学模型?
现在我们用回测的方式试探模拟一下。
假如你有持股一年以上、空仓一年以上的耐心(这种耐心很少有人具备),那么技术上,我们用一根线就可以炒股。这不是言过其实。看回测的结果。
既然是以年为单位,那么就建立一条简单的年均线。
操作的原则,就是股价在年均线之上持股,股价在年均线之下空仓。
几百亿美元买卖股票,不可能一天买卖利索,会持续1-6个月。
假如幸运的炒的是上证指数,我们看看效果。
基于上述原则建立买卖指示,并画出收益曲线。这就是所谓的回测。

在325那个低点,收益线超出范围,也就是收益线归0了。
在年线走平缓的阶段,频繁操作,反倒使收益率降低。但总体上来说,收益还是不错的。
随机再找两只股票看看收益情况。


我们可以看出,如果这二十多年总体上是朝上的走势,那么这种方法总体上是盈利的。对于走平的个股,这种方法比较吃亏,也就是二十年没赚钱,但是也不亏。
当然,炒股不可能就这么一根均线这么简单。为了弥补这根均线在走缓期间发生的频繁操作,给指标增加一点限制条件。
在走缓区间,不操作,直到明确上涨和下跌再操作。这实际是对编程者的考试了。


同样的两只股票,我们增加了买入、卖出的限制条件,如果均线的斜率大于-0.0033和小于0.0066不执行买入操作,这相当于确认熊市以后不再炒股。结果如图,尽管买入的动作有所迟缓,但是因减少了频繁交易,总体收益率是上升的。
策略编程,也就是这样一个过程。不断地通过条件限制,达到预期的操作目的,之后机械化执行。条件限制的本意是什么?博弈思想!
也就是说,利用经典理论实现程式化机械操盘有可行性。如果你的耐心足够,以上的简单操作方式,已经可以解决巴菲特的技术问题,就一根均线、加上一个限制条件足矣。你需判断的就一个问题,未来十年,这个国家的经济是否会继续发展,这就足够了。
当然,巴菲特的技术肯定比这要复杂。笔者只是想说,想当巴菲特不会是股市技术问题,问题出在别处。
这种操作方法,这样的操作频率(几年才买入、卖出一次),要忍耐30%以上的振荡而面不改色,不改当初的判断。对于散户和大户来讲,这是不可容忍的,需要降低级别,提高操作频率,这也是很多技术研究者的追求。当然,这种极致就是日内高频。各种理论实际都是在这方面下功夫,追求利益的最大化。
我们需要在操作频率和股市规则中找到一种平衡,并不是越频繁的操作对于收益率提高越有利,对于t+1的股市,相对来说,波段操作是最有利的操作。
尽管几百亿的资金不可能做到当日执行指示操作,那么会使资金赚钱的效率降低,但是,巴菲特不会就这一点技术。而且也不见得使用这个技术。这仅仅是假设你有这样的资金,同时就会这么一个简单的技术,你有没有当巴菲特的可能性!
这个回测试验证明,当巴菲特从技术来讲不难,经典理论就可实现,难在你能否聚集几百亿美元的资金,信任你在股市中操作。难在你炒股的时候是否可以学会等待和忍耐,同时还具有超乎常人的决断、执行能力!股市技术在你是否可以成为巴菲特这个问题上,并不是主要问题。
从他抄底道琼工业的操作来看,当时道琼工业从14272跌到9000左右,也就是跌幅30-40%区间就开始第一笔小仓位(100亿美金,对于他是15%-20%左右的仓位)建仓,这应该是江恩理论甚至江恩小课的内容。之后,一直追跌金字塔式逐渐加仓。直到底部6469。因此成为美国救市的英雄。之后,他就全世界旅游去了,现在道琼工业是24800左右,他又成了最后的赢家。如果考虑这样大资金的建仓时机问题,巴菲特是正确的。
当然一个散户按这种方式操作,那相当于抄底抄在半山腰,因为你是全仓操作。而对于巴菲特来讲,他接到了相对便宜的筹码,得以买入几百亿美金的股票。
以上的几个年线例子和方法,不建议你使用,当然可以做为选股的条件之一,毕竟操作上太滞后了,仅仅是做为一种技术条件方法的提示。
(二)、月度级别的回测
上面一节的例子,使用的是周线趋势图进行的年度级别的指示,年度级别的回测,发现的最大问题是指示的滞后,那么为了提高指示的灵敏度,需要降低显示的级别。假如是波段操作的,1-2月操作一次,那么会有什么样的效果呢?
分别采用周线和日线进行试验。在自然日中使用指标,会比交易日中提高一点灵敏度。
(注:笔者的方法大多使用的是自然日,而非交易日,这是读者需要留神的。指标修改的方法,在《机械化交易操作理念》一书中已经进行了解读、介绍。本书中,对指标的修改,不再进行解读,直接使用结果。)
在网络上,通常会看到一种一线定乾坤的操作方法,就如上一章提到的年线操作方法,本示例的方法,采用的是交易日的20天线。来看看效果。
设置条件,四周均线,相当于自然日28天,交易日20天左右。




随机找了四只股票,做一个不全面的简单评估:
该指标在整体十年以上牛市的股票中,表现尚属良好,回调幅度有限,能够保住部分牛市阶段的胜利果实;在振荡市中,表现较差,输于股票涨幅;甚至会由于频繁交易导致出现回收率跌幅大于股票的情况。
这是假如采取周线机械化操作的方式的回测结果。
如果采取日线指示的操作方式,结果会如何呢?
设定28自然日均线,相当于20交易日均线。这根均线实际表达的是股票沿着月均线波动的一种特征。自然界的月循环是29.5天,股市中,30自然日循环也是一个重要循环之一。江恩理论的30度。365天等于360度,1度约等于1自然日,这种方法如果使用交易日是使用方法错误。
采用日线交易方法,相对于周线操作方法,该指标变得相对敏感,交易频率适度加大,收益率有所提高,但是并未解决周线操作方式同样的基本问题。




因此,这样一种简单的一线定乾坤的方式,并不能解决股市的操作问题,根本无法实现一线定乾坤。这种方法,在熊市和调整市中存在严重问题。
为了弥补这给仍是,配合采用年线的一线定乾坤进行共同约束,看看效果如何。这实际就是综合性指标产生的一种思路。
没有哪个简单指标或算法能够解决所有的问题,那么,综合是必然的。
现在设定两条均线,一个是28个自然日,一个是365个自然日,约束条件是:股价同时站上两条均线买入,卖出条件是:股价跌破28日均线就卖出。




这样综合以后,收益率曲线在大牛、大熊市中表现优秀;但在慢牛和调整市中表现较差,甚至在慢熊过程中,频繁出现买在反弹顶上的问题。
为求指标美观好看,我们可以通过简单的程序方法,让指示线涨跌变成不同的颜色,但这对于程序化的买卖指示不可能产生任何影响。
(三)、小时级别的回测
同样的方法,如果在小时级别交易会产生什么样的效果呢?
如果强制同样的方法,由于还没有软件可以显示低于日线级别的自然日行情,那么这就需要一点简单的计算。
28个自然日,相当于20个交易日,也就是80个小时;
365个自然日,去掉周末,相当于大约251个交易日,再去掉长假等,实际大约是240个交易日左右。也就是2404个小时。
这么大的数字,在小时级别显示,一是会降低你的电脑速度,二是一般软件,为了避免影响速度,小时级别的数据往往控制在最近的几百天,如果更多的显示,就要下载新数据。
这两个因素,会使你的电脑变得显示吃力。假如你的电脑不够强大的话。
这种试验方法实际相当于,假如年度级别、周线级别、小时级别具有相同的分形规律,我们采用同样的决策方法,进行增加操作频率的试验。

尽管电脑卡钝,我们还是获得了如上的指示,而且收益效果不错。
操作频率相当于几天到几周一次的频率。
针对这个图,我们也会看到,买入卖出同一小时指示的情况二次;还有买入卖出同一天指示的情况;右侧顶部分,频繁交易还赔钱的情况。好在右侧顶之后,程序空仓不再交易,才保住胜利果实。至于长达将近一年的驻底时间,该指标无显示,也就是只许看着,不许买入。这是一般散户不能忍耐的。而且,第一次操作就赶上买卖同时显示,程序是按买入执行的,结果就开始赔钱,你会怀疑这个指标有问题,等真正上涨的时候,你又不敢使用这个指标了。而这个时候,它的显示又是大多数情况是正确的。
针对这个指标,买入指示相对表现较好,但是卖出指示“明显”滞后,需要利用别的技术指示卖出点位还是必要的。四维角度尺会对此有帮助!
同时,要想解决矛盾的同时显示问题,就需要再降低级别。也就是使用5或15分钟级别,这样可以解决同时显示的问题。但你也会发现,买入卖出同日显示的问题不能解决。也就是对于t+1市场,做不到日内买、卖的全仓交易。这种情况,针对操作环节只有一个办法解决,那就是不能满仓操作,你才有资金进行日内倒仓。
机械化交易的好处在于,没有操盘人的情绪影响在里面;当然,同时要求模型要有相对的可靠性。而绝对的可靠性,数学拟合意义上是不存在的!那个理论死穴低开你一定铭记在心,理论尚未解决,那么如何谈操作的绝对的可靠性?你只能考虑正确率足够大的问题。这就是博弈思想的精髓。
这个指标里面,没有任何未来函数,这一点要特别注意。如果你的操作策略程序使用了未来函数,你的操作策略实际是不成立的。针对这个问题,笔者在《机械化交易操作理念》中已经进行了明确的阐述。
这是一个简单到不能再简单的综合性(两个条件)策略,总体来说,方法还是有效的。假如你没有采用软件的程序化交易,这种操作方式对操作者的要求还是很苛刻的,漫长的空仓等待对很多人来说就是一种煎熬。
使用机械化交易的思维方式进行人工操作也不是不可行,而是,你有没有程序化一样的纪律性和执行性,拥有电脑一样的一根筋。对于人的贪心本性,这简直是一个要命的前提。而面对尚有理论死穴的交易模型,产生这种绝对的信任,你需要对股市拟合理论现状有充分的了解,并了解你的策略成功的概率以及错误的原因。
五分钟级别,这种方法技术上依然可以继续进行向下分形测试,这里不做过多解读,因为,这会导致你频繁的交易,笔者并不赞成。而且,到5分钟级别,由于高低开的问题,已经影响到了操作显示,也就是股市的随机性特征在这个级别已经影响到了操作的策略,这会使操作的效率降低,也就是收益率反倒会降低了。因此,笔者不赞成在5分钟级别使用这么简单的策略。在这样的级别里面,需要更多的技术给予辅助。而且,你要明白,2-7个自然日内的交易,两种极端对立的理论都难以掌控的理论模糊区,你可能是赤膊上阵,在真正的博弈。
学会笔者的四维理论以后,你可以试探着进行5分钟级别的编程,那么对于t+0市场,对于带有杠杆的市场,t+1市场的日内倒仓是有帮助的。但是,随机性的影响不会保证你100%的成功。
下面是小时级别的试验程序源码(小时级别专用),使用交易师软件。你可以进行修改,重复以上试验,以增加印象。同时,对指标可以进行进一步的改进。完善卖出条件。
aa:ma(c,20
4),colorred,linethick5;
mm:ma(c,2404),colorgreen,linethick5;
tt1:=aa-ref(aa,1)>0.0055;
tt2:=aa-ref(aa,1)<-0.0033;
bb1:=c>aa and c>mm;
bb2:=c<aa ;
上升三:PARTLINE((aa>REF(aa,1)),aa),colorred,linethick5;
下降三:partline((aa<REF(aa,1)),aa),colorblue,linethick5;
上升四:PARTLINE((mm>REF(mm,1)),mm),colorred,linethick5;
下降四:partline((mm<REF(mm,1)),mm),colorblue,linethick5;
//收益曲线
tjb:=bb1;
tjs:=bb2;
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb;
tjsell:=count(tjs,barslast(tjb))=1 and tjs;
drawicon(tjbuy,aa
0.990,10);
drawicon(tjsell,aa*1.01,11);
bEnterLong:=tjbuy; {多头买入}
bExitLong :=tjsell; {多头卖出}
If bEnterLong Then Buy;
If bExitLong Then Sell;
账户权益:Asset,OwnerScale,Colorwhite;//回测线
(注:程序中的tt1和tt2条件并未被使用,因为以上范例中未使用这两个条件。如果条件性地增加这两个条件,有助于你提高这种方法的选股成功概率。读者可自行试验这两个条件的取舍。)
(四)、五分钟趋势行情的回测
同样模型的5分钟级别的回测,笔者的电脑直接“罢工”。必须改变限制条件,以求电脑能忍受。这相当于周以下级别的短线、超短线操作。对错参半,这会让你想到扔钢绷的问题。知道这结论就可以了。你可以根据以上方式,重复性验证结论。我的电脑已经不堪重负了。
以上的回测至少告诉你,经典理论的理论死角问题并不是“致命”的严重理论问题,靠经典理论机械化操作,在特定的级别、频率下,在t+1市场,即便全仓操作依然可行。
使用方法的错误,特别是使用的操作级别、频率和仓位控制的错误,还有操作者的心态才是最主要的问题。散户通常错在这个范围。而这些错误产生的主要原因来自于对理论不能充分理解。
以上例子中,按照机械化交易的方式,一半以上的时间是空仓等待,才能保证机械化交易的成功。散户能做到这一点吗?不适合操作的时候,这种方法甚至会空仓一年之久。“那还玩股票干什么?”这就是散户亏损和不能成为巴菲特的另一个原因。
当然,如果股票是为了玩的,那以上问题你可以不考虑。博弈才更具有娱乐性,才更刺激。扔钢绷更具娱乐性,数学让人很头痛。

#三、回测试验给我们的启示相关推荐

  1. 量化选股策略搭建(三)(回测系统)

    前两篇文章讲了数据的下载及更新,今天这篇文章讲回测系统的搭建. 回测系统 首先, 个人理解的回测系统就是输入每日可买入的股票(这些股票是经过模型筛选得到的),然后回测系统根据一些条件买入卖出等操作. ...

  2. TICK回测研究三,数据获取部分完整的方案和实现

    交流Q群1064240775 一.概述 前面分别研究了自动获取历史的tick数据和压缩存储,接下来就是怎么实现整个全自动的流程,同时要考虑要用的时候该怎么办. 二.全自动的数据存取方案 1.已实现的功 ...

  3. 基于MT5的沪深股票回测三 自动化加载历史数据

    历史数据来源大概分为几类: 1. 券商股票API,获取tick数据,数据需要经过清洗,剔除了无效数据,生成不同周期的K线数据,整理后放入数据库或者文件,供导入MT5历史.缺点,需要自己清洗数据,存储, ...

  4. #(五)、回测成功是否就解决操作问题了?

    没有!这是很明确的答案. 笔者把股市的解读.预测.操作三个环节分开,实际也是在解决这个问题. 一个试验取得成功的回测指标,仅仅代表这种操作方式,在历史的这种行情波动情况下,能够产生盈利的效果.未来的行 ...

  5. 基于Matlab和Wind SQL数据库的通用选股策略回测程序

    function [y,varargout]=backtestcomplex(x,varargin) % Created on 2012-07-15 % latest justified on 201 ...

  6. matlab配对交易回测,精品案例 | 经典投资策略之配对交易策略

    原标题:精品案例 | 经典投资策略之配对交易策略 人不恋爱枉少年,在"全城热恋"的氛围下,股市也来凑热闹,配对交易策略油然而生.所谓"男女搭配,干活不累",成双 ...

  7. python均线斜率_一根20日均线闯天下?——量化回测“压箱底指标”

    来源:雪球App,作者: 阿飞Deep,(https://xueqiu.com/7843605955/130162290) 前面回测基于券商涨停策略.为探索新策略,也为验证之前研发的指标.特开启新回测 ...

  8. python 回测模块_回测调用研究模块总结(慎用Python3 PacVer 2.0)

    今天做程序的时候,需要在回测模块调用研究模块生成的数据,出了些问题,查了一下之前的帖子,做了下总结. 关于回测模块调用研究数据的问题,之前有两篇帖子. (1)打通回测与研究的文件通道 by 止一之路 ...

  9. 手把手教你python实现量价形态选股知乎_【手把手教你】Python实现基于事件驱动的量化回测...

    01引言 使用矢量化方法(pandas)建立的基于研究的量化回测框架,不考虑交易的委托成交行为,与真实市场情况差距比较大.今天为大家介绍的是基于事件驱动的回测框架,这是一种十分复杂的回测系统,力图模拟 ...

最新文章

  1. AD633低成本模拟乘法器
  2. 【攻防演练】蓝方值守阶段经验技巧
  3. 爱丁堡大学人工智能和计算机科学研究生申请入口
  4. 【渝粤教育】电大中专药剂学基础知识 (3)作业 题库
  5. django报错:ImproperlyConfigured和AppRegistryNotReady
  6. js正则表达式——数字校验
  7. python输出所有满足以下条件的3位整数_各位大佬帮帮忙吧 拜托了。求出所有符合下列条件的三位正整数:...
  8. 遇到的JAVA笔试题
  9. 屏幕录像大师2016【破解版】
  10. 锂电池欧姆内阻和极化内阻
  11. JobTracker作业启动过程分析
  12. 在LINLUX下面建立GPRS无线MODEM拨号
  13. php创蓝253四要素认证_PHP短信接口分享:适用于创蓝253平台下的短信验证码、短信服务接口...
  14. 语音识别(ASR)--语音转文字
  15. 微信小程序 —— 苹果机的兼容总结
  16. python实现归一化与标准化
  17. 《C Prime Plus》(第六版) 第03章 编程练习 7 英寸转换成厘米
  18. 计算机科学与技术论文摘要范文,计算机科学与技术论文范文两篇(2)
  19. 实现用户自定义表单,自定义工作流
  20. 福建江夏学院竞赛队新生练习(2021)

热门文章

  1. 微波信号发生器典型应用——TFN TG115 微波信号发生器 100KHz-15GHz
  2. oracle查询部门名称,oracle查询习题(一)
  3. java秒转换为年月日_SimpleDateFormat将月/日/年 时分秒转换为年-月-日 时:分:秒
  4. C语言习题:猜数字游戏(C语言随机数)
  5. Spark核心编程系列(一)——RDD详解
  6. DeFi保险协议InsurAce.io宣布与Mushrooms Finance达成战略合作为其平台用户提供智能合约安全相关保险服务
  7. windows cmd字典
  8. 一个技术总监的个人综合评估,希望对大家能有所帮助(转)
  9. java中冒号的用法
  10. 网卡的TSO卸载功能