forked from alpmdog/CQF
-
Notifications
You must be signed in to change notification settings - Fork 0
/
digital_spread.py
40 lines (29 loc) · 976 Bytes
/
digital_spread.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
from uvm import *
model = modelparams(0.02, 100, 0.1, 0.3)
digital_call = security('digital call', 110, 1, 1)
call_100 = security('call', 100, 1, -0.05) #-0.05
call_120 = security('call', 120, 1, 0.05)
p = Portfolio()
p.add(digital_call)
p.add(call_100)
p.add(call_120)
fdmSolver = ExplicitFDMSolver(100, model)
fdmSolver.solve(p)
results = fdmSolver.get_results()
bsPricer = BSPricer(model)
hedging_cost = bsPricer.hedging_cost(p, 0.1)
print "hedging cost is %s" % hedging_cost
print get_value_bylevel(results, 100.) - hedging_cost
results.to_csv("dcall3_110.csv")
digital_call = security('digital call', 110, 1, -1)
call_100 = security('call', 100, 1, 0.05)
call_120 = security('call', 120, 1, -0.05)
p = Portfolio()
p.add(digital_call)
p.add(call_100)
p.add(call_120)
fdmSolver = ExplicitFDMSolver(100, model)
fdmSolver.solve(p)
results = fdmSolver.get_results()
hedging_cost = bsPricer.hedging_cost(p, 0.1)
print hedging_cost - get_value_bylevel(results, 100.)