R Advent Calendar の18日目になります。
なんでこんなタイトルになったか
ソフトウェア業界で開発、インフラ構築などをしていました。今年の11月に不動産業界に転職しました。社内IT担当ですが、まったく経験がない業界なので新しいビジネスについて学んでいます。
趣味でRを使っていましたが、社内でも何人か使っていることがわかりました。不動産業界でRを有効に利用する方法について調べる→モチベーションアップのためにAdvent Calendarに登録しました。
不動産業界のビジネスモデル
不動産業界のビジネスモデルはいろいろあります。その一つがREITです。REITでは土地やビルを取得して、そこから得られる賃料から利益を上げます。投資した金額に対して何年で元が取れるか、何%で年間利益が出るかが重要です。
同時に他の有効な投資先と比べてREITから得られる利益が高い必要があります。たとえば100万円の元手があったとして10年間のトータルリターンが0より低ければたんす預金のほうがよい、あるいは安全と呼ばれる日本国債のほうがましとなります。
Rを不動産業界で利用するには
モデルを使って将来の利益をシミュレーションするのがおそらくは最終目標になると思います。残念ながらそこまでまだ知識がありません。いろいろ調べたところ下記のブログを見つけました。
このページでは紹介している方法に基づいて初めてのREIT分析をしてみました。
- REITに投資することを考える
- 過去にどれくらいのリターンがあったか確認する
- 他の投資先と比較してみる
今回利用するパッケージ
今回REITの分析、というか投資分析に使うパッケージとしては以下があります。
- xlsx: エクセルを取り込む
- xts : eXtensible Time Seriesの略で時系列データを簡単に扱えるようになります
- quantmod: 投資分析を行うための便利な機能、インターネットからのデータ取得やチャートとの連携が含まれます
- PerformanceAnalytics: 時系列データからリターンとリスクの分析をしてチャートで表示できます
コード
REITのヒストリカルデータをRに取り込みます。今回はローカルのxlsファイルから読み込みます。ファイルは c:/src/reitに置きます。
データの提供元は下記のURLとなります。
https://www.reit.com/sites/default/files/returns/MonthlyHistoricalReturns.xls
gdataパッケージでURLから直接ロードをしようとしました。しかし環境設定に時間がかかり今回はパスしました。
library(xlsx);
setwd("C:/src/reit")
reit_historical <- read.xlsx("MonthlyHistoricalReturns.xls", sheetName="Index Data")
REITのヒストリカルデータを抜き出します。
ここでは2つのヒストリカルデータを分析の対象とします。
すべてのReit(ALLREITs) = モーゲージREIT + エクイッティREIT(EquitREITs)になります。
- モーゲージREIT: 住宅ローンに投資されるので対象は個人です。サブプライムローンとして世界中で問題になったことは記憶に新しいです。
- エクイッティREIT: 会社が不動産やビルを取得して、その投資から得られる利益を目的とします。
コードしては大したことはしていないのですが、エクセルのフォーマットに合わせてデータを抜き出したり、日付データのフォーマットを変更しているので少々手間がかかります。
require(xts)
reit_historical.dates = as.Date(as.numeric(as.character(reit_historical[9:NROW(reit_historical),1])), origin = "1899-12-30")
date_w <- paste(substr(reit_historical.dates,1,8),"01", sep="")
#データフォーマットをyyyy-mm-ddにしておきます。
#フォーマットを合わせることで後述するS&Pデータとマージできます。
reit_historical.dates <- as.Date(date_w)
reit_index <- reit_historical[, c(3,24)]
colnames(reit_index) <- c("AllREITs","EquityREITs")
reit_index <- reit_index[9:NROW(reit_index),]
#エクセル内で実データは9行目以降になります。1~8行目を削除します。
reit_index <- xts(reit_index, order.by = reit_historical.dates )
REITデータと比較するためにS&Pインデックスを取得します。Reitが投資対象として魅力的であるかは別の投資対象との値段の比較でわかります。今回は アメリカの代表的な株価指数であるS&Pと比較します。
Rでは基本的な株式指標をquantmodパッケージのgetsymbols()で簡単に取得できます。quantmodを利用し定量的な金融分析を簡単に行えます。ただしquantmod自体は新しいモデルを提供していません。さまざまなデータを取得するためのインタフェースや、チャートツールとの連携に重点を置いています。
http://www.r-bloggers.com/shortcuts-for-quantmod/
require(quantmod)
getSymbols("SP500",src="FRED")
SP500 <- to.monthly(SP500)[,4]
#get 1st of month to align when we merge
index(SP500) <- as.Date(index(SP500))
REITとSP500のデータをマージします。
Performance AnalysisではS&Pと比較をしたいためにデータをマージします。この時もともとのPriceの大きさが違うので、相対的な変化率に直してます。
reit_sp500 <- na.omit(merge(reit_index,SP500))
reit_sp500 <- ROC(reit_sp500,n=1,type="discrete")
#最初の行は NAになってしまうために0にしておきます。
reit_sp500[1,] <- 0
チャートでリターンを分析します。具体的にはALL ReitとEquity ReitおよびS&Pを比較します。
チャートはPerformaneAnalysisパッケージを利用します。xtsデータをデータソースとして利用すると簡単に分析用のチャートを作成できます。今回はもっとも基本となる PerformanceSummaryチャートのみ利用します。
require(PerformanceAnalytics)
charts.PerformanceSummary(reit_sp500["2000::",],
colorset =c("steelblue4","steelblue2","gray50"),
main="REITS and the S&P 500 Since 2000")
ソースはこちらに置いてあります。
https://github.com/nord2013/reit/blob/master/r1.R
振り返ってみて
処理自体は各パッケージを利用することで簡単になります。またコードもかなり短くなることがわかりました。しかしそれぞれのパッケージに、インストールや使用方法でくせがあり、フレームワークほどではありませんが慣れるのに時間がかかります。
インターネット上で利用できる公開データは増えていますが、ヘッダーの削除、値の形式をあわせるといったクレンジングは手間がかかります。
今後の拡張としてはgdataを利用したinternetからのデータ取り込み。データソース種別によるフォーマットの自動認識+取り込み。チャートの種類を増やして解釈までを自動化といったところでしょうか。