forked from domokane/FinancePy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_FinEquityCliquetOption.py
40 lines (32 loc) · 1.5 KB
/
test_FinEquityCliquetOption.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
###############################################################################
# Copyright (C) 2018, 2019, 2020 Dominic O'Kane
###############################################################################
from financepy.utils.global_types import OptionTypes
from financepy.utils.date import Date
from financepy.utils.frequency import FrequencyTypes
from financepy.market.curves.discount_curve_flat import DiscountCurveFlat
from financepy.models.black_scholes import BlackScholes
from financepy.products.equity.equity_cliquet_option import EquityCliquetOption
def test_EquityCliquetOption():
start_date = Date(1, 1, 2014)
final_expiry_date = Date(1, 1, 2017)
freq_type = FrequencyTypes.QUARTERLY
option_type = OptionTypes.EUROPEAN_CALL
cliquetOption = EquityCliquetOption(start_date,
final_expiry_date,
option_type,
freq_type)
valuation_date = Date(1, 1, 2015)
stock_price = 100.0
volatility = 0.20
interest_rate = 0.05
dividend_yield = 0.02
model = BlackScholes(volatility)
discount_curve = DiscountCurveFlat(valuation_date, interest_rate)
dividend_curve = DiscountCurveFlat(valuation_date, dividend_yield)
v = cliquetOption.value(valuation_date,
stock_price,
discount_curve,
dividend_curve,
model)
assert round(v, 4) == 34.5287