广告
广告
广告
广告
广告
广告
广告
广告

您的位置: 零点财经>股票知识>量化交易> 回测一月效应策略的回测代码

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

时间:2017-11-20 08:28:32  来源:量化交易  本篇文章有2871字,看完大约需要10分钟的时间

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

时间:2017-11-20 08:28:32  来源:量化交易

回测一月效应

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

这里给出了在标准普尔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))];


来源:量化交易 编辑:零点财经

相关推荐

热门关键词

相关阅读

为您推荐

k线图
移动平均线
股票知识
MACD
老丁说股
股市炼金术
热点题材
KDJ指标
股市罗盘
股参会
读懂上市公司
成交量
牛股学堂
股票技术指标
股票大盘
分时图
股市名家
主力
涨停板复盘
视频教学
概念股
股票龙虎榜
股市要闻
缠中说禅
强势股
波段操作
股票盘口
短线炒股
股票趋势
涨停板
股票投资
长线炒股
炒股技巧
个股新闻
新股要闻
行业资讯
主力研究
市场动向
股票问答
股票术语
个股点评
宏观经济
财务分析
热点专题
本周策略
炒股软件
上证早知道
每日一股
经济学术语
期货
港股要闻
外汇要闻
期货要闻
美股要闻
基金要闻
股票黑马
股票震荡市场





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































相关栏目推荐

栏目导航

网站首页
老丁说股
李大霄
严为民
股票问答
股票术语
视频教学
网站地图

copyright 2016-2018 零点财经保留所有权 鲁ICP备16025527号-1 免责声明:网站部分内容转载至网络,如有侵权请告知删除

联系QQ:253161086

零点财经保留所有权 鲁ICP备16025527号-1

免责声明:网站部分内容转载至网络,如有侵权请告知删除

联系QQ:253161086