R fit函数仅返回起始编号

时间:2019-05-16 18:42:10

标签: r optimization modeling

我正在使我在R中的交易自动化。我正在尝试使用nls和fit函数优化我的公式,但是仅返回我输入的初始起始参数。我没有使用反复试验的方法,而是试图找到一种使用函数返回最佳策略价值的方法。

我尝试为变量“ a”和“ b”输入各种值,但是仅返回我输入的起始值,并且没有进行任何优化。我不确定是否使用了错误的功能,或者是否应该使用更合适的功能。下面的代码显示了我尝试过的内容,变量值(由模型提供,而不是我要优化的变量值是随机生成的,因为我不知道如何将市场数据上传到此问题帖中。

# VARIABLES         
x <- 1:1000 # number instead of date 
y <- round((runif(1000, min=0, max=50)), digits=2) # highest price of the day minus the opening price of the day
z <- round((runif(1000, min=0.001, max=0.040)), digits=6) # implied volatility for the day 
w <- sample(2000:2800, 1000, replace=TRUE) # opening price for the day 

# FORMULA
# OPEN PRICE OF THE DAY - MULTIPLIED - BY IMPLIED VOLATILITY FOR THE DAY = (APPROXIMATLY) HIGHEST PRICE OF THE DAY - MINUS - OPEN PRICE FOR THE DAY 
( w * (1 + z)) - w = y 

# OPTMISED FORMULA FORMAT 
(( w * ((1 + z) * a)) * b) - w = y # ATTEMPTING TO OPTMISE MY FORMULA TO IMPROVE THE ACCURACY OF RESULT FOR EXPECTED HIGH (y)
# TRYING WITH STARTING VALUES 
a <- 0.000001
b <- 0.000001

# USING nls function and fit 
m<-nls( y~ (( w * ((1 + z) * a)) - w)) + b 
# OR
m<-nls( y~(( w * ((1 + z) * a)) * b)) - w

我正在尝试获取最适合我的公式的两个版本的变量“ a”和“ b”的值,以便期望的高值更好地接近实现的高位。预先感谢您可能提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

很难理解要优化的功能。试试这样的东西

m<-nls( y~ w * (1 + z) * a  - b* w,start=list(a=a,b=b))
m

> m
Nonlinear regression model
  model: y ~ w * (1 + z) * a - b * w
   data: parent.frame()
         a          b 
 0.0089771 -0.0008416 
 residual sum-of-squares: 221244

Number of iterations to convergence: 1 
Achieved convergence tolerance: 1.944e-07

>  coef(m)
            a             b 
 0.0089771178 -0.0008416359