リターン時系列の作成方法について(timeSeries Object)
ポートフォリオ最適化や時系列解析をRmetricsで実施するには、対象とするデータをリターン時系列をtimeSeriesクラスで持つ場合が多いのですが、往々にして手元にあるのはデータが指数時系列で、それがCSVやExcelファイル、DBの形で転がっているというようなケースが多いと思います。
ここでは指数時系列データ(CSV)を加工してRmetricsに喰わせやすいtimeSeries型のリターン時系列データにまで持っていく方法について書きます。
library(timeSeries) #http://finance.yahoo.com/q/hp?s=^GSPC #からCSVでダウンロードしたデータがC:\Temp\table.csvとして保存してあるとして読み込み data.df <- read.csv("C:/Temp/table.csv") #以下関数 as.timeSeries を呼ぶまでの処理は上記URLのデータの場合は不要だが #ExcelからCSVを作成する際には日付表示のデフォルトが-(ハイフン)ではなく/(スラッシュ)で切れていることが多いので以下の処理が必要 #内容の確認.日付が日付系のクラスではなくFactorになっているのがわかる head(data.df) str(data.df) #1列目の日付項目を日付型に強制変換.列名をDATEへ.as.Date関数で日付型にすると変換がうまくいかない。 data.df <- cbind(Date=as.POSIXct(data.df[,1]),data.df[,2:ncol(data.df)]) #内容の再確認。きちんとPOSIXct型になっているのがわかる head(data.df) str(data.df) #終値だけのデータにして、timeSeriesオブジェクトへ変換する data.df <- data.df[,c("Date","Close")] data.ts <- as.timeSeries(data.df) #内容の確認。 head(data.ts) str(data.ts) #指数データをリターン系列にするためにはreturns関数を使用。デフォルトは対数リターン、simpleで通常の収益率(Y/X-1の形) return.ts <- returns(data.ts,method="simple") head(return.ts)