回测跨年季节趋势策略

  |  


这里给出了我之前提到的跨年李节趋势文易策略的.MATLAB代码。(源代码可从epchan. com/book/example7_7. m下载。)由于数据是基于2007年12月23日获取的标准普尔500指数,所以存在存活偏差。

clear;

load('SPX 20071123','tday','stocks','c1');

%找到月底几天的指数.

monthEnds= find (isLastTradingDayOf Month( tday));

monthlyRet=..

(cl(monthEnds,:)-lagl (cl(monthEnds,:)))./..

lagl(cl(monthEnds,:));

mycl=fillMissingData(cl);

%按月收益率升序排列

[monthlyRetSorted sortIndex]=sort(monthly,Ret,2);

%排序后的前一年本月收益率

prevYearMonthlyRetSorted=backshift(12 , monthlyRetSorted) ;%去年排序后的指数

prevYearSortIndex=backshift(12,sortIndex);

positions= zeros(size( month IyRet));

for m=13:size( monthlyRet,1)

hasReturns=...

isfinite(prevYearMonthlyRetSorted(m,:))&..

isf inite(cl(monthEnds( m-1),:));

mySortIndex=prevYearSortlndex(m,hasReturns);

%买入十分位数最高的几只股票,卖出十分位数最低的几只股票

topN=floor( length(mySortlndex) /10);

posiions(m-1,inySortlndex(1:topN))=-1;

positions(m-1,..

mySortlndex(end-topN+1:end))=1;’

end

ret=smartsum (lag1(positions) .*monthlyRet,2);

avgannret=12 * smartmean(ret);

sharpe= sqrt (12)*smartmean(ret)/smartstd(ret);

fprintf (1,..

'Avg ann return= %7.4f Sharpe ratio= %7.4f\n',..

avgannret,sharpe);

%输出应该是年收益率均位=-0.9167 Sharpe ratio=-0.1055

这一程序用到T几个工具函数,第一个是LastTradingDayOf Month,它返回1和0的逻辑数组,用以判断某个文易日是否是一个月的最后一个交易日。


function isLastTradingDay0f Month=..

isLastTradingDayOfMonth( tday)

% isLastTradingDayOfMonth= isLastTradingDayOfMonth( tday)返回一个逻择序列。如果tday(t)确为当月的最后交易日,返回True.

tdayStr=datestr(datenum(num2str(tday),'yyyymmdd'));

todayMonth= month(tdayStr);

tmrMonth=fwdshift( ],todayMonth);%tomorrow's month

isLastTradingDayOfMonth= false( size(tday));

isLastTradingDayOfMonth (todayMonth?二tmrMonth &..

isfinite(todayMonth)衣isfinite(tmrMonth))=true;

另一个工具函数是backshift函数,它与lagl函数类似,但可以平移任意天数。

function y=backshift(day,x)

%y= backshift (day, x)

assert(day> = 0);

y= [NaN(day,size(x,2),size(x,3));x(1:end-day,:,:)];

如果你尝试录近5年而不是全部数据,会发现平均收益率更低。

推荐阅读

相关文章

炒股被套后该如何解套?

股民被套牢分两种情况,一种是短期操作不利导致被套,这种被套很好解决,但是现在大多被套的股民都属于第二种,股市大规模的崩溃下跌,因为系统性风险导致被套。在这种情况下,解套难度上升,其中一些误区,更要尽量避免。 被套不怕,宁死不卖,不卖就不赔。这种想法很可怕,因为没有人可以预测到自己的股票究竟会跌到什么地步。

1分钟图均线止赢法则

均线系统空头排列止赢法则技术特征第一、在1分钟的分析周期上,股价反弹失败后,拉出一根大阴线,如下图所示。第二、随后股价直接击穿均线系统所有均线,均线系统呈现为空头排列。第三、此时,1分钟的中长期的均线组合对股价的上行构成了反压,制约着股价上行。

MACD的使用技巧:趋势第一

MACD指标作为判断市场趋势的重要工具,投资者在使用的过程中,首先要注意的就是利用该指标来判断市场的趋势。这是进行股票操作的基础。当DIFF线和DEA线较长时间在零轴上方运行时,表明市场处于上涨趋势中。接下来投资者应采取持股待涨或逢低加仓的策略。

永不套牢之进阶停损法操作方法讲解

永不套牢之进阶停损法进阶停损价设法通常一般投资人都有停损概念,只不过有人停损设在7%、10%、15%;也有设在20%之人,10万元买进一档股票,跌剩8万元停损出场?真是不可思议!果真如此,那么100万进场,非要跌至剩80万才出场吗?当然不是,以下提供进阶停损价设法参考:买卖股票可以不设停利点,但一定要设停损点。

如何用1260均线把握买卖时机

1260均线可以说是一种短中期均线组合,是波段操作很管用的工具。1260均线的基本操作方法是,以120日移动平均线为背景线,用60日均线把握趋势,用10日和20日均线寻找买卖时机。当10日和20日均线处于60日均线之上,60日均线坚挺向上运行时,持股做多,当股价回调到10日或20日均线以下时,寻机买入。

MACD趋势交易技术

趋势的理论:在实战中,趋势线主要用来研判市场趋势。除此之外,投资者还要注意它的另外两种用法。(1)支撑与阻碍上升趋势线对股价构成支撑作用,下降趋势线对股价具有阻碍作用。上升趋势形成后,将两个或两个以上的波段高点进行连线,可以得出上升趋势的上升阻力线。上升趋势线对股价起到支撑作用,而上升阻力线将对股价构成一定的压力作用。

量化化交易的特点:漫漫前路

在你确信想要从事量化交易后,一大堆问题便会接踵而来:如何找出合适的策略?如何在进行回测前就能辨别出一个策略的优劣?如何对这些策略进行严密的回测?如果回测业绩不错,在交易结构和技术设备方面,你需要采取哪些措施来执行策略?如果这项策略在前期的真实交易中获利,该如何扩大规模以增加收入,同时又能管理好那些偶尔出现,

股票KDJ指标的使用技巧及注意事项

KDJ指标的使用技巧1.K与D值永远介于0到100之间。D大于80时,行情呈现超买现象。D小于20时,行情呈现超卖现象。2.上涨趋势中,K值大于D值,K线向上突破D线时,为买进信号。下跌趋势中,K值小于D值,K线向下跌破D线时,为卖出信号。 3.KD指标不仅能反映出市场的超买超卖程度,还能通过交叉突破发出买卖信号。

三处MACD指标在零轴附近死叉的案例详解

如图所示图5-34 保利地产走势图图5-34是保利地产(600048)的一段走势图,图中标记了三处MACD指标在零轴附近死叉的例子。首先是1号目标位,这是快慢线自高位下跌之后,在零轴附近得到支撑出现反弹金叉后的再次死叉。

低高低的绿柱组合形态反转形态出现的案例分析

如图所示。 图4-39 新华医疗走势图图4-39是新华医疗(600587)的一段走势图,图中标记的是一处低高低的绿柱组合形态。从图中看:首先,1号柱峰的绿柱增长幅度大,但是持续时间很短,然后绿柱就开始缩短。虽然不是主跌浪。但绿柱的大幅增长基本上可以证明股价出现了大幅下跌。这种情况一般都是反转形态出现的时候。