R語言金融:用quantmod快速畫K棒和回測

R的股票神器quantmod,帶你畫出回測圖

MinKuan
5 min readAug 3, 2020

前言

今天透過R裡面的quantmod套件簡單畫出你要的K線圖、指標和策略的回測。

將學習到

  • quantmod的搜尋股票
  • quantmod的繪製K線及插入指標
  • quantmod策略回測

環境設定

RStudio

使用套件

quantmod

開始工作

步驟1:安裝R和套件quantmod

https://rstudio.com/products/rstudio/download/#download

選擇自己使用的電腦環境做安裝即可,建議不要更改路徑以免日後忘記。
基本上R是個open source所以是免費的,因為是免費的所以很受歡迎也有不少人開發了有趣的免費套件供大家使用。

RStudio基本介面
安裝quantmod

從上方工具列的Tools>Install Package打開如上圖,在Package輸入quantmod,按右下角的Install即可。
或是輸入install.packages(“quantmod”)也可以。
如果有要選擇地區則選Taiwan(Taipei)。

步驟2:繪製K線圖以及均線圖

#匯入quantmod
library(quantmod)
#取得股價資訊
getSymbols('AAPL')
#印出資訊其中包含open、high、low、close、volume、adjusted
AAPL

#繪製K線
chartSeries(AAPL[“2020–01::2020–06”],theme=”white”)

getSymbols('AAPL')是默認從 yahoo finance取得Apple(‘AAPL’)的股價資訊。
如果要台積電可以用getSymbols(‘2330.TW’)。

chartSeries(AAPL[“2020–01::2020–06”],theme=”white”)畫出AAPL的K線從2020年–01月到2020年–06月,背景為白色。

ma_20<-runMean(AAPL[,4],n=20)#20日均線(20ma)ma_60<-runMean(AAPL[,4],n=60)#60日均線(60ma)addTA(ma_20,on=1,col=”blue”)#畫出20日均線且為藍色線addTA(ma_60,on=1,col=”red”)#畫出60日均線且為紅色線
2020/01至2020/06的K線圖、加入20ma和60日ma

步驟3:策略回測:當20ma大於60ma時做多;當20ma小於60ma時做空

#當ma20>ma60時,則為1否則為0
position<-Lag(ifelse(ma_20>ma_60, 1,0))
#ROC計算:log(今天收盤價/昨天收盤價),乘上poistion代表。若1則持有,若0則空手。
return<-ROC(Cl(AAPL))*position
#策略條件是60ma>20ma之後才會交易
return<-return[‘2010–01–01/2020–06-30’]
#cumsum計算累計值,exp函數是要計算累計損益
return<-exp(cumsum(return))
#畫出損益圖
plot(return)

position為一個時間序列,以日為單位,如果20ma大於60ma,設值為1;否則設值為0。由於我們是日資料,訊號發生時只能隔天做交易,故將這向量全部往後遞延一天。

ROC計算:log(今天收盤價/昨天收盤價),乘上poistion代表。若1則持有,若0則空手。

我們策略條件是60ma>20ma之後才會交易,統計值從2010–01–01開始到2020-06–31的資料。

cumsum計算累計值,即將每一分量之前的值累加起來。取exp函數是要計算累計損亦。(這裡運用數學:log(a)+log(b)=log(ab),exp(log(ab))=ab)。

回測2010–01–01到2020–06–31的損益圖

完整程式碼

小結

這次使用R語言的quantmod做股價的繪圖和回測,如果你對於以上的內容有建議歡迎提出,一起討論絕對是成長的捷徑!!

參考資料

第一次使用R語言做回測:六分鐘,就上手!
quantmod的官網

--

--

MinKuan
MinKuan

No responses yet