Repository navigation
Expand file tree
/
Copy pathmain.py
More file actions
75 lines (63 loc) · 2.22 KB
/
Copy pathmain.py
File metadata and controls
75 lines (63 loc) · 2.22 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import numpy as np
from matplotlib import pyplot as plt
from models import StochasticVol, LocalVol
from montecarlo import montecarlo_local_vol, montecarlo_stochastic_vol, diffusion_all
def compare_local_vol():
t_range = np.concatenate((np.linspace(0, 0.02, 100 + 1), np.linspace(0.02, 1, 100 + 1)))
out = montecarlo_local_vol(**dict(
n_mc=100000,
ts=t_range,
))
skew_mc = out['atmskew']
ssr_mc = out['atmssr']
plt.figure("SkewTerminal - Local Vol")
plt.plot(t_range, LocalVol().skew_terminal(t=t_range), label='Skew-LocalVol-Formula')
plt.plot(t_range[1:], skew_mc, label='Skew-MC')
plt.legend()
plt.xlabel("Maturity")
plt.ylabel("Skew")
plt.title("Skew - Local Vol")
plt.minorticks_on()
plt.grid(visible=True)
plt.figure("SsrTerminal - Local Vol")
plt.plot(t_range, LocalVol().ssr_terminal(t=t_range), label='SSR-LocalVol-Formula')
plt.plot(t_range[1:], ssr_mc, label='SSR-MC')
plt.legend()
plt.xlabel("Maturity")
plt.ylabel("SkewStickinessRatio")
plt.title("SSR - Local Vol")
plt.minorticks_on()
plt.grid(visible=True)
def compare_stochastic_vol():
t_range = np.concatenate((np.linspace(0, 0.02, 100 + 1), np.linspace(0.02, 1, 100 + 1)))
out = montecarlo_stochastic_vol(**dict(
n_mc=100000,
ts=t_range
))
skew_mc = out['atmskew']
ssr_mc = out['atmssr']
plt.figure("SkewTerminal - Stochastic Vol")
plt.plot(t_range, StochasticVol().skew_terminal(t=t_range), label='Skew-StochasticVol-Formula')
plt.plot(t_range[1:], skew_mc, label='Skew-MC')
plt.legend()
plt.xlabel("Maturity")
plt.ylabel("Skew")
plt.title("Skew - Stochastic Vol")
plt.minorticks_on()
plt.grid(visible=True)
plt.figure("SsrTerminal - Stochastic Vol")
plt.plot(t_range, StochasticVol().ssr_terminal(t=t_range), label='SSR-StochasticVol-Formula')
plt.plot(t_range[1:], ssr_mc, label='SSR-MC')
plt.legend()
plt.xlabel("Maturity")
plt.ylabel("SkewStickinessRatio")
plt.title("SSR - Stochastic Vol")
plt.minorticks_on()
plt.grid(visible=True)
def main():
# compare_local_vol()
# compare_stochastic_vol()
diffusion_all()
plt.show()
if __name__ == '__main__':
main()