binary.com 面试试题 I - GARCH模型中的ARIMA(p,d,q)
参数最优化添加了季节性和比较模型精准性。目前还测试下archm=TRUE
是否会更精准,详情请参阅[问答] 请问怎样用R语言产生arch, arch-m, garch, garch-m的随机数?。
suppressPackageStartupMessages(require('BBmisc'))
## 读取程序包
pkg <- c('lubridate', 'plyr', 'dplyr', 'magrittr', 'stringr', 'rugarch', 'forecast', 'quantmod', 'memoise', 'microbenchmark', 'knitr', 'kableExtra', 'formattable')
suppressAll(lib(pkg))
funs <- c('task_progress.R') %>% paste0('function/', .)
l_ply(funs, source)
rm(pkg, funs)
首先读取Binary.com Interview Q1 (Extention)的汇市数据。
cr_code <- c('AUDUSD=X', 'EURUSD=X', 'GBPUSD=X', 'CHF=X', 'CAD=X',
'CNY=X', 'JPY=X')
#'@ names(cr_code) <- c('AUDUSD', 'EURUSD', 'GBPUSD', 'USDCHF', 'USDCAD',
#'@ 'USDCNY', 'USDJPY')
names(cr_code) <- c('USDAUD', 'USDEUR', 'USDGBP', 'USDCHF', 'USDCAD', 'USDCNY', 'USDJPY')
price_type <- c('Op', 'Hi', 'Lo', 'Cl')
## 读取雅虎数据。
mbase <- sapply(names(cr_code), function(x) readRDS(paste0('./data/', x, '.rds')) %>% na.omit)
数据简介报告。
sapply(mbase, summary) %>%
kable %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'condensed', 'responsive')) %>%
scroll_box(width = '100%', height = '400px')
USDAUD | USDEUR | USDGBP | USDCHF | USDCAD | USDCNY | USDJPY |
---|---|---|---|---|---|---|
Min. :2012-01-02 | Min. :2012-01-02 | Min. :2012-01-02 | Min. :2012-01-02 | Min. :2012-01-02 | Min. :2012-01-02 | Min. :2012-01-02 |
1st Qu.:2013-05-31 | 1st Qu.:2013-05-31 | 1st Qu.:2013-05-30 | 1st Qu.:2013-06-03 | 1st Qu.:2013-05-30 | 1st Qu.:2013-05-29 | 1st Qu.:2013-05-29 |
Median :2014-10-31 | Median :2014-10-31 | Median :2014-10-31 | Median :2014-11-03 | Median :2014-10-30 | Median :2014-10-30 | Median :2014-10-30 |
Mean :2014-10-31 | Mean :2014-10-31 | Mean :2014-10-30 | Mean :2014-11-01 | Mean :2014-10-30 | Mean :2014-10-30 | Mean :2014-10-30 |
3rd Qu.:2016-03-30 | 3rd Qu.:2016-03-30 | 3rd Qu.:2016-03-30 | 3rd Qu.:2016-03-31 | 3rd Qu.:2016-03-29 | 3rd Qu.:2016-03-30 | 3rd Qu.:2016-03-30 |
Max. :2017-08-30 | Max. :2017-08-30 | Max. :2017-08-30 | Max. :2017-08-30 | Max. :2017-08-30 | Max. :2017-08-30 | Max. :2017-08-30 |
Min. :0.925 | Min. :0.7180 | Min. :0.5830 | Min. :0.8540 | Min. :0.968 | Min. :6.031 | Min. : 76.18 |
1st Qu.:1.037 | 1st Qu.:0.7580 | 1st Qu.:0.6250 | 1st Qu.:0.9220 | 1st Qu.:1.029 | 1st Qu.:6.189 | 1st Qu.: 97.86 |
Median :1.148 | Median :0.8080 | Median :0.6460 | Median :0.9540 | Median :1.127 | Median :6.284 | Median :103.91 |
Mean :1.176 | Mean :0.8285 | Mean :0.6702 | Mean :0.9504 | Mean :1.167 | Mean :6.365 | Mean :103.71 |
3rd Qu.:1.322 | 3rd Qu.:0.8980 | 3rd Qu.:0.6950 | 3rd Qu.:0.9780 | 3rd Qu.:1.308 | 3rd Qu.:6.524 | 3rd Qu.:114.27 |
Max. :1.458 | Max. :0.9620 | Max. :0.8310 | Max. :1.0300 | Max. :1.458 | Max. :7.478 | Max. :125.60 |
Min. :0.927 | Min. :0.7190 | Min. :0.5830 | Min. :0.8710 | Min. :0.971 | Min. :6.040 | Min. : 76.20 |
1st Qu.:1.042 | 1st Qu.:0.7610 | 1st Qu.:0.6260 | 1st Qu.:0.9250 | 1st Qu.:1.032 | 1st Qu.:6.195 | 1st Qu.: 98.29 |
Median :1.153 | Median :0.8130 | Median :0.6490 | Median :0.9570 | Median :1.131 | Median :6.295 | Median :104.19 |
Mean :1.181 | Mean :0.8318 | Mean :0.6732 | Mean :0.9539 | Mean :1.171 | Mean :6.375 | Mean :104.07 |
3rd Qu.:1.327 | 3rd Qu.:0.9020 | 3rd Qu.:0.6990 | 3rd Qu.:0.9810 | 3rd Qu.:1.313 | 3rd Qu.:6.529 | 3rd Qu.:114.72 |
Max. :1.464 | Max. :1.3150 | Max. :1.5690 | Max. :1.0330 | Max. :1.469 | Max. :7.481 | Max. :125.82 |
Min. :0.921 | Min. :0.7150 | Min. :0.5820 | Min. :0.7330 | Min. :0.963 | Min. :2.201 | Min. : 76.05 |
1st Qu.:1.031 | 1st Qu.:0.7560 | 1st Qu.:0.6230 | 1st Qu.:0.9180 | 1st Qu.:1.026 | 1st Qu.:6.185 | 1st Qu.: 97.46 |
Median :1.142 | Median :0.8050 | Median :0.6440 | Median :0.9500 | Median :1.123 | Median :6.270 | Median :103.54 |
Mean :1.171 | Mean :0.8256 | Mean :0.6681 | Mean :0.9469 | Mean :1.164 | Mean :6.355 | Mean :103.32 |
3rd Qu.:1.316 | 3rd Qu.:0.8940 | 3rd Qu.:0.6920 | 3rd Qu.:0.9730 | 3rd Qu.:1.303 | 3rd Qu.:6.515 | 3rd Qu.:113.74 |
Max. :1.447 | Max. :0.9600 | Max. :0.8270 | Max. :1.0280 | Max. :1.449 | Max. :6.945 | Max. :124.97 |
Min. :0.9253 | Min. :0.7178 | Min. :0.5827 | Min. :0.8544 | Min. :0.9683 | Min. :6.031 | Min. : 76.18 |
1st Qu.:1.0369 | 1st Qu.:0.7582 | 1st Qu.:0.6247 | 1st Qu.:0.9216 | 1st Qu.:1.0286 | 1st Qu.:6.190 | 1st Qu.: 97.85 |
Median :1.1478 | Median :0.8081 | Median :0.6463 | Median :0.9538 | Median :1.1263 | Median :6.285 | Median :103.93 |
Mean :1.1759 | Mean :0.8285 | Mean :0.6702 | Mean :0.9504 | Mean :1.1673 | Mean :6.365 | Mean :103.71 |
3rd Qu.:1.3216 | 3rd Qu.:0.8981 | 3rd Qu.:0.6952 | 3rd Qu.:0.9775 | 3rd Qu.:1.3076 | 3rd Qu.:6.524 | 3rd Qu.:114.24 |
Max. :1.4575 | Max. :0.9624 | Max. :0.8306 | Max. :1.0302 | Max. :1.4578 | Max. :6.960 | Max. :125.63 |
Min. :0 | Min. :0 | Min. :0 | Min. :0 | Min. :0 | Min. :0 | Min. :0 |
1st Qu.:0 | 1st Qu.:0 | 1st Qu.:0 | 1st Qu.:0 | 1st Qu.:0 | 1st Qu.:0 | 1st Qu.:0 |
Median :0 | Median :0 | Median :0 | Median :0 | Median :0 | Median :0 | Median :0 |
Mean :0 | Mean :0 | Mean :0 | Mean :0 | Mean :0 | Mean :0 | Mean :0 |
3rd Qu.:0 | 3rd Qu.:0 | 3rd Qu.:0 | 3rd Qu.:0 | 3rd Qu.:0 | 3rd Qu.:0 | 3rd Qu.:0 |
Max. :0 | Max. :0 | Max. :0 | Max. :0 | Max. :0 | Max. :0 | Max. :0 |
Min. :0.9253 | Min. :0.7178 | Min. :0.5827 | Min. :0.8544 | Min. :0.9683 | Min. :6.031 | Min. : 76.18 |
1st Qu.:1.0369 | 1st Qu.:0.7582 | 1st Qu.:0.6247 | 1st Qu.:0.9216 | 1st Qu.:1.0286 | 1st Qu.:6.190 | 1st Qu.: 97.85 |
Median :1.1478 | Median :0.8081 | Median :0.6463 | Median :0.9538 | Median :1.1263 | Median :6.285 | Median :103.93 |
Mean :1.1759 | Mean :0.8285 | Mean :0.6702 | Mean :0.9504 | Mean :1.1673 | Mean :6.365 | Mean :103.71 |
3rd Qu.:1.3216 | 3rd Qu.:0.8981 | 3rd Qu.:0.6952 | 3rd Qu.:0.9775 | 3rd Qu.:1.3076 | 3rd Qu.:6.524 | 3rd Qu.:114.24 |
Max. :1.4575 | Max. :0.9624 | Max. :0.8306 | Max. :1.0302 | Max. :1.4578 | Max. :6.960 | Max. :125.63 |
桌面2.1:数据简介。
opt_arma <- function(mbase){
#ARMA Modeling minimum AIC value of `p,d,q`
fit <- auto.arima(mbase)
arimaorder(fit)
}
再来就设置mean.model
模型中的参数为archm = TRUE
。
calc_fx <- memoise(function(mbase, currency = 'JPY=X', ahead = 1, price = 'Cl') {
source('function/filterFX.R')
source('function/opt_arma.R')
mbase = suppressWarnings(filterFX(mbase, currency = currency, price = price))
armaOrder = opt_arma(mbase)
spec = ugarchspec(
variance.model = list(
model = 'gjrGARCH', garchOrder = c(1, 1),
submodel = NULL, external.regressors = NULL,
variance.targeting = FALSE),
mean.model = list(
armaOrder = armaOrder[c(1, 3)],
include.mean = TRUE, archm = TRUE,
archpow = 1, arfima = TRUE,
external.regressors = NULL,
archex = FALSE),
fixed.pars = list(arfima = armaOrder[2]),
distribution.model = 'snorm')
fit = ugarchfit(spec, mbase, solver = 'hybrid')
fc = ugarchforecast(fit, n.ahead = ahead)
res = tail(attributes(fc)$forecast$seriesFor, 1)
colnames(res) = names(mbase)
latestPrice = tail(mbase, 1)
latestPrice <- xts(latestPrice)
return(list(latestPrice = latestPrice, forecastPrice = res,
AIC = infocriteria(fit)))
})
以下僕运行数据测试后事先储存,然后直接读取。首先过滤timeID
时间参数,然后才模拟预测汇价。
timeID <- llply(mbase, function(x) as.character(index(x))) %>%
unlist %>% unique %>% as.Date %>% sort
timeID <- c(timeID, xts::last(timeID) + days(1))
timeID0 <- ymd('2013-01-01')
timeID <- timeID[timeID >= timeID0]
模拟calc_fx()
函数预测汇价数据。
## ------------- 模拟calc_fx()预测汇价 ----------------------
pred3 <- list()
for (dt in timeID) {
for (i in seq(cr_code)) {
smp <- mbase[[names(cr_code)[i]]]
dtr <- xts::last(index(smp[index(smp) < dt]), 1)
smp <- smp[paste0(dtr %m-% years(1), '/', dtr)]
pred3[[i]] <- ldply(price_type, function(y) {
df = calc_fx(smp, currency = cr_code[i], price = y)
df = data.frame(Date = index(df[[1]][1]),
Type = paste0(names(df[[1]]), '.', y),
df[[1]], df[[2]], t(df[[3]]))
names(df)[4] %<>% str_replace_all('1', 'T+1')
df
})
if (!dir.exists(paste0('data/fx/', names(pred3[[i]])[3])))
dir.create(paste0('data/fx/', names(pred3[[i]])[3]))
saveRDS(pred3[[i]], paste0(
'data/fx/', names(pred3[[i]])[3], '/pred3.',
unique(pred3[[i]]$Date), '.rds'))
cat(paste0(
'data/fx/', names(pred3[[i]])[3], '/pred3.',
unique(pred3[[i]]$Date), '.rds saved!\n'))
}; rm(i)
}
查询模拟测试进度的函数task_progress()
如下。
## ------------- 查询缺失文件 ----------------------
## 查询缺失文件。
dts <- sapply(mbase, function(x) {
y = index(x)
y[y >= timeID0]
})
#'@ sapply(mbase, function(x) as.character(index(x)) %>% as.Date %>% sort)
fls <- sapply(names(cr_code), function(x) {
fls <- list.files(paste0('./data/fx/', x), pattern = '^pred3') %>%
str_extract_all('[0-9]{4}-[0-9]{2}-[0-9]{2}') %>%
unlist %>% as.Date %>% sort
dts[[x]][!dts[[x]] %in% fls] %>% sort
})
#'@ timeID <- sapply(fls, function(x) timeID[!timeID %in% x] %>% sort)
#'@ timeID <- llply(fls, function(x) timeID[!timeID %in% x] %>% sort) %>% unlist %>% as.Date %>% sort
#'@ names(timeID) <- NULL
#'@ timeID %<>% unique
## ------------- 模拟calc_fx()预测汇价 ----------------------
pred3 <- list()
for (i in seq(cr_code)) {
timeIDi <- fls[[names(cr_code)[i]]]
for (dt in timeIDi) {
smp <- mbase[[names(cr_code)[i]]]
dtr <- xts::last(index(smp[index(smp) < dt]), 1)
smp <- smp[paste0(dtr %m-% years(1), '/', dtr)]
pred3[[i]] <- ldply(price_type, function(y) {
df = calc_fx(smp, currency = cr_code[i], price = y)
df = data.frame(Date = index(df[[1]][1]),
Type = paste0(names(df[[1]]), '.', y),
df[[1]], df[[2]], t(df[[3]]))
names(df)[4] %<>% str_replace_all('1', 'T+1')
df
})
if (!dir.exists(paste0('data/fx/', names(pred3[[i]])[3])))
dir.create(paste0('data/fx/', names(pred3[[i]])[3]))
saveRDS(pred3[[i]], paste0(
'data/fx/', names(pred3[[i]])[3], '/pred3.',
unique(pred3[[i]]$Date), '.rds'))
cat(paste0(
'data/fx/', names(pred3[[i]])[3], '/pred3.',
unique(pred3[[i]]$Date), '.rds saved!\n'))
}
}; rm(i)
模拟完毕后,再来就查看数据结果。
## calc_fx()模拟数据误差率
task_progress(.pattern = '^pred3', .loops = FALSE)
## Current Tokyo Time : 2018-10-17 14:15:15
## ^pred3
##
## .id x n progress
## 1 USDAUD 1088 1215 89.55%
## 2 USDEUR 1033 1215 85.02%
## 3 USDGBP 1037 1216 85.28%
## 4 USDCHF 1072 1215 88.23%
## 5 USDCAD 1033 1214 85.09%
## 6 USDCNY 1019 1215 83.87%
## 7 USDJPY 929 1215 76.46%
##
## ================ 84.79% ================
以上结果显示,模拟后的数据的误差率非常渺小1。以下筛选pred1
、pred2
与pred3
同样日期的有效数据。
##数据1
fx1 <- llply(names(cr_code), function(x) {
fls <- list.files(paste0('data/fx/', x), pattern = '^pred1')
dfm <- ldply(fls, function(y) {
readRDS(paste0('data/fx/', x, '/', y))
}) %>% data.frame(Cat = 'pred1', .) %>% tbl_df
names(dfm)[4:5] <- c('Price', 'Price.T1')
dfm
})
names(fx1) <- names(cr_code)
##数据2
fx2 <- llply(names(cr_code), function(x) {
fls <- list.files(paste0('data/fx/', x), pattern = '^pred2')
dfm <- ldply(fls, function(y) {
readRDS(paste0('data/fx/', x, '/', y))
}) %>% data.frame(Cat = 'pred2', .) %>% tbl_df
names(dfm)[4:5] <- c('Price', 'Price.T1')
dfm
})
names(fx2) <- names(cr_code)
##数据3
fx3 <- llply(names(cr_code), function(x) {
fls <- list.files(paste0('data/fx/', x), pattern = '^pred3')
dfm <- ldply(fls, function(y) {
readRDS(paste0('data/fx/', x, '/', y))
}) %>% data.frame(Cat = 'pred3', .) %>% tbl_df
names(dfm)[4:5] <- c('Price', 'Price.T1')
dfm
})
names(fx3) <- names(cr_code)
#合并,并且整理数据。
fx1 %<>% ldply %>% tbl_df
fx2 %<>% ldply %>% tbl_df
fx3 %<>% ldply %>% tbl_df
fx <- suppressAll(bind_rows(fx1, fx2, fx3) %>% arrange(Date) %>%
mutate(.id = factor(.id), Cat = factor(Cat)) %>%
ddply(.(Cat, Type), function(x) {
x %>% mutate(Price.T1 = lag(Price.T1, 1))
}) %>% tbl_df %>%
dplyr::filter(Date >= ymd('2013-01-01') & Date <= ymd('2017-08-30')))
rm(fx1, fx2, fx3)
## filter all predictive error where sd >= 20%.
notID <- fx %>% mutate(diff = abs(Price.T1/Price), se = ifelse(diff <= 0.8 | diff >= 1.25, 1, 0)) %>% dplyr::filter(se == 1)
ntimeID <- notID %>% .$Date %>% unique
notID %>%
kable(caption = 'Error data') %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'condensed', 'responsive')) %>%
scroll_box(width = '100%', height = '400px')
.id | Cat | Date | Type | Price | Price.T1 | Akaike | Bayes | Shibata | Hannan.Quinn | diff | se |
---|---|---|---|---|---|---|---|---|---|---|---|
USDCHF | pred1 | 2015-07-28 | USDCHF.Op | 0.96200 | -1.674244e+03 | -6.8550360 | -6.6916003 | -6.8589917 | -6.7893476 | 1.740378e+03 | 1 |
USDCHF | pred1 | 2015-01-15 | USDCHF.Lo | 0.73300 | 1.016502e+00 | -5.7998611 | -5.7181433 | -5.8008790 | -5.7670169 | 1.386770e+00 | 1 |
USDCNY | pred1 | 2014-07-10 | USDCNY.Lo | 2.20100 | 6.186397e+00 | -2.7132659 | -2.6313229 | -2.7142915 | -2.6803275 | 2.810721e+00 | 1 |
USDCNY | pred1 | 2014-07-14 | USDCNY.Lo | 6.19600 | 1.294872e+00 | -3.1503936 | -3.0138219 | -3.1531877 | -3.0954962 | 2.089852e-01 | 1 |
USDJPY | pred1 | 2013-06-27 | USDJPY.Op | 98.46800 | 7.839498e+01 | 4.7132866 | 4.7950044 | 4.7122687 | 4.7461308 | 7.961468e-01 | 1 |
USDJPY | pred1 | 2013-06-30 | USDJPY.Op | 99.41100 | 7.839644e+01 | 4.7356084 | 4.8175514 | 4.7345828 | 4.7685468 | 7.886093e-01 | 1 |
USDJPY | pred1 | 2013-07-01 | USDJPY.Op | 99.65400 | 7.839575e+01 | 4.7442829 | 4.8260007 | 4.7432649 | 4.7771270 | 7.866794e-01 | 1 |
USDJPY | pred1 | 2013-07-02 | USDJPY.Op | 100.75900 | 7.839261e+01 | 1.7915659 | 1.9277623 | 1.7887926 | 1.8463062 | 7.780210e-01 | 1 |
USDJPY | pred1 | 2013-07-08 | USDJPY.Op | 100.84200 | 7.838671e+01 | 4.8397137 | 4.9214315 | 4.8386958 | 4.8725579 | 7.773220e-01 | 1 |
USDJPY | pred1 | 2013-07-09 | USDJPY.Op | 101.15100 | 7.838619e+01 | 4.8622946 | 4.9440124 | 4.8612766 | 4.8951387 | 7.749423e-01 | 1 |
USDJPY | pred1 | 2013-07-10 | USDJPY.Op | 98.55200 | 7.838294e+01 | 4.8830765 | 4.9647943 | 4.8820585 | 4.9159206 | 7.953460e-01 | 1 |
USDJPY | pred1 | 2013-07-11 | USDJPY.Op | 99.04400 | 7.838286e+01 | 6.2292809 | 6.3109987 | 6.2282630 | 6.2621251 | 7.913943e-01 | 1 |
USDJPY | pred1 | 2013-06-27 | USDJPY.Cl | 98.47600 | 7.837708e+01 | 4.7137633 | 4.7954811 | 4.7127453 | 4.7466074 | 7.959003e-01 | 1 |
USDJPY | pred1 | 2013-06-30 | USDJPY.Cl | 99.38000 | 7.838315e+01 | 1.7831265 | 1.9196981 | 1.7803324 | 1.8380238 | 7.887216e-01 | 1 |
USDJPY | pred1 | 2013-07-08 | USDJPY.Cl | 100.85000 | 7.837327e+01 | 4.8404863 | 4.9222042 | 4.8394684 | 4.8733305 | 7.771272e-01 | 1 |
USDJPY | pred1 | 2013-07-09 | USDJPY.Cl | 101.15300 | 7.837277e+01 | 4.8630598 | 4.9447776 | 4.8620419 | 4.8959040 | 7.747944e-01 | 1 |
USDJPY | pred1 | 2013-07-10 | USDJPY.Cl | 98.55100 | 7.836954e+01 | 1.8879646 | 2.0241610 | 1.8851913 | 1.9427049 | 7.952181e-01 | 1 |
USDJPY | pred1 | 2013-07-14 | USDJPY.Cl | 99.19700 | 7.836681e+01 | 5.8363249 | 5.9182679 | 5.8352993 | 5.8692633 | 7.900119e-01 | 1 |
USDCHF | pred2 | 2015-01-15 | USDCHF.Lo | 0.73300 | 1.015055e+00 | -7.9840623 | -7.9023445 | -7.9850802 | -7.9512181 | 1.384795e+00 | 1 |
USDCHF | pred2 | 2015-01-19 | USDCHF.Lo | 0.85700 | 1.187461e+00 | -6.7992062 | -6.7036061 | -6.8005954 | -6.7607781 | 1.385603e+00 | 1 |
USDCHF | pred2 | 2015-01-20 | USDCHF.Lo | 0.86900 | 5.503465e-01 | -7.9199131 | -7.8245756 | -7.9212918 | -7.8815949 | 6.333102e-01 | 1 |
USDCNY | pred2 | 2014-07-10 | USDCNY.Lo | 2.20100 | 6.185327e+00 | -4.7024502 | -4.6068501 | -4.7038394 | -4.6640221 | 2.810235e+00 | 1 |
USDCNY | pred2 | 2014-07-13 | USDCNY.Lo | 6.19400 | 2.894085e+00 | -7.0835967 | -6.9740372 | -7.0854159 | -7.0395523 | 4.672400e-01 | 1 |
USDAUD | pred3 | 2013-05-26 | USDAUD.Op | 1.03800 | 2.149825e+08 | -7.7910736 | -7.6541243 | -7.7938887 | -7.7360182 | 2.071122e+08 | 1 |
USDAUD | pred3 | 2013-06-19 | USDAUD.Hi | 1.09100 | -2.849556e+92 | -7.8462592 | -7.6823732 | -7.8502445 | -7.7803824 | 2.611875e+92 | 1 |
USDEUR | pred3 | 2016-06-21 | USDEUR.Op | 0.88900 | -2.200873e+86 | -7.5804181 | -7.4169825 | -7.5843739 | -7.5147298 | 2.475673e+86 | 1 |
USDEUR | pred3 | 2016-06-23 | USDEUR.Op | 0.88300 | -1.560483e+60 | -7.5164378 | -7.4211004 | -7.5178166 | -7.4781196 | 1.767252e+60 | 1 |
USDEUR | pred3 | 2016-08-22 | USDEUR.Op | 0.88400 | 5.314573e+81 | -7.6184189 | -7.4545329 | -7.6224041 | -7.5525420 | 6.011960e+81 | 1 |
USDEUR | pred3 | 2013-05-01 | USDEUR.Hi | 0.76700 | 6.561433e+87 | -8.3548021 | -8.2318876 | -8.3570762 | -8.3053944 | 8.554672e+87 | 1 |
USDEUR | pred3 | 2014-09-14 | USDEUR.Lo | 0.77100 | 9.628148e+10 | -9.2971615 | -9.1876021 | -9.2989807 | -9.2531172 | 1.248787e+11 | 1 |
USDEUR | pred3 | 2014-09-07 | USDEUR.Cl | 0.77200 | 4.397289e+66 | -9.1685158 | -9.0452614 | -9.1708071 | -9.1189659 | 5.695970e+66 | 1 |
USDEUR | pred3 | 2016-08-21 | USDEUR.Cl | 0.88510 | -1.467838e+61 | -7.6011727 | -7.4368335 | -7.6051877 | -7.5351061 | 1.658387e+61 | 1 |
USDEUR | pred3 | 2017-08-15 | USDEUR.Cl | 0.85170 | 1.175697e+130 | -7.9843501 | -7.8477785 | -7.9871442 | -7.9294528 | 1.380413e+130 | 1 |
USDGBP | pred3 | 2014-01-28 | USDGBP.Op | 0.60300 | 6.371246e+96 | -8.7015868 | -8.5513580 | -8.7049515 | -8.6411997 | 1.056591e+97 | 1 |
USDGBP | pred3 | 2014-02-04 | USDGBP.Op | 0.61300 | -2.147650e+73 | -8.7024014 | -8.5521725 | -8.7057660 | -8.6420142 | 3.503507e+73 | 1 |
USDGBP | pred3 | 2013-02-18 | USDGBP.Hi | 0.64800 | 8.111759e+90 | -9.2937837 | -9.1435549 | -9.2971484 | -9.2333966 | 1.251815e+91 | 1 |
USDGBP | pred3 | 2014-12-17 | USDGBP.Hi | 0.63900 | 1.758558e+101 | -9.5824091 | -9.4734520 | -9.5842012 | -9.5386169 | 2.752047e+101 | 1 |
USDGBP | pred3 | 2014-06-03 | USDGBP.Lo | 0.59600 | 4.417575e+121 | -9.3046283 | -9.1680567 | -9.3074224 | -9.2497310 | 7.412038e+121 | 1 |
USDGBP | pred3 | 2015-02-10 | USDGBP.Lo | 0.65600 | -4.717264e+51 | 648.3458551 | 648.4956711 | 648.3425153 | 648.4060694 | 7.190951e+51 | 1 |
USDGBP | pred3 | 2013-01-02 | USDGBP.Cl | 0.61550 | 4.106476e+120 | -9.1841693 | -9.0890929 | -9.1855377 | -9.1459604 | 6.671772e+120 | 1 |
USDCHF | pred3 | 2015-01-19 | USDCHF.Lo | 0.85700 | 1.073049e+00 | -7.9311942 | -7.8219368 | -7.9329997 | -7.8872762 | 1.252100e+00 | 1 |
USDCAD | pred3 | 2014-03-03 | USDCAD.Op | 1.10600 | -2.544890e+129 | -8.1669079 | -8.0710434 | -8.1683075 | -8.1283691 | 2.300986e+129 | 1 |
USDCAD | pred3 | 2014-04-24 | USDCAD.Op | 1.10200 | -3.773474e+136 | -8.0934038 | -7.9978037 | -8.0947930 | -8.0549757 | 3.424205e+136 | 1 |
USDCAD | pred3 | 2016-05-02 | USDCAD.Op | 1.25300 | -9.813572e+66 | 178.5857162 | 178.8042308 | 178.5787630 | 178.6735520 | 7.832060e+66 | 1 |
USDCAD | pred3 | 2016-05-03 | USDCAD.Op | 1.27000 | -1.119022e+52 | -6.9061880 | -6.7699917 | -6.9089613 | -6.8514477 | 8.811193e+51 | 1 |
USDCAD | pred3 | 2017-04-11 | USDCAD.Hi | 1.33400 | -2.485373e+77 | -7.2164382 | -7.0530026 | -7.2203939 | -7.1507498 | 1.863098e+77 | 1 |
USDCAD | pred3 | 2016-09-18 | USDCAD.Lo | 1.31400 | -4.556215e+124 | -6.9687274 | -6.8591679 | -6.9705466 | -6.9246830 | 3.467439e+124 | 1 |
USDCAD | pred3 | 2017-03-10 | USDCAD.Cl | 1.35068 | 1.007990e+99 | -7.1626518 | -6.9992162 | -7.1666075 | -7.0969634 | 7.462831e+98 | 1 |
USDCNY | pred3 | 2014-07-16 | USDCNY.Op | 6.19400 | -2.161076e+130 | -7.7428458 | -7.6199313 | -7.7451200 | -7.6934382 | 3.488983e+129 | 1 |
USDCNY | pred3 | 2014-08-28 | USDCNY.Op | 6.13300 | 4.637545e+41 | -7.6174117 | -7.4944972 | -7.6196859 | -7.5680041 | 7.561626e+40 | 1 |
USDCNY | pred3 | 2013-07-28 | USDCNY.Hi | 6.13100 | 6.130398e+53 | -6.1170230 | -5.9941085 | -6.1192971 | -6.0676154 | 9.999018e+52 | 1 |
USDCNY | pred3 | 2015-12-08 | USDCNY.Hi | 6.40800 | -1.408030e+108 | -6.5687395 | -6.4185107 | -6.5721042 | -6.5083524 | 2.197300e+107 | 1 |
USDCNY | pred3 | 2014-07-10 | USDCNY.Lo | 2.20100 | 6.184813e+00 | -4.7116519 | -4.6023945 | -4.7134574 | -4.6677339 | 2.810002e+00 | 1 |
USDCNY | pred3 | 2014-07-13 | USDCNY.Lo | 6.19400 | 2.922895e+00 | -7.0759875 | -6.9527331 | -7.0782788 | -7.0264376 | 4.718914e-01 | 1 |
USDCNY | pred3 | 2013-03-20 | USDCNY.Cl | 6.21380 | -4.395002e+125 | -6.6128037 | -6.4766073 | -6.6155770 | -6.5580634 | 7.072969e+124 | 1 |
USDCNY | pred3 | 2013-03-25 | USDCNY.Cl | 6.17220 | -3.942912e+117 | -6.5141681 | -6.4049108 | -6.5159737 | -6.4702502 | 6.388179e+116 | 1 |
USDJPY | pred3 | 2014-07-06 | USDJPY.Op | 102.10700 | 1.168959e+70 | 1.4865118 | 1.6234611 | 1.4836967 | 1.5415672 | 1.144838e+68 | 1 |
USDJPY | pred3 | 2014-12-17 | USDJPY.Hi | 117.49700 | -9.546942e+140 | 1.1218412 | 1.2307983 | 1.1200491 | 1.1656334 | 8.125265e+138 | 1 |
USDJPY | pred3 | 2013-02-06 | USDJPY.Lo | 93.30800 | -3.423249e+39 | 0.7655411 | 0.9013645 | 0.7627884 | 0.8201253 | 3.668763e+37 | 1 |
USDJPY | pred3 | 2013-03-13 | USDJPY.Lo | 95.48000 | 5.100789e+105 | 332.7194061 | 332.9100810 | 332.7140723 | 332.7960425 | 5.342260e+103 | 1 |
USDJPY | pred3 | 2013-03-19 | USDJPY.Lo | 94.77000 | 4.589526e+81 | 1.8334754 | 2.0241503 | 1.8281416 | 1.9101118 | 4.842805e+79 | 1 |
USDJPY | pred3 | 2014-06-23 | USDJPY.Lo | 101.81000 | -2.563847e+64 | 584.4345597 | 584.5847886 | 584.4311950 | 584.4949468 | 2.518266e+62 | 1 |
USDJPY | pred3 | 2014-07-06 | USDJPY.Cl | 102.11000 | -3.808324e+02 | 1.4441756 | 1.5811249 | 1.4413605 | 1.4992310 | 3.729629e+00 | 1 |
僕尝试运行好几次,USDCHF
都是获得同样的结果。然后将默认的snorm
分布更换为norm
就没有出现错误。至于USDCNY
原始数据有误就不是统计模型的问题了。
## timeID which contains 3 prediction models.
utimeID <- fx %>%
ddply(.(Date), summarize,
n = n()) %>%
dplyr::filter(n == 84) %>%
tbl_df %>% .$Date
fx %<>% dplyr::filter(Date %in% utimeID, !Date %in% ntimeID)
现在就比较下双方的MSE值与AIC值。
acc <- ddply(fx, .(Cat, Type), summarise,
MSE = mean((Price.T1 - Price)^2, na.rm = TRUE),
n = length(Price),
Akaike.MSE = (-2*MSE)/n+2*4/n,
Akaike = mean(Akaike, na.rm = TRUE),
Bayes = mean(Bayes, na.rm = TRUE),
Shibata = mean(Shibata, na.rm = TRUE),
Hannan.Quinn = mean(Hannan.Quinn, na.rm = TRUE)) %>%
tbl_df %>% mutate(MSE = round(MSE, 6)) %>%
arrange(Type)
acc %>%
kable(caption = 'Group Table Summary') %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'condensed', 'responsive')) %>%
group_rows('USD/AUD Open', 1, 3, label_row_css = 'background-color: #e68a00; color: #fff;') %>%
group_rows('USD/AUD High', 4, 6, label_row_css = 'background-color: #e68a00; color: #fff;') %>%
group_rows('USD/AUD Low', 7, 9, label_row_css = 'background-color: #e68a00; color: #fff;') %>%
group_rows('USD/AUD Close', 10, 12, label_row_css = 'background-color: #e68a00; color: #fff;') %>%
group_rows('USD/EUR Open', 13, 15, label_row_css = 'background-color: #6666ff; color: #fff;') %>%
group_rows('USD/EUR High', 16, 18, label_row_css = 'background-color: #6666ff; color: #fff;') %>%
group_rows('USD/EUR Low', 19, 21, label_row_css = 'background-color:#6666ff; color: #fff;') %>%
group_rows('USD/EUR Close', 22, 24, label_row_css = 'background-color: #6666ff; color: #fff;') %>%
group_rows('USD/GBP Open', 25, 27, label_row_css = 'background-color: #339966; color: #fff;') %>%
group_rows('USD/GBP High', 28, 30, label_row_css = 'background-color: #339966; color: #fff;') %>%
group_rows('USD/GBP Low', 31, 33, label_row_css = 'background-color: #339966; color: #fff;') %>%
group_rows('USD/GBP Close', 34, 36, label_row_css = 'background-color: #339966; color: #fff;') %>%
group_rows('USD/CHF Open', 37, 39, label_row_css = 'background-color: #808000; color: #fff;') %>%
group_rows('USD/CHF High', 40, 42, label_row_css = 'background-color: #808000; color: #fff;') %>%
group_rows('USD/CHF Low', 43, 45, label_row_css = 'background-color: #808000; color: #fff;') %>%
group_rows('USD/CHF Close', 46, 48, label_row_css = 'background-color: #808000; color: #fff;') %>%
group_rows('USD/CAD Open', 49, 51, label_row_css = 'background-color: #666; color: #fff;') %>%
group_rows('USD/CAD High', 52, 54, label_row_css = 'background-color: #666; color: #fff;') %>%
group_rows('USD/CAD Low', 55, 57, label_row_css = 'background-color: #666; color: #fff;') %>%
group_rows('USD/CAD Close', 58, 60, label_row_css = 'background-color: #666; color: #fff;') %>%
group_rows('USD/CNY Open', 61, 63, label_row_css = 'background-color: #e60000; color: #fff;') %>%
group_rows('USD/CNY High', 64, 66, label_row_css = 'background-color: #e60000; color: #fff;') %>%
group_rows('USD/CNY Low', 67, 69, label_row_css = 'background-color: #e60000; color: #fff;') %>%
group_rows('USD/CNY Close', 70, 72, label_row_css = 'background-color: #e60000; color: #fff;') %>%
group_rows('USD/JPY Open', 73, 75, label_row_css = 'background-color: #ff3377; color: #fff;') %>%
group_rows('USD/JPY High', 76, 78, label_row_css = 'background-color: #ff3377; color: #fff;') %>%
group_rows('USD/JPY Low', 79, 81, label_row_css = 'background-color: #ff3377; color: #fff;') %>%
group_rows('USD/JPY Close', 82, 84, label_row_css = 'background-color: #ff3377; color: #fff;') %>%
scroll_box(width = '100%', height = '400px')
Cat | Type | MSE | n | Akaike.MSE | Akaike | Bayes | Shibata | Hannan.Quinn |
---|---|---|---|---|---|---|---|---|
USD/AUD Open | ||||||||
pred1 | USDAUD.Op | 0.001485 | 694 | 0.0115231 | -6.1003165 | -5.9788352 | -6.102787 | -6.0514862 |
pred2 | USDAUD.Op | 0.000067 | 694 | 0.0115272 | -6.8926533 | -6.8017675 | -6.893939 | -6.8561213 |
pred3 | USDAUD.Op | 0.000069 | 694 | 0.0115272 | -6.8224982 | -6.7179646 | -6.824181 | -6.7804804 |
USD/AUD High | ||||||||
pred1 | USDAUD.Hi | 0.001669 | 694 | 0.0115226 | -6.2583349 | -6.1291102 | -6.261126 | -6.2063925 |
pred2 | USDAUD.Hi | 0.000055 | 694 | 0.0115272 | -7.0515969 | -6.9619065 | -7.052856 | -7.0155454 |
pred3 | USDAUD.Hi | 0.000057 | 694 | 0.0115272 | -5.6866132 | -5.5832749 | -5.688265 | -5.6450758 |
USD/AUD Low | ||||||||
pred1 | USDAUD.Lo | 0.000966 | 694 | 0.0115246 | -6.5677746 | -6.4385346 | -6.570489 | -6.5158258 |
pred2 | USDAUD.Lo | 0.000053 | 694 | 0.0115272 | -7.0612497 | -6.9695477 | -7.062567 | -7.0243895 |
pred3 | USDAUD.Lo | 0.000057 | 694 | 0.0115272 | -7.0154288 | -6.9100791 | -7.017146 | -6.9730828 |
USD/AUD Close | ||||||||
pred1 | USDAUD.Cl | 0.001873 | 694 | 0.0115220 | -6.0162413 | -5.8954588 | -6.018686 | -5.9676921 |
pred2 | USDAUD.Cl | 0.000066 | 694 | 0.0115272 | -6.8988588 | -6.8077969 | -6.900150 | -6.8622561 |
pred3 | USDAUD.Cl | 0.000069 | 694 | 0.0115272 | -6.8937281 | -6.7890184 | -6.895418 | -6.8516395 |
USD/EUR Open | ||||||||
pred1 | USDEUR.Op | 0.000368 | 694 | 0.0115263 | -7.3338283 | -7.2020527 | -7.336711 | -7.2808603 |
pred2 | USDEUR.Op | 0.000023 | 694 | 0.0115273 | -7.9057246 | -7.8131176 | -7.907062 | -7.8685006 |
pred3 | USDEUR.Op | 0.000026 | 694 | 0.0115273 | -3.2266234 | -3.1203687 | -3.228365 | -3.1839136 |
USD/EUR High | ||||||||
pred1 | USDEUR.Hi | 0.000358 | 694 | 0.0115263 | -7.1208509 | -6.9949044 | -7.123513 | -7.0702255 |
pred2 | USDEUR.Hi | 0.000018 | 694 | 0.0115273 | -8.1106028 | -8.0198277 | -8.111883 | -8.0741152 |
pred3 | USDEUR.Hi | 0.000020 | 694 | 0.0115273 | -7.7134003 | -7.6089775 | -7.715078 | -7.6714269 |
USD/EUR Low | ||||||||
pred1 | USDEUR.Lo | 0.000072 | 694 | 0.0115272 | -7.8257307 | -7.6860585 | -7.828812 | -7.7695884 |
pred2 | USDEUR.Lo | 0.000020 | 694 | 0.0115273 | -8.0539791 | -7.9609034 | -8.055346 | -8.0165668 |
pred3 | USDEUR.Lo | 0.000026 | 694 | 0.0115273 | -6.3308221 | -6.2240987 | -6.332594 | -6.2879240 |
USD/EUR Close | ||||||||
pred1 | USDEUR.Cl | 0.000557 | 694 | 0.0115258 | -7.3564598 | -7.2230143 | -7.359408 | -7.3028206 |
pred2 | USDEUR.Cl | 0.000023 | 694 | 0.0115273 | -7.9039691 | -7.8117162 | -7.905298 | -7.8668874 |
pred3 | USDEUR.Cl | 0.000026 | 694 | 0.0115273 | -5.7336380 | -5.6277373 | -5.735370 | -5.6910705 |
USD/GBP Open | ||||||||
pred1 | USDGBP.Op | 0.000106 | 694 | 0.0115271 | -8.0967421 | -7.9545923 | -8.099954 | -8.0396069 |
pred2 | USDGBP.Op | 0.000020 | 694 | 0.0115273 | -8.4221013 | -8.3242304 | -8.423632 | -8.3827635 |
pred3 | USDGBP.Op | 0.000020 | 694 | 0.0115273 | -4.2024020 | -4.0908996 | -4.204356 | -4.1575853 |
USD/GBP High | ||||||||
pred1 | USDGBP.Hi | 0.000477 | 694 | 0.0115260 | -7.1519345 | -7.0420252 | -7.153957 | -7.1077584 |
pred2 | USDGBP.Hi | 0.000014 | 694 | 0.0115273 | -8.5515114 | -8.4560209 | -8.552946 | -8.5131304 |
pred3 | USDGBP.Hi | 0.000016 | 694 | 0.0115273 | -6.8351756 | -6.7260536 | -6.837025 | -6.7913156 |
USD/GBP Low | ||||||||
pred1 | USDGBP.Lo | 0.000321 | 694 | 0.0115265 | -7.6996366 | -7.5775927 | -7.702089 | -7.6505829 |
pred2 | USDGBP.Lo | 0.000015 | 694 | 0.0115273 | -8.6241601 | -8.5288847 | -8.625575 | -8.5858656 |
pred3 | USDGBP.Lo | 0.000017 | 694 | 0.0115273 | -6.6693291 | -6.5604223 | -6.671157 | -6.6255556 |
USD/GBP Close | ||||||||
pred1 | USDGBP.Cl | 0.000134 | 694 | 0.0115270 | -7.8141090 | -7.6833530 | -7.816888 | -7.7615534 |
pred2 | USDGBP.Cl | 0.000020 | 694 | 0.0115273 | -8.4297825 | -8.3355701 | -8.431201 | -8.3919153 |
pred3 | USDGBP.Cl | 0.000020 | 694 | 0.0115273 | -5.3457457 | -5.2379019 | -5.347573 | -5.3023995 |
USD/CHF Open | ||||||||
pred1 | USDCHF.Op | 0.000099 | 694 | 0.0115271 | -7.2484023 | -7.1009514 | -7.251811 | -7.1891335 |
pred2 | USDCHF.Op | 0.000026 | 694 | 0.0115273 | -7.5298151 | -7.4369056 | -7.531181 | -7.4924694 |
pred3 | USDCHF.Op | 0.000027 | 694 | 0.0115273 | -7.5027593 | -7.3962012 | -7.504530 | -7.4599274 |
USD/CHF High | ||||||||
pred1 | USDCHF.Hi | 0.000199 | 694 | 0.0115268 | -7.2548707 | -7.1099220 | -7.258261 | -7.1966071 |
pred2 | USDCHF.Hi | 0.000020 | 694 | 0.0115273 | -7.6867609 | -7.5900954 | -7.688222 | -7.6479054 |
pred3 | USDCHF.Hi | 0.000021 | 694 | 0.0115273 | -4.9413177 | -4.8310035 | -4.943199 | -4.8969760 |
USD/CHF Low | ||||||||
pred1 | USDCHF.Lo | 0.000348 | 694 | 0.0115264 | -6.8005222 | -6.6817579 | -6.802844 | -6.7527840 |
pred2 | USDCHF.Lo | 0.000028 | 694 | 0.0115273 | -7.6184651 | -7.5252301 | -7.619825 | -7.5809887 |
pred3 | USDCHF.Lo | 0.000031 | 694 | 0.0115273 | -7.5757600 | -7.4688764 | -7.577526 | -7.5327974 |
USD/CHF Close | ||||||||
pred1 | USDCHF.Cl | 0.000124 | 694 | 0.0115270 | -7.2419650 | -7.0947266 | -7.245386 | -7.1827816 |
pred2 | USDCHF.Cl | 0.000026 | 694 | 0.0115273 | -7.5324416 | -7.4378755 | -7.533853 | -7.4944299 |
pred3 | USDCHF.Cl | 0.000026 | 694 | 0.0115273 | -3.9698805 | -3.8616657 | -3.971703 | -3.9263826 |
USD/CAD Open | ||||||||
pred1 | USDCAD.Op | 0.001082 | 694 | 0.0115243 | -7.1202839 | -6.9760318 | -7.123615 | -7.0623004 |
pred2 | USDCAD.Op | 0.000036 | 694 | 0.0115273 | -7.5436211 | -7.4514271 | -7.544977 | -7.5065628 |
pred3 | USDCAD.Op | 0.000039 | 694 | 0.0115273 | -5.2476659 | -5.1418206 | -5.249424 | -5.2051203 |
USD/CAD High | ||||||||
pred1 | USDCAD.Hi | 0.000275 | 694 | 0.0115266 | -7.4051971 | -7.2539700 | -7.408840 | -7.3444104 |
pred2 | USDCAD.Hi | 0.000035 | 694 | 0.0115273 | -7.6777426 | -7.5748559 | -7.679406 | -7.6363864 |
pred3 | USDCAD.Hi | 0.000038 | 694 | 0.0115273 | -3.4295198 | -3.3129817 | -3.431626 | -3.3826763 |
USD/CAD Low | ||||||||
pred1 | USDCAD.Lo | 0.001172 | 694 | 0.0115240 | -7.0520764 | -6.9033640 | -7.055645 | -6.9922998 |
pred2 | USDCAD.Lo | 0.000031 | 694 | 0.0115273 | -7.6038382 | -7.5119686 | -7.605169 | -7.5669105 |
pred3 | USDCAD.Lo | 0.000035 | 694 | 0.0115273 | -4.6765398 | -4.5710188 | -4.678272 | -4.6341247 |
USD/CAD Close | ||||||||
pred1 | USDCAD.Cl | 0.000856 | 694 | 0.0115249 | -7.1394047 | -6.9954283 | -7.142724 | -7.0815321 |
pred2 | USDCAD.Cl | 0.000035 | 694 | 0.0115273 | -7.5537405 | -7.4609575 | -7.555111 | -7.5164454 |
pred3 | USDCAD.Cl | 0.000038 | 694 | 0.0115273 | -3.8975181 | -3.7910838 | -3.899293 | -3.8547357 |
USD/CNY Open | ||||||||
pred1 | USDCNY.Op | 0.004577 | 694 | 0.0115142 | -5.3262782 | -5.1937738 | -5.329081 | -5.2730186 |
pred2 | USDCNY.Op | 0.001280 | 694 | 0.0115237 | -6.0712923 | -5.9714101 | -6.072831 | -6.0311446 |
pred3 | USDCNY.Op | 0.001739 | 694 | 0.0115224 | -3.2805050 | -3.1669812 | -3.282475 | -3.2348741 |
USD/CNY High | ||||||||
pred1 | USDCNY.Hi | 0.006446 | 694 | 0.0115088 | -5.5772166 | -5.4386976 | -5.580196 | -5.5215391 |
pred2 | USDCNY.Hi | 0.001228 | 694 | 0.0115238 | -5.8947789 | -5.7889571 | -5.896519 | -5.8522438 |
pred3 | USDCNY.Hi | 0.000823 | 694 | 0.0115250 | 0.4844599 | 0.6039232 | 0.482266 | 0.5324782 |
USD/CNY Low | ||||||||
pred1 | USDCNY.Lo | 0.013831 | 694 | 0.0114875 | -5.4334053 | -5.3005227 | -5.436308 | -5.3799933 |
pred2 | USDCNY.Lo | 0.000449 | 694 | 0.0115261 | -6.3281187 | -6.2292034 | -6.329637 | -6.2883598 |
pred3 | USDCNY.Lo | 0.001241 | 694 | 0.0115238 | -5.3583923 | -5.2458355 | -5.360339 | -5.3131502 |
USD/CNY Close | ||||||||
pred1 | USDCNY.Cl | 0.002978 | 694 | 0.0115188 | -5.6155852 | -5.4788612 | -5.618581 | -5.5606296 |
pred2 | USDCNY.Cl | 0.000185 | 694 | 0.0115268 | -6.3803468 | -6.2751058 | -6.382064 | -6.3380453 |
pred3 | USDCNY.Cl | 0.000223 | 694 | 0.0115267 | -2.6275465 | -2.5086639 | -2.629716 | -2.5797618 |
USD/JPY Open | ||||||||
pred1 | USDJPY.Op | 0.849792 | 694 | 0.0090784 | 2.0366510 | 2.2006171 | 2.032538 | 2.1025568 |
pred2 | USDJPY.Op | 0.463180 | 694 | 0.0101926 | 2.0178465 | 2.1131252 | 2.016404 | 2.0561437 |
pred3 | USDJPY.Op | 0.596356 | 694 | 0.0098088 | 3.2665740 | 3.3754942 | 3.264718 | 3.3103544 |
USD/JPY High | ||||||||
pred1 | USDJPY.Hi | 5.072197 | 694 | -0.0030899 | 2.3205292 | 2.4541433 | 2.317666 | 2.3742353 |
pred2 | USDJPY.Hi | 0.350109 | 694 | 0.0105184 | 1.7719840 | 1.8733588 | 1.770359 | 1.8127315 |
pred3 | USDJPY.Hi | 0.557077 | 694 | 0.0099220 | 5.4397869 | 5.5548033 | 5.437725 | 5.4860177 |
USD/JPY Low | ||||||||
pred1 | USDJPY.Lo | 2.765424 | 694 | 0.0035579 | 2.3864636 | 2.5342943 | 2.382975 | 2.4458839 |
pred2 | USDJPY.Lo | 0.461756 | 694 | 0.0101967 | 1.9675156 | 2.0588424 | 1.966205 | 2.0042243 |
pred3 | USDJPY.Lo | 0.695329 | 694 | 0.0095235 | 4.2116218 | 4.3165901 | 4.209913 | 4.2538137 |
USD/JPY Close | ||||||||
pred1 | USDJPY.Cl | 0.604835 | 694 | 0.0097843 | 2.0399015 | 2.2052227 | 2.035726 | 2.1063520 |
pred2 | USDJPY.Cl | 0.468307 | 694 | 0.0101778 | 2.0249439 | 2.1205556 | 2.023491 | 2.0633749 |
pred3 | USDJPY.Cl | 0.598571 | 694 | 0.0098024 | 2.9466791 | 3.0559323 | 2.944812 | 2.9905933 |
acc <- ddply(fx, .(Cat, .id), summarise,
MSE = mean((Price.T1 - Price)^2, na.rm = TRUE),
n = length(Price),
Akaike.MSE = (-2*MSE)/n+2*4/n,
Akaike = mean(Akaike, na.rm = TRUE),
Bayes = mean(Bayes, na.rm = TRUE),
Shibata = mean(Shibata, na.rm = TRUE),
Hannan.Quinn = mean(Hannan.Quinn, na.rm = TRUE)) %>%
tbl_df %>% mutate(MSE = round(MSE, 6)) %>%
arrange(.id)
acc %>%
kable(caption = 'Group Table Summary') %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'condensed', 'responsive')) %>%
group_rows('USD/AUD', 1, 3, label_row_css = 'background-color: #003399; color: #fff;') %>%
group_rows('USD/CAD', 4, 6, label_row_css = 'background-color: #003399; color: #fff;') %>%
group_rows('USD/CHF', 7, 9, label_row_css = 'background-color: #003399; color: #fff;') %>%
group_rows('USD/CNY', 10, 12, label_row_css = 'background-color: #003399; color: #fff;') %>%
group_rows('USD/EUR', 13, 15, label_row_css = 'background-color: #003399; color: #fff;') %>%
group_rows('USD/GBP', 16, 18, label_row_css = 'background-color: #003399; color: #fff;') %>%
group_rows('USD/JPY', 19, 21, label_row_css = 'background-color: #003399; color: #fff;') %>%
scroll_box(width = '100%', height = '400px')
Cat | .id | MSE | n | Akaike.MSE | Akaike | Bayes | Shibata | Hannan.Quinn |
---|---|---|---|---|---|---|---|---|
USD/AUD | ||||||||
pred1 | USDAUD | 0.001498 | 2776 | 0.0028808 | -6.235667 | -6.110485 | -6.238272 | -6.185349 |
pred2 | USDAUD | 0.000060 | 2776 | 0.0028818 | -6.976090 | -6.885255 | -6.977378 | -6.939578 |
pred3 | USDAUD | 0.000063 | 2776 | 0.0028818 | -6.604567 | -6.500084 | -6.606253 | -6.562570 |
USD/CAD | ||||||||
pred1 | USDCAD | 0.000846 | 2776 | 0.0028812 | -7.179240 | -7.032198 | -7.182706 | -7.120136 |
pred2 | USDCAD | 0.000034 | 2776 | 0.0028818 | -7.594736 | -7.499802 | -7.596166 | -7.556576 |
pred3 | USDCAD | 0.000038 | 2776 | 0.0028818 | -4.312811 | -4.204226 | -4.314654 | -4.269164 |
USD/CHF | ||||||||
pred1 | USDCHF | 0.000193 | 2776 | 0.0028817 | -7.136440 | -6.996840 | -7.139576 | -7.080327 |
pred2 | USDCHF | 0.000025 | 2776 | 0.0028818 | -7.591871 | -7.497527 | -7.593270 | -7.553948 |
pred3 | USDCHF | 0.000026 | 2776 | 0.0028818 | -5.997429 | -5.889437 | -5.999239 | -5.954021 |
USD/CNY | ||||||||
pred1 | USDCNY | 0.006958 | 2776 | 0.0028768 | -5.488121 | -5.352964 | -5.491042 | -5.433795 |
pred2 | USDCNY | 0.000786 | 2776 | 0.0028813 | -6.168634 | -6.066169 | -6.170263 | -6.127448 |
pred3 | USDCNY | 0.001034 | 2776 | 0.0028811 | -2.695496 | -2.579389 | -2.697566 | -2.648827 |
USD/EUR | ||||||||
pred1 | USDEUR | 0.000339 | 2776 | 0.0028816 | -7.409217 | -7.276508 | -7.412111 | -7.355874 |
pred2 | USDEUR | 0.000021 | 2776 | 0.0028818 | -7.993569 | -7.901391 | -7.994898 | -7.956518 |
pred3 | USDEUR | 0.000024 | 2776 | 0.0028818 | -5.751121 | -5.645295 | -5.752852 | -5.708584 |
USD/GBP | ||||||||
pred1 | USDGBP | 0.000260 | 2776 | 0.0028817 | -7.690606 | -7.564391 | -7.693222 | -7.639875 |
pred2 | USDGBP | 0.000017 | 2776 | 0.0028818 | -8.506889 | -8.411176 | -8.508339 | -8.468419 |
pred3 | USDGBP | 0.000018 | 2776 | 0.0028818 | -5.763163 | -5.653819 | -5.765028 | -5.719214 |
USD/JPY | ||||||||
pred1 | USDJPY | 2.323062 | 2776 | 0.0012082 | 2.195886 | 2.348569 | 2.192226 | 2.257257 |
pred2 | USDJPY | 0.435838 | 2776 | 0.0025678 | 1.945572 | 2.041470 | 1.944115 | 1.984119 |
pred3 | USDJPY | 0.613356 | 2776 | 0.0024399 | 3.966165 | 4.075705 | 3.964292 | 4.010195 |
acc <- ddply(fx, .(Cat), summarise,
MSE = mean((Price.T1 - Price)^2, na.rm = TRUE),
n = length(Price),
Akaike.MSE = (-2*MSE)/n+2*4/n,
Akaike = mean(Akaike, na.rm = TRUE),
Bayes = mean(Bayes, na.rm = TRUE),
Shibata = mean(Shibata, na.rm = TRUE),
Hannan.Quinn = mean(Hannan.Quinn, na.rm = TRUE)) %>%
tbl_df %>% mutate(MSE = round(MSE, 6))
acc %>%
kable(caption = 'Group Table Summary') %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'condensed', 'responsive'))
Cat | MSE | n | Akaike.MSE | Akaike | Bayes | Shibata | Hannan.Quinn |
---|---|---|---|---|---|---|---|
pred1 | 0.333308 | 19432 | 0.0003774 | -5.563344 | -5.426402 | -5.566386 | -5.508300 |
pred2 | 0.062397 | 19432 | 0.0004053 | -6.126602 | -6.031407 | -6.128028 | -6.088338 |
pred3 | 0.088525 | 19432 | 0.0004026 | -3.879775 | -3.770935 | -3.881614 | -3.836026 |
结果证明pred2
的archm=FALSE
最为精准。目前正在编写着Q1App2自动交易应用。“商场如战场”,除了模式最优化以外,程序运作上分秒必争… microbenchmark
测试效率,之前编写了个DataCollection应用采集实时数据以方便之后的高频率交易自动化建模2。欲知更多详情,请参阅Real Time FXCM。
以下乃此文献资讯:
Category | session_info | Category | Sys.info |
---|---|---|---|
version | R version 3.5.1 (2018-07-02) | sysname | Windows |
system | x86_64, mingw32 | release | 10 x64 |
ui | RTerm | version | build 17134 |
language | en | nodename | RSTUDIO-SCIBROK |
collate | Japanese_Japan.932 | machine | x86-64 |
tz | Asia/Tokyo | login | scibr |
date | 2018-10-17 | user | scibr |
Current time | 2018-10-17 14:15:33 JST | effective_user | scibr |