投資信託「eMAXIS」のデータを分析する−1(データ取得関数作成編)
「eMAXIS」という手数料の安い素晴らしいインデックスファンドを三菱UFJ投信さんが出しておられてて、サイトをよくみると今までの基準価額がcsvで取得できるようになっているではないか!…ということでそれを自動的に引っ張ってきてRのデータに倒す関数書いた。ついでに最近の地震の影響が金融市場にどの程度影響を与えているのかも見てみる。現時点(2011/4/7)では
- eMAXIS 日経225インデックス
- eMAXIS TOPIXインデックス
- eMAXIS 国内債券インデックス
- eMAXIS 国内リートインデックス
- eMAXIS 全世界株式インデックス
- eMAXIS 先進国株式インデックス
- eMAXIS 先進国債券インデックス
- eMAXIS 先進国リートインデックス
- eMAXIS 新興国株式インデックス
- eMAXIS 新興国債券インデックス
という合計10投資信託のデータが取得可能。まずデータ取得の関数は↓のような感じ。ありったけのデータを引っ張って来るようになってます。各投資信託の取得可能なデータ項目はコードの中にも書いてあるように
- 基準価額 :
- 基準価額(分配金再投資)
- 分配金(税引前)
- 純資産(億円)
の4つ。
GeteMAXIS <- function(){ #各資産の列名(英語),順に以下のものの略 #基準日:Date #基準価額 : Constant value #基準価額(分配金再投資):Gross Constant value #分配金(税引前):Profit distribution #純資産(億円):Net Asset Value COL.NAMES <- c("DATE", "CV", "GCV", "PD", "NAV") #データの取得 url.data <- "http://maxis.muam.jp/e/fund/download/" eMAXIS <- read.table(url.data, sep=",", stringsAsFactor = FALSE) #全資産クラス数(1行目に文字が入ってる数だけ資産クラスが存在しているとして処理) num.assets <- sum(eMAXIS[1,] != "") #各資産ごとにデータをlistで区切る。 size <- ncol(eMAXIS) / num.assets eMAXIS <- lapply(1:num.assets, function(i){ x <- eMAXIS[, (size*(i - 1) + 1) : (size*(i - 1) + size)] colnames(x) <- COL.NAMES return(x) }) #リストの要素をファンド名に names(eMAXIS) <- sapply(eMAXIS, function(x)x[1,1]) #型変換、データあるとこだけ抽出 eMAXIS <- lapply(eMAXIS, function(x){ warn.old <- getOption("warn") options(warn = -1) x$CV <- as.numeric(x$CV) options(warn = warn.old) x <- na.omit(x) x$GCV <- as.numeric(x$GCV) x$PD <- as.numeric(x$PD) x$NAV <- as.numeric(x$NAV) x$DATE <- as.Date(x$DATE) return(x) }) return(eMAXIS) }
この関数で取得したデータを日付で揃えてパフォーマンスグラフ*1にしてみると・・・
な感じで311の地震がとても大きな影響を与えているのがわかる。このグラフを作る時に使ったスクリプト↓
#データ取得&基準価額のデータへつのデータフレームへ eMAXIS <- GeteMAXIS() gcv <- lapply(eMAXIS, function(x)x[, c("DATE","GCV")]) gcv <- Reduce(function(x,y)merge(x,y,by="DATE"), gcv) rownames(gcv) <- gcv$DATE gcv <- gcv[, -1] colnames(gcv) <- names(eMAXIS) #チャート表示 library(PerformanceAnalytics) charts.PerformanceSummary(CalculateReturns(gcv))
続き:投資信託「eMAXIS」のデータを分析する−2(簡単な分析編) - My Life as a Mock Quant
*1:基準価額(分配金再投資)で計算したもの