電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus


開發台積電波段策略,搭配部位控管,使用R語言六個步驟輕鬆上手!!


最近給了幾場實做的課程,原本是為了教學R語言與quantmod套件,沒想到隨意開發的結果,這績效竟然也還能看,似乎真的可以拿來上線操作。於是我決定把他寫下來分享,但我也沒實際玩過,所以後過自負。畢竟有些我使用了很有"致命吸引力"的馬丁。在風險沒控制好的前提下,這絕對不是一個好的做法!!

R語言的好處就是免費,搭配quantmod套件,不用購買行情資料。你只需照著打,複製貼上,三分鐘就做開始玩策略回測。
第一步:下載安裝R語言。可參考第一次使用R語言做回測就上手
當然,對R語言不熟悉的朋友可參考R語言翻轉教室,全部完成保證實力強強滾。

第二步:安裝quantmod套件,兩行指令如下:(輸入後按ctrl+a 全選,ctrl+r 執行就對了)
install.packages("quantmod")
library(quantmod)

第三步:下載雅虎股市日K資料
STK=get(getSymbols("2330.tw"))  ##下載台積電歷史日K資料
STK=as.matrix(to.weekly(STK))  ##將日K資料轉為週K資料
chartSeries(STK)  ##畫出台積電歷史周K

第四步:設定參數與損益向量
profit=setNames(numeric(length(rownames(STK))), rownames(STK))
##設定profit向量紀錄每周損益

lastC=STK[1,4]  ##先記錄第一週的收盤價

資料下載ready後,便可開始做回測。我們進場依據為為每周第一天,開低買進台積電一張,週五收盤結束部位。因此實際的行情回測需從第二週開始,第一週只能記錄收盤價:

for (m in rownames(STK)[-1]) {  ##開始以每週為單位跑迴圈

fee=ceiling(STK[m,1]*1000*(0.001425*2*0.5+0.003))  
 ##設定手續費與稅(假設手續費打5折)

if(STK[m,1]<=lastC){profit[m]=(STK[m,4]-STK[m,1])*1000-fee}  ##開低買進的損益

lastC=STK[m,4]  ##紀錄本周收盤價,做為下週判斷開高開低的依據
}

第五步:檢查策略程式碼的回測結果是否正確?
head(cbind(STK,profit),20)
## 可觀察前20筆的績效,是否確實執行策略

第六步: 畫出績效曲線圖
plot(cumsum(profit),type="l",col="red",lwd=2)

由於雅虎股市下載的資料從2007-01-05到現在,可以發現這將近10年的績效沒有很好,扣掉手續費後賺賺賠賠。別灰心,我們先使出大絕招: 馬丁格爾。(註:這是風險很高的做法,哥有練過,只是為了示範教學別亂用。)

使用馬丁格爾:上次輸,這次加倍壓;上次贏,這次壓1張。

績效瞬間變的還不差,這十年來來賺了將近30萬,最大壓的張數為64張,也就是連輸6次。

當然,馬丁的風險絕對很大,過去成功更不代表未來,我們當然不可能實際上線這樣做。來看保險一點的類馬丁。

等差類馬丁:上次輸,這次多壓1張;上次贏,這次壓1張。


雖然等差類馬丁賺得更少,但似乎更穩定了。這十年來賺了將近20萬,但最大張數只壓了7張。這樣的風險一般民眾應該還可接受。

當然,上面還是過於激進的做法。我們用一個較為保守的方法:上次輸,這次壓2張;上次贏,這次壓1張。



左圖是原始策略,右圖是資金控管後的損益。總獲利達到NT 121,735,最大回檔為NT 34,289。且最大張數只有2張。當然,我們可以把上面的策略弄得更完美,舉例來說,只有上次輸,這次才會壓1張。


很明顯的,綠色的回檔被有效控制住,總績效雖然只有 NT 108,757,但回檔只有NT 10,636。這個策略,再搭配部分分數資金控管法,我想就是一個可以上線的策略了。週一買,週五賣,中間過程請專心上班不用盯盤,還蠻適合上班族的朋友的。

另外申明,已上皆為教學內容,如果你覺得合理可上場廝殺,後果就要自行負責唷。當然你也可以測其他股票,其他策略,但最終還是那句話,交易的資金控管還是最重要的!

上場前請先規劃好想清楚,再來就是徹底執行瞜!! 祝大家操作順利!!

0 意見: