# Load Microsoft Corporation logarithmic percentage returns from December 8,
# 2010 to November 15, 2018 for a total of T = 2000 observation
data("MSFT")
##############################################################
######################## Estimate DMQ ########################
##############################################################
# Deciles
vTau = seq(0.1, 0.9, 0.1)
# Reference quantile to the median
iTau_star = 5
# Fix the reference quantile to a constant
FixReference = TRUE
# Estimate DMQ
Fit_solnp = EstimateDMQ(vY = vY,
vTau = vTau,
iTau_star = iTau_star,
FixReference = FixReference,
fn.optimizer = fn.solnp,
cluster = cluster)
Fit_solnp$vPn
Fit_solnp$optimizer$value
if (FALSE) {
#### Estimate DMQ using different optimizers
# With the DEoptim optimizer
# parallel computation
iG = 7
cluster = makeCluster(iG)
set.seed(123)
# Estimate DMQ
Fit_DEoptim = EstimateDMQ(vY = vY,
vTau = vTau,
iTau_star = iTau_star,
FixReference = FixReference,
fn.optimizer = fn.DEoptim,
cluster = cluster)
Fit_DEoptim$vPn
Fit_DEoptim$optimizer$value
# Estimate the model with a user defined optimizer.
# Let's use the gosolnp() optimizer from the Rsolnp package.
library("Rsolnp")
fn.gosolnp <- function(par0, vY, FUN, LB, UB, ...) {
foo = list(...)
if (!is.null(foo$cluster)) {
cluster = foo$cluster
clusterEvalQ(cluster, library(DMQ))
}
optimiser = gosolnp(
pars = par0,
fun = FUN, vY = vY,
n.sim = 1000,
n.restarts = 5,
LB = LB,
UB = UB, control = list(trace = 1),
...)
out = list(pars = optimiser$pars,
value = tail(optimiser$values, 1),
hessian = optimiser$hessian,
convergence = optimiser$convergence)
return(out)
}
set.seed(123)
# Estimate DMQ
Fit_gosolnp = EstimateDMQ(vY = vY,
vTau = vTau,
iTau_star = iTau_star,
FixReference = FixReference,
fn.optimizer = fn.gosolnp,
cluster = cluster,
smooth = TRUE)
Fit_gosolnp$vPn
Fit_gosolnp$optimizer$value
stopCluster(cluster)
}
Run the code above in your browser using DataLab