R

时间:2018-07-21 14:28:31

标签: r optimization sampling minimize quantitative-finance

我尝试最小化R中带有优化的函数。问题是我不确定我应该对输出值进行真正的解释。当我试图估计一个参数使我的函数为0时,我并不真正理解为什么带有估计的参数的函数值不同于0。 艰难当我假设下边界(上边界和下边界)(它们不是正确的边界)时,我的函数的值就比它估计的参数要低。 我应该担心该功能的价值吗?

这是我第一次优化函数,我将非常感谢您的帮助! 我提供了代码和输出。

calcr <- function(time, price, freq) {
input <- data.table(time=time,price=price);
input[order(time),];
out <- input[,.(return=log(price[length(price)]/price[1])),
           by=.(time=as.POSIXct(trunc(unclass(time)/freq)*freq,
                                origin='1970-01-01'))];
print(input)
print(out)
return(out);
}

target.fn <- function(m,data) {
trade.interval <- data[,.(interval=difftime(max(time,na.rm=T),
                                          min(time,na.rm=T),
                                          units = "secs")),
                     by=day(time)][,mean(interval,na.rm=T)];
 r <- calcr(time=data$time,price=data$price,
         freq=unclass(trade.interval)/m);
a <- (mean(r$return^2,na.rm=T))^2;
b <- -3*a+2*(mean(r$return^4,na.rm=T));
q  <- r[,.(qi=m/3*sum(return^4)),by=day(time)][,mean(qi,na.rm=T)];
return(abs(2*m^3*a+m^2*b-2*q));
}

##lower=6,upper=23398
optim(par=60,fn=target.fn,data=aa[,.(time,price=nbbomidstart)],
  method='Brent',lower=6,upper=23300);

我得到的输出如下:

$`par`
[1] 4641.689

$value
[1] 56480.07

$counts
function gradient 
      NA       NA 

$convergence
[1] 0

$message
NULL

非常感谢您!

1 个答案:

答案 0 :(得分:0)

实际上那里还有另一个问题。问题出在数据上,这在我的数据中引入了一些噪音。修复该问题后,我的代码实际上运行良好,并且该函数的值趋向于0,除非我使用了一些奇怪的价格。该问题是由于使用中间引号的起始价格而非结束价格引起的,该价格不会在函数中引入太多噪音。