回測一月效應策略的回測代碼

  |  

回測一月效應


這裏給出了在標準普爾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))];

推薦閱讀

相關文章

價升量縮的經典運用(拓維信息)

在衆多漲停基因中,“價升量縮”是唯一一個可以用單個基因來做預報的。對“上海物貿”這隻股票,我們用“價升復縮”這一個漲停基因來預報,這5次預報5次全部成功。此前我們於2013年6月7日、6月26日、8月20日對“中青寶”的多次盤前預引也都是採用了“價升量縮”這個基因。成功率也很高。

KDJ指標的實戰經驗應用(一)

在券商傳統常用的錢龍軟件中,技術指標就有幾十中,讓新股民投資者無所適從,隨着電腦的普及,特別是股票專業軟件的不斷創新,一些股票軟件帶有自編指標函數,更讓技術指標愛好者樂此不疲勇於改編創新,網上流行的指標更是成千上萬,也讓老股民指標目不暇接,其實萬變不離其宗,無非價量均線不同組合表達方式的變異,

均綫可以揭示下跌趨勢

均綫可以揭示下跌趨勢技術特徵在下跌的初中期,短期移動平均綫嚮下跌破中長期移動平均綫,形成的交叉叫死亡交叉,簡稱死叉。死叉錶示股價可能即將下跌。如下圖所示。

倉位及資金管理貢獻性

下麵是筆者的一個實戰案例:2009年6月湖北金環以漲停開盤,雖然接近11點時漲停闆被打開,但是15分鍾後再次封死漲停,再也沒被打開。這引起筆者的注意,經過分析,它符閤箱體形態,並以漲停形式突破,突破時大幅度放從,且均綫還符閤粘閤共振嚮上形態,所以筆者認定該股後期會有很好的錶現。

均綫死亡榖特殊形態實戰應用技巧分析

死亡榖是指股價或指數見頂迴落時,帶動5日均綫下穿10日均綫和20日均綫,10日均綫下穿20日均綫,三條均綫交叉形成的尖頭嚮下的不規則三角形。其中三個交叉中,至少有兩個是死亡交叉。因其外形像山榖,後市看跌,所以稱為死亡榖。死亡榖是與銀山榖、金山榖相對的一種技術形態,技術形態的構成和特徵相同,隻是方嚮和技術含義相反。

吸籌時有什麼典型形態?漲停板的漲停策略有什麼?

吸籌時的典型盤面形態不同的主力有不同的吸籌手法。就常見情形來說,若不是個股有火爆的炒作題材,主力一般會在低位區耐心地吸籌,因爲這樣可以買到更多的廉價籌,既降低了持倉成本,也增加了控盤勝算。這種常見的吸籌方式也對應着典型的盤面形態:低位區的緩慢攀升(但走勢強於同期大盤)且有量能的溫和放大。

KDJ指標4種買點(圖解)

指標概覽隨機指標簡稱KDJ,是一種超買超賣型技術指標。KDJ指標如上圖所示,KDJ指標中包括三條曲線分別是指標線K、指標線D和指標線J。這三條曲線中波動最頗繁的是指標線J。指標線K次之。指標線D的波動最爲緩慢。投資者在應用KDJ指標時需要注意以下兩點:(1)KDJ指標是一個短線技術指標,適合分析較短週期內股價的走勢。

江南紅箭K綫圖(2009.10-2010.3)的趨勢是什麼樣的?

如圖2-4,江南紅箭(000519): 自2008年11月初該股股價見曆史大底以來,到2009年12月下旬,該股股價已經持續上漲一年多,且漲幅達到驚人的7倍多。2009年12月下旬該股股價已到達曆史高位,進入高位橫盤築頂階段。

股票KDJ指標的使用技巧及注意事項

KDJ指標的使用技巧1.K與D值永遠介於0到100之間。D大於80時,行情呈現超買現象。D小於20時,行情呈現超賣現象。2.上漲趨勢中,K值大於D值,K線向上突破D線時,爲買進信號。下跌趨勢中,K值小於D值,K線向下跌破D線時,爲賣出信號。 3.KD指標不僅能反映出市場的超買超賣程度,還能通過交叉突破發出買賣信號。

選股技巧:選股時避免教條主義

新股民在選股時有時易犯教條主義錯誤。有些理論指導投資者只買下跌的股票而不是賣上漲的股票,問題是這樣就能迴避風險嗎?要知道股票是可以一跌再跌的。另一方面,在某些股票一漲再漲之時眼看着可以獲得的利潤而不採取行動也是痛心的錯誤。