パターン戦略②
月の特定日から月末までバイ・アンド・ホールド
「セル・アンド・ホールド」という言い方は通常しないが、それも含める。
「セル・アンド・ホールド」という言い方は通常しないが、それも含める。
# パッケージの呼び出し
library(GA)
library(quantmod)
# 開始日
startDate <- as.Date("2002-01-01")
# 終了日
endDate <- as.Date("2012-12-31")
# 終値
y <- data$USDJPY.Close
# 変化率
deltaY <- diff(y) / lag(y) * 100
# 特定の月の変化率
#deltaY <- deltaY[.indexmon(deltaY) == 11]
# トレード関数
f <- function(x) {
# トレードの開始日
xDay <- x
# リターン
#ret <- deltaY[.indexmday(deltaY) >= xDay] # 買い
ret <- -deltaY[.indexmday(deltaY) >= xDay] # 売り
totalRet <- cumsum(window(ret, start = startDate, end = endDate))
# 戻り値
return(last(totalRet))
}
# バックテスト
GA <- ga(type = "real-valued", fitness = f, min = 1, max = 31)
# 要約
summary(GA)
+-----------------------------------+
| Genetic Algorithm |
+-----------------------------------+
GA settings:
Type = real-valued
Population size = 50
Number of generations = 100
Elitism =
Crossover probability = 0.8
Mutation probability = 0.1
Search domain
x1
Min 1
Max 31
GA results:
Iterations = 100
Fitness function value = 55.11661
Solutions =
x1
[1,] 5.826542
[2,] 5.990306
[3,] 5.841699
[4,] 5.803412
[5,] 5.457463
[6,] 5.930928
[7,] 5.979738
[8,] 5.892676
[9,] 5.823649
[10,] 5.990727
[11,] 5.890009
[12,] 5.886285
[13,] 5.837820
[14,] 5.855779
[15,] 5.826757
[16,] 5.950180
[17,] 5.818064
[18,] 5.768042
[19,] 5.806166
[20,] 5.931057
[21,] 5.810090
[22,] 5.780713
[23,] 5.240252
[24,] 5.975154
[25,] 5.858795
[26,] 5.809302
# 総損益
xDay <- 6
#ret <- deltaY[.indexmday(deltaY) >= xDay] # 買い
ret <- -deltaY[.indexmday(deltaY) >= xDay] # 売り
totalRet <- cumsum(window(ret, start = startDate, end = endDate))
last(totalRet)
USDJPY.Close
2012-12-31 55.11661
# R2
cor(totalRet, 1:length(totalRet)) ^ 2
[,1]
USDJPY.Close 0.7836308
# グラフ
matplot(totalRet, type = "l")
# 使用済みオブジェクトの削除
rm(GA, deltaY, endDate, ret, startDate, totalRet, xDay, y)
rm(f)