aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/black.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/black.py')
-rw-r--r--python/analytics/black.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/python/analytics/black.py b/python/analytics/black.py
new file mode 100644
index 00000000..647c92b2
--- /dev/null
+++ b/python/analytics/black.py
@@ -0,0 +1,15 @@
+import numpy as np
+from scipy.stats import norm
+
+def d1(F, K, sigma, T):
+ return (np.log(F / K) + sigma**2 * T / 2) / (sigma * np.sqrt(T))
+
+def d2(F, K, sigma, T):
+ return d1(F, K, sigma, T) - sigma * np.sqrt(T)
+
+def black(F, K, T, sigma, option_type = "payer"):
+ chi = 1 if option_type == "payer" else -1
+ if option_type == "payer":
+ return F * norm.cdf(d1(F, K, sigma, T)) - K * norm.cdf(d2(F, K, sigma, T))
+ else:
+ return K * norm.cdf(- d2(F, K, sigma, T)) - F * norm.cdf(- d1(F, K, sigma, T))