shinyServer(
function(input, output,session) {
library(rsconnect)
library(tseries)
library(quantmod)
library(forecast)
library(car)
library(haven)
yahoo1<- reactive({
paste("Please enter the code for YAHOO finance")
})
output$yahooop<-renderText({ yahoo1()})
observeEvent(
input$goButton,{
index2<-as.character( input$index1)
index3<-getSymbols(c(index2),from = "1900-01-05",auto.assign = FALSE)
index.open<-na.omit(data.frame(index3[,1]))
index.close<-na.omit(data.frame(index3[,4]))
index.open.test<-data.frame(-tail(index.open,120))
index.close.test<-data.frame(-tail(index.close,120))
index.open.train<-data.frame(index.open[1:(nrow(index.open)-365),])
index.close.train<-data.frame(index.close[1:(nrow(index.open)-365),])
index.open.year<-data.frame(tail(index.open,365))
index.close.year<-data.frame(tail(index.close,365))
colnames(index.open.year)="OP.value"
colnames(index.open.train)="OP.value"
colnames(index.close.year)="close.value"
colnames(index.close.train)="close.value"
mod1<-auto.arima(index.open.train, seasonal = TRUE,ic="aic",test = "adf",seasonal.test ="seas",allowdrift = TRUE,
allowmean = TRUE,stepwise=FALSE,approximation=FALSE)
mod2<-auto.arima(index.close.train, seasonal = TRUE,ic="aic",test = "adf",seasonal.test ="seas",allowdrift = TRUE,
allowmean = TRUE,stepwise=FALSE,approximation=FALSE)
predict.open<-forecast(index.open.test,mod=mod1,h=120)
predict.close<-forecast(index.close.test,mod=mod2,h=120)
for(x in c(1:120)){d1<-(index.open[x]-index.close[x])-(predict.close$fitted[x]-predict.open$fitted[x])
d2<-sum(d1)}
output$open.predict.plot1<-renderPlot(plot(forecast(tail(index.open.year,30) ,model=mod1,h=5),main = paste(c(index2),".open","ARIMA predicton plot")))
output$open.value1<-renderTable(tail(index.open.year,5),rownames = TRUE)
open.formulaText1 <- reactive({
paste("it is the index opening index in the past five days")
})
output$open.table1<-renderText({ open.formulaText1()})
output$open.predict.table1<-renderTable(data.frame(forecast(tail(index.open.year,30) ,model=mod2,h=5)))
open.formulaText2 <- reactive({
paste("The expected value of the opening index in the next five days and its 80%, 95% confidence interval")
})
output$open.table2<-renderText({ open.formulaText2()})
output$close.predict.plot1<-renderPlot(plot(forecast(tail(index.close.year,30) ,model=mod2,h=5),main =paste(c(index2),".close"," ARIMA predicton plot")))
output$close.value1<-renderTable(tail(index.close.year,5),rownames = TRUE)
close.formulaText1 <- reactive({
paste("it is the index closeing index in the past five days")
})
output$close.table1<-renderText({ close.formulaText1()})
output$close.predict.table1<-renderTable(data.frame(forecast(tail(index.close.year,30) ,model=mod2,h=5)))
close.formulaText2 <- reactive({
paste("The expected value of the closeing index in the next five days and its 80%, 95% confidence interval")
})
output$close.table2<-renderText({ close.formulaText2()})
income <- reactive({
paste("the net income is",d2 )
})
})})
c2hpbnlTZXJ2ZXIoIAogIGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsc2Vzc2lvbikgewogICAgbGlicmFyeShyc2Nvbm5lY3QpCiAgICBsaWJyYXJ5KHRzZXJpZXMpCiAgICBsaWJyYXJ5KHF1YW50bW9kKQogICAgbGlicmFyeShmb3JlY2FzdCkKICAgIGxpYnJhcnkoY2FyKQogICAgbGlicmFyeShoYXZlbikKICAgIAogICAgeWFob28xPC0gcmVhY3RpdmUoewogICAgICBwYXN0ZSgiUGxlYXNlIGVudGVyIHRoZSBjb2RlIGZvciBZQUhPTyBmaW5hbmNlIikKICAgIH0pCiAgICBvdXRwdXQkeWFob29vcDwtcmVuZGVyVGV4dCh7IHlhaG9vMSgpfSkKICAgCiAgICBvYnNlcnZlRXZlbnQoCiAgICBpbnB1dCRnb0J1dHRvbix7CiAgICAgaW5kZXgyPC1hcy5jaGFyYWN0ZXIoIGlucHV0JGluZGV4MSkKICAgIGluZGV4MzwtZ2V0U3ltYm9scyhjKGluZGV4MiksZnJvbSA9ICIxOTAwLTAxLTA1IixhdXRvLmFzc2lnbiA9IEZBTFNFKQogICAgaW5kZXgub3BlbjwtbmEub21pdChkYXRhLmZyYW1lKGluZGV4M1ssMV0pKQogICAgaW5kZXguY2xvc2U8LW5hLm9taXQoZGF0YS5mcmFtZShpbmRleDNbLDRdKSkKICAgIGluZGV4Lm9wZW4udGVzdDwtZGF0YS5mcmFtZSgtdGFpbChpbmRleC5vcGVuLDEyMCkpCiAgICBpbmRleC5jbG9zZS50ZXN0PC1kYXRhLmZyYW1lKC10YWlsKGluZGV4LmNsb3NlLDEyMCkpCiAgICAgIGluZGV4Lm9wZW4udHJhaW48LWRhdGEuZnJhbWUoaW5kZXgub3BlblsxOihucm93KGluZGV4Lm9wZW4pLTM2NSksXSkKICAgICAgaW5kZXguY2xvc2UudHJhaW48LWRhdGEuZnJhbWUoaW5kZXguY2xvc2VbMToobnJvdyhpbmRleC5vcGVuKS0zNjUpLF0pCiAgICBpbmRleC5vcGVuLnllYXI8LWRhdGEuZnJhbWUodGFpbChpbmRleC5vcGVuLDM2NSkpCiAgICBpbmRleC5jbG9zZS55ZWFyPC1kYXRhLmZyYW1lKHRhaWwoaW5kZXguY2xvc2UsMzY1KSkKICAgIGNvbG5hbWVzKGluZGV4Lm9wZW4ueWVhcik9Ik9QLnZhbHVlIgogICAgY29sbmFtZXMoaW5kZXgub3Blbi50cmFpbik9Ik9QLnZhbHVlIgogICAgY29sbmFtZXMoaW5kZXguY2xvc2UueWVhcik9ImNsb3NlLnZhbHVlIgogICAgY29sbmFtZXMoaW5kZXguY2xvc2UudHJhaW4pPSJjbG9zZS52YWx1ZSIKICAgIG1vZDE8LWF1dG8uYXJpbWEoaW5kZXgub3Blbi50cmFpbiwgc2Vhc29uYWwgPSBUUlVFLGljPSJhaWMiLHRlc3QgPSAiYWRmIixzZWFzb25hbC50ZXN0ID0ic2VhcyIsYWxsb3dkcmlmdCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgIGFsbG93bWVhbiA9IFRSVUUsc3RlcHdpc2U9RkFMU0UsYXBwcm94aW1hdGlvbj1GQUxTRSkKICAgIG1vZDI8LWF1dG8uYXJpbWEoaW5kZXguY2xvc2UudHJhaW4sIHNlYXNvbmFsID0gVFJVRSxpYz0iYWljIix0ZXN0ID0gImFkZiIsc2Vhc29uYWwudGVzdCA9InNlYXMiLGFsbG93ZHJpZnQgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICBhbGxvd21lYW4gPSBUUlVFLHN0ZXB3aXNlPUZBTFNFLGFwcHJveGltYXRpb249RkFMU0UpCiAgICBwcmVkaWN0Lm9wZW48LWZvcmVjYXN0KGluZGV4Lm9wZW4udGVzdCxtb2Q9bW9kMSxoPTEyMCkKICAgIHByZWRpY3QuY2xvc2U8LWZvcmVjYXN0KGluZGV4LmNsb3NlLnRlc3QsbW9kPW1vZDIsaD0xMjApCiAgICBmb3IoeCBpbiBjKDE6MTIwKSl7ZDE8LShpbmRleC5vcGVuW3hdLWluZGV4LmNsb3NlW3hdKS0ocHJlZGljdC5jbG9zZSRmaXR0ZWRbeF0tcHJlZGljdC5vcGVuJGZpdHRlZFt4XSkKICAgIGQyPC1zdW0oZDEpfQogICAgb3V0cHV0JG9wZW4ucHJlZGljdC5wbG90MTwtcmVuZGVyUGxvdChwbG90KGZvcmVjYXN0KHRhaWwoaW5kZXgub3Blbi55ZWFyLDMwKSAsbW9kZWw9bW9kMSxoPTUpLG1haW4gPSBwYXN0ZShjKGluZGV4MiksIi5vcGVuIiwiQVJJTUEgcHJlZGljdG9uIHBsb3QiKSkpCiAgICAKICAgIG91dHB1dCRvcGVuLnZhbHVlMTwtcmVuZGVyVGFibGUodGFpbChpbmRleC5vcGVuLnllYXIsNSkscm93bmFtZXMgPSBUUlVFKQogICAgb3Blbi5mb3JtdWxhVGV4dDEgPC0gcmVhY3RpdmUoewogICAgICBwYXN0ZSgiaXQgaXMgdGhlIGluZGV4IG9wZW5pbmcgaW5kZXggaW4gdGhlIHBhc3QgZml2ZSBkYXlzIikKICAgIH0pCiAgICBvdXRwdXQkb3Blbi50YWJsZTE8LXJlbmRlclRleHQoeyBvcGVuLmZvcm11bGFUZXh0MSgpfSkKICAgIG91dHB1dCRvcGVuLnByZWRpY3QudGFibGUxPC1yZW5kZXJUYWJsZShkYXRhLmZyYW1lKGZvcmVjYXN0KHRhaWwoaW5kZXgub3Blbi55ZWFyLDMwKSAsbW9kZWw9bW9kMixoPTUpKSkKICAgIAogICAgb3Blbi5mb3JtdWxhVGV4dDIgPC0gcmVhY3RpdmUoewogICAgICBwYXN0ZSgiVGhlIGV4cGVjdGVkIHZhbHVlIG9mIHRoZSBvcGVuaW5nIGluZGV4ICBpbiB0aGUgbmV4dCBmaXZlIGRheXMgYW5kIGl0cyA4MCUsIDk1JSBjb25maWRlbmNlIGludGVydmFsIikKICAgIH0pCiAgICBvdXRwdXQkb3Blbi50YWJsZTI8LXJlbmRlclRleHQoeyBvcGVuLmZvcm11bGFUZXh0MigpfSkKICAgIAogICAgb3V0cHV0JGNsb3NlLnByZWRpY3QucGxvdDE8LXJlbmRlclBsb3QocGxvdChmb3JlY2FzdCh0YWlsKGluZGV4LmNsb3NlLnllYXIsMzApICxtb2RlbD1tb2QyLGg9NSksbWFpbiA9cGFzdGUoYyhpbmRleDIpLCIuY2xvc2UiLCIgQVJJTUEgcHJlZGljdG9uIHBsb3QiKSkpCiAgICBvdXRwdXQkY2xvc2UudmFsdWUxPC1yZW5kZXJUYWJsZSh0YWlsKGluZGV4LmNsb3NlLnllYXIsNSkscm93bmFtZXMgPSBUUlVFKQogICAgY2xvc2UuZm9ybXVsYVRleHQxIDwtIHJlYWN0aXZlKHsKICAgICAgcGFzdGUoIml0IGlzIHRoZSBpbmRleCBjbG9zZWluZyBpbmRleCBpbiB0aGUgcGFzdCBmaXZlIGRheXMiKQogICAgfSkKICAgIG91dHB1dCRjbG9zZS50YWJsZTE8LXJlbmRlclRleHQoeyBjbG9zZS5mb3JtdWxhVGV4dDEoKX0pCiAgICBvdXRwdXQkY2xvc2UucHJlZGljdC50YWJsZTE8LXJlbmRlclRhYmxlKGRhdGEuZnJhbWUoZm9yZWNhc3QodGFpbChpbmRleC5jbG9zZS55ZWFyLDMwKSAsbW9kZWw9bW9kMixoPTUpKSkKICAgIAogICAgY2xvc2UuZm9ybXVsYVRleHQyIDwtIHJlYWN0aXZlKHsKICAgICAgcGFzdGUoIlRoZSBleHBlY3RlZCB2YWx1ZSBvZiB0aGUgY2xvc2VpbmcgaW5kZXggIGluIHRoZSBuZXh0IGZpdmUgZGF5cyBhbmQgaXRzIDgwJSwgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwiKQogICAgfSkKICAgIG91dHB1dCRjbG9zZS50YWJsZTI8LXJlbmRlclRleHQoeyBjbG9zZS5mb3JtdWxhVGV4dDIoKX0pCiAgICBpbmNvbWUgPC0gcmVhY3RpdmUoewogICAgICBwYXN0ZSgidGhlIG5ldCBpbmNvbWUgaXMiLGQyICkKICAgIH0pICAKICAgIH0pfSk=