R Packages: 開發與教學

JFE

English Tutorial

JFE 2.5.1  (Just Finance and Econometrics, 2020/10/1)


JFE 最新版本是 2.5.1
,包含了時間序列機器學習遞迴預測

2.5.1 新增 Recursive/Direct Forecasts with Time Series Machine Learning Methods:說明文件

2.1.3 新增 Risk Budgeting (Parity) Portfolio & Risk Optimal Portfolio:說明文件

2.1.1 新增強化Performance Index績效指標:說明文件

JFE 它設計精神在於簡化財經時間序列的解析,JFE基於Window 的核心組件 tcltk 開發,本身和R主控台結合,顯示都以R-Console為主。

我們簡介2.0 版本的 2 處更新:Backtesting 回測 和 GARCH 波動

install.packages("JFE") #裝置套件
library(JFE) #載入套件
JFE() #啟動 JFE 介面

使用JFE時,載入的資料必須:(1) 是 R內建格式(.RData or .rda);(2) xts 的時間序列。

建立 xts 時間序列格式的方法很簡單,先下載練習檔Close.csv,是道瓊成分的幾支股票收盤價,第1欄是「日」時間戳記。程式碼只有6行,如下:
library(xts) # 載入xts套件 #
data0=read.csv("Close.csv") # 載入外部資料 #
timeID= as.Date(data0[,1]) # 將第1欄轉成時間戳記 #

data1=data0[,-1] # 將時間欄移除的新資料,只保留價格數據 #
xtsClose=as.xts(data1, timeID) # 轉換成 xts 時間格式 #
save(xtsClose, file="Close.RData") # 存成 .RData 格式,大功告成了 #

只要把自己的資料建立成 xts 的時間序列格式,再將之儲存成 .RData,就可以使用 JFE 來簡化許多財務時間序列模型的分析。

下載範例資料: IBM.RData for Price Analytics, world20.RData for Assets Seleciton,, and dataDJ30.RData for Portfolio Backtesting。這些資料結構分別針不同的分析需求而建立,例如IBM單家公司開高低收量,適合技術指標分析,我們歸在Price Analytics。 財務時間序列的資料物件,不是價格就是報酬率,所以每個選單都有兩個資料載入選項載入:載入價格再轉換(Price data: Load and Transform),直接載入報酬率(Returns data: Just Load)。JFE載入資料對話視窗會先導引到資料夾或目錄,也就是:先選資料夾(按OK),後呈現檔案選單。

1. Portfolio Backtesting(投資組合回測)

Portfolio Backtesting選單除了最上面兩個資料載入選項之外,就是Backtesting這一項。資料選好( dataDJ30.RData)後,就可以點選 Backtesting

如上圖,投資組合Backtesting頁面最上面是選資料:
(1) Pick 1 bench asset:可以指定基準(bench)資產報酬率,這筆資料最下方是道瓊指數(DJI);若選None,則會計算橫斷面平均。
(2) Pick assets you won't use:資料表內有沒有不要用的?如果基準資產是道瓊,程式會自動去除在接下來的回測。有的資產新上市缺值多,在長時間回測時,可以考慮移除。

投資組合演算的關鍵在下面幾個選項
(1) Portfolio Strategy: 也就是選擇數學規劃求最適解的策略。Tangency是Sharpe績效值最大的點,GMVP是整個Frontier風險最低的點。
(2) Risk Type: 作為目標函數的投資組合風險。
(3) Portfolio constraint: 做多,或允許放空
(4) Correlation Estimator: 這是回測表現最關鍵的共變異數矩陣,我們提供了7個,除了Sample Covariance是傳統的樣樣本共變異數矩陣,其餘的都是穩健型(Robust)。雖然文獻上可以用的穩健矩陣很多,但是有的計算耗時,我們就不列入。Spearman 估計式是無母數,很驚訝地表現最好,只是drawdown偏高,因此我們將之列入。Ledoit-Wolf 貝式濃縮矩陣,文獻上(J. of Empirical Finance, 2003)蠻有名。

我們的資料有28筆資產,加上一筆基準。所以每次回測都必需要計算28x28的矩陣,所以演算效能要求是蠻高的。

最後一個選項是Backtesting All in One,是「2個策略+7個矩陣」一次做完14種組合,費時約5∼10分鐘,未來的更新會加上平行運算來加速運算。

算完後,跳出一個頁面讓您可以簡易的比較,也可以儲存。如下圖,每個策略加上7個共變異數矩陣的結果,可以存成一個list檔,檔名如標號9和18所示:按下去就會存檔。

例如,如果存成.MV_Tangency.RData,我們以指令

library(fPortfolio)
print(load(".MV_Tangency.RData"))

載入,print 物件名稱是 OUT.tangency,OUT.tangency[[1]] 就是covEstimator的結果,OUT.tangency[[2]] 就是 Ledoit-Wolf Estimator 的結果,fPlotfolio的所有物件函數methods,都可以使用,例如:

plot(OUT.tangency[[1]], which="all") #繪圖

未來更新計畫:新增兩個傳統策略,共變異數矩陣添加 LPM(Lower Partial Moments), SLPM(Symmetric Lower Partial Moments) & RMT (Noise-reduction Random Matrix Theory)。

2. GARCH

承上,載入資料,GARCH 選單進入如下

        

如上圖左邊頁面,最上面是選資料:
(1) Pick One:選擇要分析波動的數據。
(2) External Xs in MEAN: Mean Equation 內其餘外生變數。
(3) External Xs in GARCH: Variance Equation 內其餘外生變數。

下來有兩塊:
(A)
左邊有3:

(1) Frequency Conversion: 載入資料是日資料,可以將之降頻為週到季。以週為例:降頻不是週平均,而是以週最後一天價格計算的週報酬,也就是週五對週五的報酬。下一版,會考慮不同週的定義。
(2) GARCH models: 是 GARCH 的 5 種產生模式。
(3) Distributions: 是 8 種機率分布,用來配飾MLE計算。

(B) 右邊有1塊:都是Mean Equation的設定。

估計完後,會自動存檔,並在主控台顯示路徑(工作目錄),如上圖右邊頁面下方。

例如,如果存成 sGARCH_norm_11.RData,我們以如下指令載入相關套件

library(rugarch)
library(xts)
print(load("sGARCH_norm_11.RData"))

載入load 再用print 可以看內存物件名稱,物件都是 myFit,rugarch的所有methods 物件函數,都可以用在myFit,例如:

plot(myFit, which="all") #繪 12 張圖,如下

plot(myFit, which="12") #繪 News Impact Curve圖

其餘如下

# 估計係數
print(round(myFit@fit$matcoef,4))

# 取出GARCH series
print(Sigma(myFit))

# Nyblom 檢定
print(nyblom(myFit))

# Sign Bias 檢定
print(signbias(myFit))

# Goodness-of-Fit 檢定
print(gof(myFit,c(20,30,40,50)))

# Info Criteria value
print(infocriteria(myFit))

# Likelihood value
print(likelihood(myFit))

未來更新計畫:多變量GARCH,realized GARCH 的處理。

 

 

 

 

 

 

網站計數器