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.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/python/analytics/black.py b/python/analytics/black.py
index f0c786ba..ba9d8e96 100644
--- a/python/analytics/black.py
+++ b/python/analytics/black.py
@@ -1,5 +1,6 @@
from math import log, sqrt, erf
from numba import jit, float64, boolean
+from scipy.stats import norm
import math
def d1(F, K, sigma, T):
@@ -33,3 +34,11 @@ def black(F, K, T, sigma, payer=True):
@jit(float64(float64,float64,float64,float64),cache=True,nopython=True)
def Nx(F, K, sigma, T):
return cnd_erf((log(F/K) - sigma**2 * T /2) / (sigma * sqrt(T))) /2
+
+def bachelier(F, K, T, sigma):
+ """ Bachelier formula for normal dynamics
+
+ need to multiply by discount factor
+ """
+ d1 = (F - K) / ( sigma * sqrt(T))
+ return (0.5 * (F - K) * cnd_erf(d1) + sigma * sqrt(T) * norm.pdf(d1))