Вам понадобится немного настроек.Для удобства, и если вы не столкнетесь с именами, лучше импортировать все:
from QuantLib import *
, затем создайте опцию, которая требует упражнения и выплаты:
exercise = EuropeanExercise(Date(3,August,2011))
payoff = PlainVanillaPayoff(Option.Call, 100.0)
option = EuropeanOption(payoff,exercise)
(обратите внимание, чтовам понадобится дата упражнения, а не время до погашения.)
Теперь, хотите ли вы определить цену или получить ее предполагаемую волатильность, вам придется настроить процесс Блэка-Шоулза.Здесь задействовано немного техники, поскольку вы не можете просто передать значение, скажем, безрисковой ставки: вам понадобится полная кривая, поэтому вы создадите плоскую кривую и завернете ее в ручку.То же самое для дивидендной доходности и объема;базовая стоимость указана в цитате.(Я не объясняю, что это за объекты; прокомментируйте, если вам это нужно.)
S = QuoteHandle(SimpleQuote(100.0))
r = YieldTermStructureHandle(FlatForward(0, TARGET(), 0.03, Actual360()))
q = YieldTermStructureHandle(FlatForward(0, TARGET(), 0.01, Actual360()))
sigma = BlackVolTermStructureHandle(BlackConstantVol(0, TARGET(), 0.20, Actual360()))
process = BlackScholesMertonProcess(S,q,r,sigma)
(волатильность на самом деле не будет использоваться для расчета подразумеваемого объема, но в любом случае он вам нужен).
Теперь, для подразумеваемой волатильности, вы позвоните:
option.impliedVolatility(11.10, process)
и для оценки:
engine = AnalyticEuropeanEngine(process)
option.setPricingEngine(engine)
option.NPV()
Вы можете использовать другие функции (обернуть ставки в цитате так,вы можете изменить их позже и т. д.), но это должно помочь вам начать работу.