Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Расчет дельты опциона

Delphi , Алгоритмы , Игры

Вот такой функцией пользуюсь для расчета дельты:

Код:

Uses ... normaldistr; //модуль из ALGLIB project
TPaper = (pCallOption, pPutOption, pFutures);//тип бумаги

function GetDelta(aPrice, aStrake, aVolaty, aDay : Currency; {aCount : integer;} aTypePaper: TPaper) : Double;
var larg1 : Double;
begin
  larg1:=( LN(aPrice/aStrake) +(aVolaty*aVolaty/2)*(aDay/365) )/( aVolaty*Sqrt(aDay/365) );

  case aTypePaper of
    pFutures:Result:=1;
    pPutOption:Result:=NormalDistribution(larg1)-1;
    pCallOption:Result:=NormalDistribution(larg1);
  end;

end;


Результат полностью соответствует данным программы "Опционный аналитик FORTS".

KAN

Прекрасный код!

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

Вот разбивка на шаги, что код делает:

  1. Он использует модуль normaldistr из ALGLIB, который предоставляет функции для работы с нормальными распределениями.
  2. Функция принимает четыре параметра:
    • aPrice: текущая рыночная цена основного актива (например, акции, контракт на будущие поставки).
    • aStrake: страйк-цена опциона.
    • aVolaty: волатильность основного актива.
    • aDay: время до истечения срока действия оптиона в днях.
  3. Функция также принимает необязательный параметр aCount с умолчанием 1, который не используется в этом реализации.
  4. Тип TPaper используется для указания типа бумаги (то есть основного актива). Он может быть одним из трех значений: pFutures, pPutOption или pCallOption.
  5. Функция рассчитывает значение larg1 с помощью следующей формулы:
larg1  = ln(aPrice/aStrake) + (aVolaty^2/2) * (aDay/365)

Это логарифм отношения между текущей ценой и страйк-ценой, плюс термин, представляющий собой волатильность-адаптированное время до истечения срока действия. 6. Функция затем использует это значение larg1 для расчета дельты с помощью нормального распределения:

case aTypePaper of
  pFutures: Result := 1;
  pPutOption: Result := NormalDistribution(larg1) - 1;
  pCallOption: Result := NormalDistribution(larg1);
end;

Здесь NormalDistribution - функция из модуля ALGLIB, которая рассчитывает.cumulative distribution function (CDF) нормального распределения. Дельта для контрактов на будущие поставки всегда равна 1, поскольку их цена изменяется напрямую с ценой основного актива. Для опционов put дельта рассчитывается как CDF нормального распределения минус 1. Для опционов call дельта просто равна CDF нормального распределения.

В целом, эта реализация кажется корректной и совпадает с результатами из программы "Опционный аналитик FORTS".

Некоторые предложения по улучшению:

  • Рассмотрите добавление более подробных комментариев для объяснения цели каждого части кода.
  • Вы также можете добавить обработку ошибок для обработки недопустимых значений входных параметров (например, отрицательной волатильности).
  • Если вы планируете использовать эту функцию в производственной среде, рассмотрите оптимизацию ее для производительности, особенно если она будет вызываться часто.

Хорошая работа на реализации этой функции!

В статье описывается алгоритм расчета дельты опциона, разработанный на основе библиотеки ALGLIB, который позволяет получить результат, соответствующий данным программы 'Опционный аналитик FORTS'.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Игры ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-26 16:46:26/0.0035009384155273/0