01/05/2017

Basic System Trading Based on Machine Learning (SVM)

click for complete code



snp<- span="" style="color: #9cdcfe;">getSymbols
('^GSPC', src='yahoo', auto.assign = FALSE)

ret<- span="" style="color: #9cdcfe;">snp
[,4]-snp[,1])/snp[,1]
ret = ret['2007-01-01/2017-04-28']


y=ret
y[y>0.000]=1
y[y<=0.000]=0

x = Lag(y, k=1)
for(i in 2:5)
{
x = cbind(x,Lag(y,k=i))
}

data = cbind(y, x,ret)
data<- span="" style="color: #dcdcaa;">na.omit
(data))

inputs <- span="" style="color: #9cdcfe;">data
[,2:5]
outputs <- span="" style="color: #9cdcfe;">data
[,c(1,7)]

datacnt = length(outputs[,1])


outsvm = c()


n_train = 30

for(i in n_train : (datacnt-1))
{
train = c((i-n_train+1):i)

fitsvm<- span="" style="color: #9cdcfe;">svm
(inputs[train,],outputs[train,1], kernel='linear')
predsvm <- span="" style="color: #dcdcaa;">predict
(fitsvm, inputs[i+1,])
actual <- span="" style="color: #9cdcfe;">outputs
[i+1,2]
outsvm = rbind(outsvm, c(date=rownames(as.data.frame(inputs)[i+1,]),pred=predsvm,act=actual))
print(paste(sep="", as.character((i-n_train+1)/(datacnt-n_train-1)*100),"% done"))
}

simData=as.matrix(outsvm,ncol=3)

simData[,2][as.double(simData[,2])>=0.5]=1
simData[,2][as.double(simData[,2])<0.5]=0
simData[,3] = as.double(simData[,3])


ret = as.numeric(simData[,2])*as.numeric(simData[,3])
ret = as.data.frame(ret)
rownames(ret) = simData[,1]

portCumRet = exp(cumsum(ret))
chartSeries(portCumRet)







simData=as.matrix(outsvm,ncol=3)

simData[,2][as.double(simData[,2])<0.5]=-1
simData[,2][as.double(simData[,2])>=0.5]=0
simData[,3] = as.double(simData[,3])

ret = as.numeric(simData[,2])*as.numeric(simData[,3])
ret = as.data.frame(ret)
rownames(ret) = simData[,1]

portCumRet = exp(cumsum(ret))
chartSeries(portCumRet)


Share this

Tag :

1 Response to "Basic System Trading Based on Machine Learning (SVM)"

  1. Thx, Geetha.
    Unfortunately, I would not manage machine learning related investment now.

    Currently, I have been upgrading KOSPI index forecast model.

    However, I appreciate your kindness.

    Sincerely

    ForecastJ

    ReplyDelete