Skip to main content
Glama
walkingshamrock

Black-Scholes MCP Server

test_black_scholes_vanna.py2.91 kB
import unittest import math from calculators.black_scholes_vanna import calculate_vanna_value from calculators.black_scholes_common import calculate_d1_d2, norm_pdf class TestBlackScholesVanna(unittest.TestCase): def test_calculate_vanna_at_the_money(self): # Test vanna with at-the-money option S, K, T, r, q, vol = 100, 100, 1, 0.05, 0.02, 0.2 d1, d2 = calculate_d1_d2(S, K, T, r, q, vol) # Vanna = -e^(-qt) * N'(d1) * d2 / vol expected_vanna = -math.exp(-q * T) * norm_pdf(d1) * d2 / vol vanna = calculate_vanna_value(S, K, T, r, q, vol) self.assertAlmostEqual(vanna, expected_vanna, places=8) def test_calculate_vanna_in_the_money(self): # Test vanna with in-the-money option S, K, T, r, q, vol = 110, 100, 1, 0.05, 0.02, 0.2 d1, d2 = calculate_d1_d2(S, K, T, r, q, vol) # Vanna = -e^(-qt) * N'(d1) * d2 / vol expected_vanna = -math.exp(-q * T) * norm_pdf(d1) * d2 / vol vanna = calculate_vanna_value(S, K, T, r, q, vol) self.assertAlmostEqual(vanna, expected_vanna, places=8) def test_calculate_vanna_out_of_the_money(self): # Test vanna with out-of-the-money option S, K, T, r, q, vol = 90, 100, 1, 0.05, 0.02, 0.2 d1, d2 = calculate_d1_d2(S, K, T, r, q, vol) # Vanna = -e^(-qt) * N'(d1) * d2 / vol expected_vanna = -math.exp(-q * T) * norm_pdf(d1) * d2 / vol vanna = calculate_vanna_value(S, K, T, r, q, vol) self.assertAlmostEqual(vanna, expected_vanna, places=8) def test_vanna_short_maturity(self): # Test with very short time to maturity S, K, T, r, q, vol = 100, 100, 0.01, 0.05, 0.02, 0.2 d1, d2 = calculate_d1_d2(S, K, T, r, q, vol) # Vanna = -e^(-qt) * N'(d1) * d2 / vol expected_vanna = -math.exp(-q * T) * norm_pdf(d1) * d2 / vol vanna = calculate_vanna_value(S, K, T, r, q, vol) self.assertAlmostEqual(vanna, expected_vanna, places=8) def test_vanna_long_maturity(self): # Test with long time to maturity S, K, T, r, q, vol = 100, 100, 5, 0.05, 0.02, 0.2 d1, d2 = calculate_d1_d2(S, K, T, r, q, vol) # Vanna = -e^(-qt) * N'(d1) * d2 / vol expected_vanna = -math.exp(-q * T) * norm_pdf(d1) * d2 / vol vanna = calculate_vanna_value(S, K, T, r, q, vol) self.assertAlmostEqual(vanna, expected_vanna, places=8) def test_vanna_high_volatility(self): # Test with high volatility S, K, T, r, q, vol = 100, 100, 1, 0.05, 0.02, 0.5 d1, d2 = calculate_d1_d2(S, K, T, r, q, vol) # Vanna = -e^(-qt) * N'(d1) * d2 / vol expected_vanna = -math.exp(-q * T) * norm_pdf(d1) * d2 / vol vanna = calculate_vanna_value(S, K, T, r, q, vol) self.assertAlmostEqual(vanna, expected_vanna, places=8) if __name__ == '__main__': unittest.main()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/walkingshamrock/black-scholes-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server