R fit функция, возвращающая только начальный номер - PullRequest
0 голосов
/ 16 мая 2019

Я автоматизирую свою торговлю в 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 голосов
/ 16 мая 2019

Трудно понять вашу функцию для оптимизации.Попробуйте что-то вроде этого

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...