Теоретическая цена, греки

Страницы: 1
RSS
Теоретическая цена, греки
 
Господа, теор. цена обновляется в КВИКе раз в минуту, это очень долго.
Есть ли в открытом доступе модуль на Луа или просто формула для её расчёта? Чтобы самому расчитывать теор. цену.
Я не про формулу Б-Ш в гипотетическом виде, а именно реализация в КВИКе.
Спасибо.
 
Поищите на сайте ммвб.
Когда-то там находил.
Но очень сомневаюсь, что Вы ее сможете запрограммировать.
Сомневаюсь, что есть бесплатная прога.
------------------------
Ищущий да обрящет.
 
Цитата
Николай Камынин написал:
Но очень сомневаюсь, что Вы ее сможете запрограммировать.
Да ладно. Самое хитрое там - функция нормального распределения N(x). Но нам в помощь численные методы. Если интересна теория:
1. Hart, J.F. (1968). Computer Approximations. Наверно, наиболее цитируемая книга по численным методам.
2. Krishnamoorthy K. Handbook of Statistical Distributions with Applications (2006). Это, в частности, в области теории вероятностей. В ней надо смотреть раздел "10.10. Computing the Distribution Function".

Ну и код функции N(x) по этому методу, перенесенный на Луа. Точность 14 знаков этого приближения устроит?
Код
function NormCDF(x)
   if type(x) ~= "number" then return end
   local z = math.abs(x)
   local p

   if z < 7 then
      p = math.exp(-z * z / 2) *
         (((((((2.49338129315143e-02 * z + 0.604737992686704) * z + 6.81311678753268) * z +
         46.0649519338751) * z + 202.102090717023) * z + 580.109897562909) * z +
         1024.60809538334) * z + 913.167442114756) /
         ((((((((0.0625 * z + 1.51584331855598) * z + 17.1406995062578) * z +
         116.979524577666) * z + 523.596091947383) * z + 1566.10462582845) * z +
         3044.77121163622) * z + 3506.42059774909) * z + 1826.33488422951)
   elseif z < 32 then
      p = math.exp(-z * z / 2) / 2.506628274631 /
         (z + 1 / (z + 2 / (z + 3 / (z + 4 / (z + 5 / (z + 6 / (z + 7)))))))
   else
      p = 0
   end

   return (x > 0) and (1 - p) or p
end

Не так страшно? С остальным в формулах Блэка-Шоулза наверно справитесь?
Вот, например, расчет дельты колл опциона:
Код
function CallDelta(f, s, v, t)
   return NormCDF((math.log(f / s) + v^2 * t / 2) / (v * t^0.5))
end
 
Цитата
SDL написал:
Цитата
Николай  Камынин   написал:
Но очень сомневаюсь, что Вы ее сможете запрограммировать.
Да ладно. Самое хитрое там - функция нормального распределения N(x). Но нам в помощь численные методы. Если интересна теория:
1. Hart, J.F. (1968). Computer Approximations. Наверно, наиболее цитируемая книга по численным методам.
2. Krishnamoorthy K. Handbook of Statistical Distributions with Applications (2006). Это, в частности, в области теории вероятностей. В ней надо смотреть раздел "10.10. Computing the Distribution Function".

Ну и код функции N(x) по этому методу, перенесенный на Луа. Точность 14 знаков этого приближения устроит?
Код
   function   NormCDF (x)
    if  type(x) ~ =   "number"   then   return   end 
    local  z  =   math.abs (x)
    local  p

    if  z  <   7   then 
      p  =   math.exp ( - z  *  z /  2 )  * 
         ((((((( 2.49338129315143e-02   *  z  +   0.604737992686704 )  *  z  +   6.81311678753268 )  *  z  + 
          46.0649519338751 )  *  z  +   202.102090717023 )  *  z  +   580.109897562909 )  *  z  + 
          1024.60809538334 )  *  z  +   913.167442114756 ) /
         (((((((( 0.0625   *  z  +   1.51584331855598 )  *  z  +   17.1406995062578 )  *  z  + 
          116.979524577666 )  *  z  +   523.596091947383 )  *  z  +   1566.10462582845 )  *  z  + 
          3044.77121163622 )  *  z  +   3506.42059774909 )  *  z  +   1826.33488422951 )
    elseif  z  <   32   then 
      p  =   math.exp ( - z  *  z /  2 ) /  2.506628274631  /
         (z  +   1  / (z  +   2  / (z  +   3  / (z  +   4  / (z  +   5  / (z  +   6  / (z  +   7 )))))))
    else 
      p  =   0 
    end 

    return  (x  >   0 )  and  ( 1   -  p)  or  p
 end 
  

Не так страшно? С остальным в формулах Блэка-Шоулза наверно справитесь?
Вот, например, расчет дельты колл опциона:
Код
   function   CallDelta (f, s, v, t)
    return  NormCDF(( math.log (f / s)  +  v^ 2   *  t /  2 ) / (v  *  t^ 0.5 ))
 end 
  
Ну,ну...
-------------------------------
"..не сумлевайтесь, милые:
Коль что у вас не ладится — ну, там, не тот аффект,
— Мы мигом к вам заявимся с лопатами и с вилами,
Денёчек покумекаем — и выправим дефект!"
 
Это с сайта ММВБ

Из ваших ответов стало понятно как считать N.
А как считать волатильность?
 
Цитата
Let_it_go написал:
А как считать волатильность?

По приведенной выше методике биржи волатильность для каждого страйка оценивается с помощью параметрической кривой - "улыбки волатильности". Эта кривая - аналитическая модель с 5-ю параметрами (A, B, C, D, E). Про это и написано в методике непосредственно под приведенной выше таблицей:

"Параметры A, B, C, D, E, S устанавливаются таким образом, чтобы для каждого страйка опциона значение кривой волатильности для данного страйка было выше подразумеваемой волатильности лучшей заявки на покупку и одновременно ниже подразумеваемой волатильности лучшей заявки на продажу по опциону с данным страйком. Подбор указанных параметров кривой волатильности осуществляется один раз в одну минуту".

Таким образом, для решения задачи нужно брать лучшие биды и оффера в стаканах для каждого страйка и находить A, B, C, D, E так, чтобы кривая по этой формуле проходила указанным образом.
Подбор этих параметров - класс математических задач, называемый "Curve fitting". Вот можно вкратце ознакомиться:
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D0%B5%D0­%BD%D0%B8%D0%B5_%D1...
Там же есть список литературы.

Готовые алгоритмы и код дать не могу, так как это использовать не приходилось.
 
Цитата
Let_it_go написал:
Это с сайта ММВБ

Из ваших ответов стало понятно как считать N.
А как считать волатильность?
Ищите все на сайте ммвб, а не спрашивайте на форуме.
Потому, что Вам надо не ссылки на математику для начинающих, а методики расчета на бирже и чтобы у Вас все совпала с биржей.
Поэтому бесплатных решений нет, а написать решения может тот, кто не задает подобные вопросы и профессионально пишет софт.
Успехов в изучении программирования.
Страницы: 1
Читают тему
Наверх