Блог им. kiselev

Рабочий код LUA для QUIK по расчету теор цены опциона на Мосбирже

    • 15 марта 2025, 09:53
    • |
    • А.К.
  • Еще
Код взял с сайта bot4sale.ru/

Спасибо автору за публикацию. Дублирую здесь с некоторыми комментами.
Публикую как есть, за ошибки отвественности нет, не является рекомендацией!

LUA код считает цену опциона по формуле БлэкаШоулза.

function cnd(x)

-- taylor series coefficients
   local a1, a2, a3, a4, a5 = 0.31938153, -0.356563782, 1.781477937,-1.821255978, 1.330274429
   local l = math.abs(x)
   local k = 1.0 / (1.0 + 0.2316419 * l)
   local w = 1.0 - 1.0 / math.sqrt(2 * math.pi) * math.exp(-l * l / 2) * (a1 * k + a2 * k * k + a3 * (k^3) + a4 * (k^4) + a5 * (k^5))
   if x < 0 then w = 1.0 - w end
   return w
end

-- The Black-Scholes option valuation function
-- is_call: true for call, false for put
-- s: current price
-- x: strike price
-- t: time
-- r: interest rate
-- v: volatility
function black_scholes(is_call, s, x, t, r, v)
   local d1 = (math.log(s / x) + (r + v * v / 2.0) * t) / (v * math.sqrt(t))
   local d2 = d1 - v * math.sqrt(t)
   if is_call then
      return s * cnd(d1) - x * math.exp(-r * t) * cnd(d2)
   else
      return x * math.exp(-r * t) * cnd(-d2) - s * cnd(-d1)
   end
end
Проверено вчера на путах сишки. Расчет совпал с табличными значениями «теор цена» на июньских, сентярьских, декабрьских досках опционов.

Сделал вынужденные изменения в оригинальном коде:
math.pow(k, 3) — не воспринимается компилятором LUA 5.4, заменил на (k^3) и т.д.

t — задается в годах! Т.е. сначала расчитываем количество дней до экспиры опциона, а потом делим на 365 чтобы получить дробное значение.
r — устанавливал 0.001, почему-то этот коэффициент оказался для путов не релевантным.
v — задается дробным значением, деленным на 100. Т.е. 0.2 для волы 20%, 0.3 для 30% и т.д.
По сути: v — заданная волатильность, основной параметр, на котором можно строить своих роботов
s — цена базового контракта (фьючерса), получаю через функцию getParamEx(«SPBFUT», «Si**», «last»).param_value

В-общем, если полезно — лайкните.


Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.

  • обсудить на форуме:
  • Quik Lua
5.6К | ★19
19 комментариев
а зачем это, если методика Мосбиржи наоборот считает волу по ордерам в стакане… а если стакан пустой то и волу они берут приблизительно… то есть вола изначально притянута за уши. Еще 10 лет назад один умник признался что на вечерке на дальних страйках теорценой очень легко манипулировать.
Сергей Олейник, а как поставить свою лимитную заявку по своей ставке IV, если не считать ??
avatar
Алексей, так вы про расчет заявки а не про теорцену… тогда ясно
Еще 10 лет назад один умник признался что на вечерке на дальних страйках теорценой очень легко манипулировать.
Сергей Олейник, это был Илья Коровин в споре с Твардовским В.В. про паравоз, у которого отказали тормоза ?!
avatar
Алексей, 
в споре с Твардовским В.В. про паравоз, у которого отказали тормоза

деталей не помню, но где-то так

Алексей, в том видео, если правильно помню, Коровин заявлял не про вечернюю сессию, а вообще в любое время он двигал рынок на дальних )
Твардовский подобрал отличную иллюстрацию )
Тео, транслируемая биржей — даже внутри дня может показывать чудеса, меняясь в разы на некоторое время.
avatar
ignat, да, на пустой опционной доске IV и соответственно теор. цена, транслируемая биржей — иногда как будто от балды берется  В этом смысле на кухне ничего не поменялось и по сей день
avatar
Translator   Алексей, а можно пожалуйста пример получения цены (LAST) опциона из стакана? (на любом языке: python, lua)  Там логика также как и с другими инструментами типа акций-облигаций?  getparamex['data']['last'] по коду опциона? код секции тоже интересует. Просто не имел еще возможность потестировать работу ботов по опцикам.


avatar
цены (LAST) опциона из стакана?
Илья Нечаев, «last» — это значение цены последней сделки, если сделок не было вернёт нуль. Для получения данных из стакана использовать «BID» и «OFFER»
avatar
 Вроде увидел s — цена базового контракта (фьючерса), получаю через функцию getParamEx(«SPBFUT», «Si**», «last»).param_value. оно?
avatar
Илья Нечаев, да, s — это текущая цена базового актива для расчитываемого опциона. Например: контракт SiM5 для пута Si90000BR5.
avatar
Алексей, и еще один вопрос на твой взгляд из опционов где сейчас больше всего ликвидность и объемы торгов (top5)
avatar
Илья Нечаев, не знаю. Меня сейчас интерисуют путы сишки, за ними начал наблюдение. Ликвидность есть на квартальных июньских путах. Ликвидность — не явная, а обеспечивается роботами каких-то алготрейдеров на центральном страйке и близких страйков к центральному, если давать этим роботам небольшую премию к теор цене. В принципе можно сформировать спред по приемлемой цене с помощью лимитных заявок.
avatar

__rtx, ага, в другой жизни ты научишься быть вежливым в сети и смартлаб сразу начнет отвечать на твои вопросы
avatar
Ты не понял, ответ мне и не нужен.
_____rtx, я то как раз понял твой снобизм. Мне такие хамоватые боты давно тут пытаются настроение создавать. Только пользы от вас — около нуля, в первый день немного есть; а во второй день приходится банить чтобы время не тратили.
avatar
Можно ли в Lua скрипте получать доску опционов? Бид, аск и миддл маркет для каждого опциона в цене и iv
avatar
Vasily Smolyar, указав точный тикер опциона можнео получить его bid и ask
avatar

Читайте на SMART-LAB:
Фото
Что происходит с российскими нефтяниками?
Несмотря на высокие мировые цены на «черное золото», акции российских нефтегазовых компаний в последнее время не пользуются особым...
Селигдар не будет платить дивиденды за 2025 год
Совет директоров Селигдара ожидаемо отказался от дивидендных выплат за 2025 год. Решение полностью укладывается в финансовую картину компании. По...
Фото
Блогерам рассчитали пенсию
По данным опроса RENI, чуть больше половины россиян полностью полагаются на госпенсию. Свыше трети респондентов ответили, что пока только...
Фото
Исповедь по Магниту: пришло время каяться за свои грехи. Самый подробный разбор отчета за 2025 год 
Магнит — это как сыр с плесенью. Удовольствие для гурманов 😁 Примитивная оценка акций Магнита делается через мультипликатор EV/EBITDA...

теги блога А.К.

....все тэги



UPDONW
Новый дизайн