Module mean_variance_hedge.tests.test_black_scholes

Expand source code
import numpy as np
import pytest
from mean_variance_hedge.black_scholes import generate_GBM_paths, BlackScholes, delta, vega, bsinv


def test_single_GBM_path():
        n_samples = 1
        S0 = 100
        T = 30
        r = 0
        sigma = 0.2
        dt = 30 / 250
        seed = 2021

        _, St_1 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)
        _, St_2 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)

        assert np.allclose(St_1, St_2)

def test_multiple_GBM_paths():
        n_samples = 100
        S0 = 100
        T = 30
        r = 0
        sigma = 0.2
        dt = 30 / 250
        seed = 2021

        _, St_1 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)
        _, St_2 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)

        assert np.allclose(St_1, St_2)

def test_bsinv():
        St = 100
        K = 100
        r = 0
        sigma = 0.2
        tau = 30 / 250
        flag = 1

        BS_price = BlackScholes(St, K, r, sigma, tau, flag)
        imp_vol = bsinv(BS_price, St, K, r, tau, flag)
        
        assert np.isclose(imp_vol, sigma)

Functions

def test_bsinv()
Expand source code
def test_bsinv():
        St = 100
        K = 100
        r = 0
        sigma = 0.2
        tau = 30 / 250
        flag = 1

        BS_price = BlackScholes(St, K, r, sigma, tau, flag)
        imp_vol = bsinv(BS_price, St, K, r, tau, flag)
        
        assert np.isclose(imp_vol, sigma)
def test_multiple_GBM_paths()
Expand source code
def test_multiple_GBM_paths():
        n_samples = 100
        S0 = 100
        T = 30
        r = 0
        sigma = 0.2
        dt = 30 / 250
        seed = 2021

        _, St_1 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)
        _, St_2 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)

        assert np.allclose(St_1, St_2)
def test_single_GBM_path()
Expand source code
def test_single_GBM_path():
        n_samples = 1
        S0 = 100
        T = 30
        r = 0
        sigma = 0.2
        dt = 30 / 250
        seed = 2021

        _, St_1 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)
        _, St_2 = generate_GBM_paths(n_samples, S0, T, r, sigma, dt, seed=seed)

        assert np.allclose(St_1, St_2)