回测一月效应策略的回测代码

  |  

回测一月效应


这里给出了在标准普尔600小盘股上运用一月效应策略计算收益率的MATLAB代码。(源代码和数据可以从epchan. com/book/ example7_6. m下载。)

clear

load(’IJ R 20080131’);

onewaytcost=0. 0005;% 5bp one way transaction cost

years=.。

year(cellstr(datestr(datenum(cellstr(..

num2str(tday)),'yyyymmdd'))));

months=二

month( cellstr(datestr( datenum (cellstr(..

num2str(tday)),'yyyymmdd'))));

nextdayyear=f wdshif t (1, years);

nextdaymonth=fwdshift(1,months);

lastdayofDec=find (months==12&nextdaymonth==1);

lastdayofJan=find( months==1&nextdaymonth ==2 );

%lastdayofDec从2004年开始,

%所以将2004从lastdayofJan中删掉

IastdayofJan(1) = []; 0 o确定每个IastdayofDec后的lastdayofJan

assert (all(tday(lastdayofJan)> tday(lastdayofDec)));

eoy=find(years? =nextdayyear);%年末指数

eoy(end) _ [] ;%上一个指数不是年末的

%确保eoy日期与lastdayofDec日期匹配

assert (all(tday(eoy)==tday(lastdayofDec)));

annret=.。

(cl(eoy(2:end),:)-cl(eoy(1:end-1),:))./..

cl(eoy(1:end-1),:);%年收益率

]anret=..

(cl(lastdayofJan(2:end),:)-

cl(lastdayofDec(2: end).:))./cl(lastdayofDec(2:end),:);

% ]月收益率

for y=1:size(annret,1)

%选取年收益率可观的股票

hasData=..

find( isf inite(annret( y,:)));

%根据前一年的收益率排序

[foo sortidx]=sort (annret (y . hasData ),fascend');

%买入十分位数(decile)收益率最低的股票,卖出十分位数收益率最高的股票

topN = round (length (hasData)/10);

%组合收益率

portRet=..

(smart mean (janret(y. hasData(sortidx(I:topN))))—..

smart mean (j anret (y, hasData(..

sortidx(end一topN+1 :end)))))/2-2*onewaytcost;

fprintf(1,'Last holding date%i:Portfolio

return=% 7. 4f\n’.tday(lastdayofDec(y+1)).portRet));

end

%这里应该是输出

%最后持有期20051230:组合收益率=-0.0244

%最后持有期20061229:组合收益率=-0.0068

%最后持有期20071231:组合收益率=0.0881

这一程序用到了大量的工具函数。第一个是assert函数,用于确保程序是正确的。

function assert( pred,str)

写若前提条件非真,ASSERT会报错.

%assert (pred, string)

if nargin<2,str=’;end

if ^~ pred

s=sprintf ('assertion violated:% s,str);

error(s);

end

第二个函数足fwdshift函数,与lag1函数相反,是将时间序列函数向前移动一步。

function y=fwdshift(day, x)

assert(day>=0);

y=[x(day+1:end,:,:);..

NaN*ones(day, size(x,2),size(x,3))];

推荐阅读

相关文章

均线金山谷银山谷图形

前段时期,小王见某股从底部上来时出现了一个向上跳空缺口(见图1箭头A所指处),与此同时,该股5日均线、10日均线、30日均线也形成了多头排列。从技术上说,出现向上跳空缺口和多头排列都是做多的信号。于是,小王在该股跳空缺口形成的第二天就重仓追了进去。但不料该股很快就冲高回落,结果小王被套住了。

如何分析股票B段三台阶图形?有哪些实战案例?

下图是上海鲁能股份在1999年6月至2000年3月前后的走势图。这是一幅典型的B段三阶日K线和成交量走势图。在下图中:A点是A段结束点(1999年6月3日,股价为16.45元).1999年6月4日是3TM上穿0轴,对应的日K线图是金四线交叉,成交量放大, B段开始。

随机指标背驰准确性高

综合了动量观念,强弱指标与移动平均线的优点——随机指数是敏感的指标工具。它在图表上是由%K是%D两条线所形成的,因此也称KD线。行情是一个明显的涨势,会带动K线(快速平均值)和D线(慢速平均值)向上升。涨势开始迟缓,则会慢慢反映到K值和D值,使K线跌破D线,此时中短期跌势确立。

摘星脱帽指的是什么?如何把握摘星脱帽股的投资机会?

摘星脱帽是指实行特别处理的个股恢复成正常交易的个股,去掉ST或* ST特别处理标志。股票摘掉ST或* ST的帽子后,出现涨停是一种常见的盘面现象。摘星脱帽就意味着企业远离退市风险,对股票持有者来说可谓长舒了一口气,对其庄家来说更是阴霾尽去,不来几个涨停难解心头之恨,所以涨停也就顺理成章了。

均线死亡谷特殊形态实战应用技巧分析

死亡谷是指股价或指数见顶回落时,带动5日均线下穿10日均线和20日均线,10日均线下穿20日均线,三条均线交叉形成的尖头向下的不规则三角形。其中三个交叉中,至少有两个是死亡交叉。因其外形像山谷,后市看跌,所以称为死亡谷。死亡谷是与银山谷、金山谷相对的一种技术形态,技术形态的构成和特征相同,只是方向和技术含义相反。

均线炒股技巧!10日均线买卖战法

10日均线买卖战法 操作 上以"顺势而为,波段操作"为好。那怎样波段操作呢?简单讲就是按照均线,个股运行下破10日均线,同时10日均线向下运行,这是波段头部,要卖出获利; 而当个股在30日、60日均线获得支撑,或者个股突破趋势压力线,或突破长时间盘整,那就是安全的买入机会。

期货市场具有什么基本经济功能?

期货市场在稳定与促进市场经济发展方面有以下功能。(1)规避价格风险的功能。期货市场最突出的功能就是为生产经营者提供回避价格风险的手段。即生产经营者通过在期货市场上进行套期保值业务来回避现货交易中价格波动带来的风险,锁定生产经营成本,实现预期利润。也就是说,期货市场弥补了现货市场的不足。(2)发现价格的功能。

横盘整理的K线标准

这是第一位的要素,只有确定了横盘整理K线的界定标准,才能在今后的操作中快速、准确地辨识出这种模式。

KDJ指标4种卖点(图解)

卖点1:指标线D突破80—突破时卖出图例1 乐山电力日K线如图例1所示,2009年11月17日,乐山电力(600644) KDJ指标中的指标线D突破80,进入超买区间。这个形态说明多方力全强盛到极致,有后续力量不足的危险。股价继续上派的空间已经相对较小。相反,一旦多方力量稍有减弱,股价将受到空方持续打压而下跌。

掌握成长股的选择技巧

掌握成长股的选择技巧投资者在选择成长股时要考虑下面几个因素。第一,企业要有成长动因。这种动因包括企业领导人、内部管理、技术以及产品等重大生产要素的更新和企业某种特有的重大优势等。第二,企业规模比较小。小规模企业对企业成长动因的反映比较强烈,市场、产量、资本等要素的上升空间大,所以成长条件比较优越.第三,行业具有成长性。