Решение для неизвестных в уравнении Блэка-Шоулза с использованием Python - PullRequest
0 голосов
/ 11 ноября 2019

Я определил уравнение Блэка-Шоулза в Python следующим образом:

import numpy as np
import scipy.stats as si

def black_scholes(S, K, T, r, sigma, ratio):

    d1 = (np.log(S / K) + (r + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
    d2 = (np.log(S / K) + (r - 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))

    result = (S * si.norm.cdf(d1, 0.0, 1.0) - K * np.exp(-r * T) * si.norm.cdf(d2, 0.0, 1.0)) * ratio


    return result

В то же время у меня есть фрейм данных, который содержит «наблюдаемые» цены опционов на рынке, такие как:

S = [230, 231, 232, 233, 234, 235]
results = [0.21, 0.22, 0.23, 0.24, 0.25, 0.25]
df = pd.to_DataFrame(list(zip(S, results))

Устанавливая известные переменные как S = 230, K = 248, T = 82/365 and ratio = 0.02, я надеюсь использовать функцию black_scholes для поиска значений переменных r и sigma, которые будут выводить результаты, видимые в df(округлено до 2 знаков после запятой).

Обратите внимание, что df имеет больше точек в действительности, чтобы обеспечить более точное решение. Любая помощь очень ценится. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...