Отрицательные цены опционов для определенных входных значений в MATLAB?

В ходе тестирования алгоритма я рассчитал цены опционов для случайных входных значений, используя стандартную функцию оценки blsprice, реализованную в MATLAB Financial Toolbox.

Удивительно,(по крайней мере, для меня),
функция возвращает отрицательные цены опционов для определенных комбинаций входных значений.

В качестве примера возьмем следующее:

> [Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

Call =-7.2942e-15
Put = 100.9502

Если я изменю время до истечения срока действия на 0.79 или 0.81, значение станет неотрицательным, как я и ожидал.

Кто-нибудь из вас когда-нибудь сталкивался с чем-то подобным и может дать краткое объяснение, почему это происходит?


person anw    schedule 18.08.2015    source источник
comment
Этот вопрос может быть более подходящим для Quantitative Finance? Однако, поскольку значение настолько маленькое, я подозреваю, что это просто ошибка с плавающей запятой из-за усечения в какой-то момент во внутренних расчетах. Может быть, стоит округлить до подходящей точности, скажем, до 4 знаков после запятой? Тогда цена Call становится 0.   -  person Dan    schedule 18.08.2015
comment
Также было бы неплохо обратиться в службу поддержки MathWorks, отправив запрос на обслуживание. Это может быть ошибка, или они могут просто не применять граничное условие. Вы также можете просмотреть базовый код (если он не скомпилирован или не pcodeed), чтобы увидеть, что происходит: введите edit blsprice в командном окне.   -  person horchler    schedule 18.08.2015


Ответы (2)


Я не знаю, какую версию Financial Toolbox вы используете, но у меня (TB 2007b) она работает нормально.

Во время работы:

[Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

Я получаю следующее:

Call = 9.3930e-016
Put = 100.9502

что на самом деле положительно

person JejeBelfort    schedule 16.02.2017

Немного поздно, но я сталкивался с такими вещами раньше. Небольшое отрицательное значение может быть связано с числовой ошибкой округления и/или ошибкой усечения в процедуре, используемой для вычисления кумулятивного нормального распределения.

Как вы знаете, компьютеры несовершенны, и небольшие числовые ошибки всегда сохраняются во всех расчетах, поэтому, на мой взгляд, вместо этого следует задать вопрос: какова точность используемых входных параметров и, следовательно, какова допустимая погрешность для выходных данных.

То, как я думал об этом, когда столкнулся с этим раньше, заключалось в том, что в финансах типичная годовая дисперсия доходности акций составляет порядка 30%, что означает, что средняя доходность обычно выбирается со стандартной ошибкой примерно 30% / sqrt (N) что примерно порядка +/- 1%, если предположить, что данные за 2 года (таким образом, N = 260 x 2 = 520, если у вас больше данных, у вас есть другая проблема предположения о стационарности). Поэтому на этом основании ответ, который вы получили выше, мог быть истолкован как ноль с учетом допустимой ошибки.

Кроме того, мы обычно работаем с точностью до пенни / цента, и опять же на этом основании ваш ответ может быть истолкован как ноль.

Просто подумал, что я бы дал 2c надежду, что это будет полезно в некотором роде, если вы все еще проверяете ответы!

person Jimmy    schedule 01.02.2016
comment
Действительно рад, что вы сделали шаг, + прекрасный взгляд на слабость предположений моделей (стационарность) и необходимый масштаб наблюдений, чтобы продемонстрировать характер неслучайного процесса распределения остатков. Почти все финтех-модели ошибочны в этом смысле — они используют голую математику, оторванную от реальности дискретной природы предметной области (если только не используют принципиально дискретизированные снизу вверх (квантовые ступенчатые) значения и вычислительные инструменты, которые полностью соблюдают такой принципиальный разрыв значений и продолжают шагать внутри (даже в градиентах и ​​т. д.)). Очень весело! - person user3666197; 16.02.2017