「第1回 Japan.R 午後の部」の金融系セッション(資料&プログラム)
第1回 Japan.R 午後の部で金融系セクションを設けていただいて話した。
当日使った資料
PDF版が欲しいという奇特な方はコチラ(PDF)から落として下さい。
以下、上記資料を作成するために使用したコード。
パッケージは適当にinstall.packages()関数でインストールしておいてください。
- 時系列解析
- 例1:S&P500リターン時系列をGARCHモデルで分析
#Garchモデルによる時系列分析パッケージ library(fGarch) #各種webサイトからデータを取ってこれるパッケージ library(fImport) #S&P500 Indexデータを取得 & リターン系列(算術・日次)に変換 sp500.index <- fredSeries("SP500",from = "2008-01-01") sp500.return <- sp500.index / lag(sp500.index)-1 sp500.return <- sp500.return[!is.na(sp500.return),] #Garchモデルによるフィッティングの実行 sp500.fit <- garchFit( ~ garch(1, 1), data = sp500.return, trace = FALSE) plot(cbind(sp500.return,volatility=volatility(sp500.fit, type = "sigma")))
-
- 例2:株価表示
#株価等の時系列データを美しくPLOT&テクニカル指標を追記できるパッケージ library(quantmod) #やほーの株価データ取得 getSymbols('YHOO') candleChart(to.weekly(YHOO),subset='2009',theme='white.mono',TA="addVo();addEMA();addRSI()",up.col=0)
#アメリカの株価データが入っているパッケージ library(fEcofin) #ポートフォリオ分析ができるパッケージ library(fPortfolio) #アメリカの株式データ取得 data(berndtInvest) berndt <- as.timeSeries(berndtInvest) #マーケットインデックスの値と無リスク金利を除く data.return <- berndt[, -c(10, 17)] #効率的フロンティアを計算 frontier <- portfolioFrontier(data.return) tailoredFrontierPlot(frontier) #接点ポートの計算 portfolio.tangency <- tangencyPortfolio(data.return) #投資ウェイト&リスクウェイトの表示 weightsPie(portfolio.tangency) covRiskBudgetsPie(portfolio.tangency)
- リスク管理
- 例1:クレイトンコピュラと正規コピュラの生成
#コピュラを生成できるパッケージ。他にもfCopulaeもあるが、こちらのほうが優秀 library(copula) N <- 2000 #2次元クレイトンコピュラオブジェクトの生成 clayton.cop <- claytonCopula(2) #2次元クレイトンコピュラに従う乱数生成 clayton.r <- rcopula(clayton.cop,N) #適当に描画 colnames(clayton.r) <- c("x","y") plot(clayton.r,main="Clayton Copula") #正規コピュラの生成 gauss.cop <- normalCopula(0.7) gauss.r <-rcopula(gauss.cop,N) #同様、適当に描画 colnames(gauss.r) <- c("x","y") plot(gauss.r)
-
- 例2:Gaussian Copulaによるデフォルト相関
#プレーンバニラオプション分析用のパッケージ library(fOptions) #行使価格60円・ボラティリティ20%・金利10%・配当なし price.strike <- 60 volatility <- 0.2 interest.rate <- 0.1 #outer関数で回すために関数オブジェクトを作成 Delta <- function(x,y){ GBSGreeks(Selection = "delta", TypeFlag = "c", S = x, X = price.strike ,Time = y,r = interest.rate, sigma = volatility, b = interest.rate) } Gamma <- function(x,y){ GBSGreeks(Selection = "gamma", TypeFlag = "c", S = x, X = price.strike ,Time = y,r = interest.rate, sigma = volatility, b = interest.rate) } #株価と満期のベクトルを作成 price.stock <- seq(55,65,length=30) maturity <- seq(0,0.5,length=30) #リスク指標のデルタとガンマを上で指定した各株価・満期に対して計算 delta <- outer(price.stock, maturity,Delta) gamma <- outer(price.stock, maturity,Gamma) #計算したデルタとガンマを3次元描画 persp(price.stock, maturity, delta, theta = -30, phi = 30,ltheta = -30, expand = 0.5, col = rainbow(length(maturity)),shade = 1, ticktype = "detailed") persp(price.stock, maturity, gamma, theta = 30, phi = 30,ltheta = 210, expand = 0.5, col = rainbow(length(maturity)),shade = 1, ticktype = "detailed")