コスト考慮後の戦略例
通貨ペア:EURUSD
先行指標:GSPC
期間:1999年1月1日~2013年11月29日
ルール①:前日のEURUSDの終値変化率と前々日のGSPCの終値変化率が正相関の場合、前日のGSPCの終値変化率がプラスならEURUSDを買い、前日のGSPCの終値変化率がマイナスならEURUSDを売り。
ルール②:前日のEURUSDの終値変化率と前々日のGSPCの終値変化率が逆相関の場合、前日のGSPCの終値変化率がマイナスならEURUSDを買い、前日のGSPCの終値変化率がプラスならEURUSDを売り。
ルール③:ポジションは売買シグナルが切り替わった日の前日終値で決済。
備考①:約定価格は前日終値。
備考②:損益の単位はpips。
備考③:コストは1トレード2pips。
備考④:コストはポジションを取った日に支払う。
備考⑤:相関係数を計算する期間のパラメータは80。
先行指標:GSPC
期間:1999年1月1日~2013年11月29日
ルール①:前日のEURUSDの終値変化率と前々日のGSPCの終値変化率が正相関の場合、前日のGSPCの終値変化率がプラスならEURUSDを買い、前日のGSPCの終値変化率がマイナスならEURUSDを売り。
ルール②:前日のEURUSDの終値変化率と前々日のGSPCの終値変化率が逆相関の場合、前日のGSPCの終値変化率がマイナスならEURUSDを買い、前日のGSPCの終値変化率がプラスならEURUSDを売り。
ルール③:ポジションは売買シグナルが切り替わった日の前日終値で決済。
備考①:約定価格は前日終値。
備考②:損益の単位はpips。
備考③:コストは1トレード2pips。
備考④:コストはポジションを取った日に支払う。
備考⑤:相関係数を計算する期間のパラメータは80。
# パッケージの呼び出し
library(quantmod)
# 開始日
s_date = as.Date("1999-01-01")
# 終了日
e_date = as.Date("2013-11-29")
# 銘柄の終値
y <- data$EURUSD.Close
# 銘柄の変化率
deltay <- diff(y,lag=1)/lag(y,k=1)*100
# 指標の終値
x <- data$GSPC.Close
# 指標の変化率
deltax <- diff(x,lag=1)/lag(x,k=1)*100
# 銘柄の変化率と1期前の指標の変化率の統合
yx <- merge(deltay,lag(deltax,k=1))
# バックテスト
lookback <- 80
yx.cor <- rollapply(yx,lookback,cor,by.column=FALSE)[,2]
long <- yx.cor*deltax>=0
short <- yx.cor*deltax<0
pos <- long-short
cost <- pos*lag(pos,k=1)==-1
ret <- diff(y,lag=1)*lag(pos,k=1)*10000-cost*2
cumret <- cumsum(window(ret,start=s_date,end=e_date))
r2 <- cor(cumret,1:length(cumret))^2
# 結果の表示
last(cumret)
EURUSD.Close
2013-11-29 27940
r2
[,1]
EURUSD.Close 0.9885997
matplot(cumret,type="l")