2020# ' @param seed an value specifying if and how the random number generator should
2121# ' be initialized (\sQuote{seeded}). Either NULL or an integer that will be used in a
2222# ' call to set.seed before simulating the response vectors.
23- # ' @param solver either \dQuote{nlortr} or \dQuote{solnp}.
23+ # ' @param solver only \dQuote{nlortr} currently supported.
24+ # ' @param control optional control parameters.
2425# ' @param trace whether to show the progress bar. The user is expected to have
2526# ' set up appropriate handlers for this using the \dQuote{progressr} package.
2627# ' @param ... not used.
5758# '
5859tsbacktest.tsissm.autospec <- function (object , start = floor(length(object $ y )/ 2 ), end = length(object $ y ),
5960 h = 1 , estimate_every = 1 , rolling = FALSE , weights_scheme = c(" AIC" ," BIC" ," U" ), weights = NULL ,
60- seed = NULL , solver = " nloptr" , trace = FALSE , ... )
61+ seed = NULL , solver = " nloptr" , control = NULL , trace = FALSE , ... )
6162{
63+ solver <- " nloptr"
64+ if (is.null(control )) {
65+ control <- issm_control(solver = " nloptr" , algorithm = " SLSQP" , trace = 0 )
66+ }
6267 if (object $ top_n > 1 ) {
6368 top_n <- object $ top_n
6469 weights_scheme <- match.arg(weights_scheme [1 ], c(" AIC" ," BIC" ," U" ))
@@ -68,10 +73,10 @@ tsbacktest.tsissm.autospec <- function(object, start = floor(length(object$y)/2)
6873 weights_scheme <- " U"
6974 }
7075 out <- .backtest_ensemble(object , start = start , end = end , h = h , estimate_every = estimate_every , rolling = rolling , weights_scheme = weights_scheme ,
71- weights = weights , seed = seed , solver = solver , trace = trace )
76+ weights = weights , seed = seed , solver = solver , control = control , trace = trace )
7277 } else {
7378 out <- .backtest_top(object , start = start , end = end , h = h , estimate_every = estimate_every , rolling = rolling , seed = seed , solver = solver ,
74- trace = trace )
79+ control = control , trace = trace )
7580 }
7681 return (out )
7782}
@@ -80,8 +85,12 @@ tsbacktest.tsissm.autospec <- function(object, start = floor(length(object$y)/2)
8085# ' @rdname tsbacktest
8186# ' @export
8287tsbacktest.tsissm.spec <- function (object , start = floor(length(object $ target $ y_orig )/ 2 ), end = length(object $ target $ y_orig ),
83- h = 1 , estimate_every = 1 , rolling = FALSE , seed = NULL , solver = " nloptr" , trace = FALSE , ... )
88+ h = 1 , estimate_every = 1 , rolling = FALSE , seed = NULL , solver = " nloptr" , control = NULL , trace = FALSE , ... )
8489{
90+ solver <- " nloptr"
91+ if (is.null(control )) {
92+ control <- issm_control(solver = " nloptr" , algorithm = " SLSQP" , trace = 0 )
93+ }
8594 parameter <- b <- forecast_dates <- NULL
8695 data <- xts(object $ target $ y_orig , object $ target $ index )
8796
@@ -152,7 +161,7 @@ tsbacktest.tsissm.spec <- function(object, start = floor(length(object$target$y_
152161 sampling = object $ target $ sampling , sample_n = object $ variance $ sample_n ,
153162 init_garch = object $ variance $ init_variance , garch_order = object $ variance $ order ,
154163 variance = object $ variance $ type , distribution = object $ distribution $ type )
155- mod <- try(estimate(spec , solver = solver , scores = FALSE ), silent = TRUE )
164+ mod <- try(estimate(spec , solver = solver , control = control , scores = FALSE ), silent = TRUE )
156165 model_coef <- coef(mod )
157166 log_lik <- as.numeric(logLik(mod ))
158167 aic <- as.numeric(AIC(mod ))
@@ -242,7 +251,7 @@ tsbacktest.tsissm.spec <- function(object, start = floor(length(object$target$y_
242251}
243252
244253.backtest_top <- function (object , start = floor(length(object $ y )/ 2 ), end = length(object $ y ), h = 1 ,
245- estimate_every = 1 , rolling = FALSE , seed = NULL , solver = " nloptr" ,
254+ estimate_every = 1 , rolling = FALSE , seed = NULL , solver = " nloptr" , control = NULL ,
246255 trace = FALSE , ... )
247256{
248257 parameter <- b <- forecast_dates <- NULL
@@ -305,7 +314,7 @@ tsbacktest.tsissm.spec <- function(object, start = floor(length(object$target$y_
305314 sampling = object $ sampling , sample_n = object $ sample_n ,
306315 init_garch = object $ init_garch , garch_order = object $ garch_order ,
307316 variance = object $ variance , distribution = object $ distribution , top_n = 1 )
308- mod <- try(estimate(spec , solver = solver , trace = FALSE ), silent = TRUE )
317+ mod <- try(estimate(spec , solver = solver , control = control , trace = FALSE ), silent = TRUE )
309318 model_coef <- coef(mod )
310319 log_lik <- as.numeric(logLik(mod ))
311320 aic <- as.numeric(AIC(mod ))
@@ -394,7 +403,7 @@ tsbacktest.tsissm.spec <- function(object, start = floor(length(object$target$y_
394403
395404.backtest_ensemble <- function (object , start = floor(length(object $ y )/ 2 ), end = length(object $ y ),
396405 h = 1 , estimate_every = 1 , rolling = FALSE , weights_scheme = c(" U" ," AIC" ," BIC" ), weights = NULL ,
397- seed = NULL , solver = " nloptr" , trace = FALSE , ... )
406+ seed = NULL , solver = " nloptr" , control = NULL , trace = FALSE , ... )
398407{
399408 if (weights_scheme == " U" ) {
400409 wfun <- function (x ) {
@@ -470,7 +479,7 @@ tsbacktest.tsissm.spec <- function(object, start = floor(length(object$target$y_
470479 sampling = object $ sampling , sample_n = object $ sample_n ,
471480 init_garch = object $ init_garch , garch_order = object $ garch_order ,
472481 variance = object $ variance , distribution = object $ distribution , top_n = top_n )
473- mod <- try(estimate(spec , solver = solver , trace = FALSE ), silent = TRUE )
482+ mod <- try(estimate(spec , solver = solver , control = control , trace = FALSE ), silent = TRUE )
474483 w <- wfun(mod )
475484 L <- index_table [[i ]]
476485 M <- split(L , by = " filter_date" )
0 commit comments