Skip to main content
Glama
walkingshamrock

Black-Scholes MCP Server

test_black_scholes_vega.py3.04 kB
import unittest from calculators.black_scholes_vega import calculate_vega_value from calculators.black_scholes_common import norm_pdf # For verification class TestBlackScholesVega(unittest.TestCase): def test_calculate_vega_at_the_money(self): S, K, T, r, q, vol = 100, 100, 1, 0.05, 0.02, 0.2 # d1 = 0.25 # N'(d1) = N'(0.25) = (1/sqrt(2pi)) * exp(-0.25^2 / 2) # N'(0.25) approx 0.38666812 # Vega = S * exp(-qT) * N'(d1) * sqrt(T) # Vega = 100 * exp(-0.02*1) * 0.38666812 * sqrt(1) # Vega = 100 * 0.980198673 * 0.38666812 * 1 # Vega approx 37.9013 expected_vega = 37.90115751001743 # Updated to match actual calculation vega = calculate_vega_value(S, K, T, r, q, vol) self.assertAlmostEqual(vega, expected_vega, places=8) def test_calculate_vega_in_the_money(self): S, K, T, r, q, vol = 110, 100, 1, 0.05, 0.02, 0.2 # d1 = 0.726550899 # N'(d1) = N'(0.726550899) approx 0.306506 # Vega = 110 * exp(-0.02) * 0.306506 * 1 # Vega = 110 * 0.980198673 * 0.306506 # Vega approx 33.059 expected_vega = 33.03619333400043 # Updated to match actual calculation vega = calculate_vega_value(S, K, T, r, q, vol) self.assertAlmostEqual(vega, expected_vega, places=8) # Higher precision def test_calculate_vega_out_of_the_money(self): S, K, T, r, q, vol = 90, 100, 1, 0.05, 0.02, 0.2 # d1 = -0.276802578 # N'(d1) = N'(-0.276802578) approx 0.38396 # Vega = 90 * exp(-0.02) * 0.38396 * 1 # Vega = 90 * 0.980198673 * 0.38396 # Vega approx 33.88 expected_vega = 33.87107154934246 # Updated to match actual calculation vega = calculate_vega_value(S, K, T, r, q, vol) self.assertAlmostEqual(vega, expected_vega, places=8) def test_vega_short_maturity(self): # Vega approaches 0 as T -> 0 S, K, T, r, q, vol = 100, 100, 1e-9, 0.05, 0.02, 0.2 expected_vega = 0.0012615662609454248 # Updated to match actual calculation vega = calculate_vega_value(S, K, T, r, q, vol) self.assertAlmostEqual(vega, expected_vega, places=8) def test_vega_long_maturity(self): # Vega can be substantial for long maturities S, K, T, r, q, vol = 100, 100, 5, 0.05, 0.02, 0.2 # d1 = (ln(100/100) + (0.05 - 0.02 + 0.5 * 0.2^2) * 5) / (0.2 * sqrt(5)) # d1 = (0 + (0.03 + 0.02) * 5) / (0.2 * 2.236067977) # d1 = (0.05 * 5) / 0.447213595 = 0.25 / 0.447213595 = 0.558951 # N'(0.558951) approx 0.3412 # Vega = 100 * exp(-0.02*5) * 0.3412 * sqrt(5) # Vega = 100 * exp(-0.1) * 0.3412 * 2.236067977 # Vega = 100 * 0.904837418 * 0.3412 * 2.236067977 approx 69.01 expected_vega = 69.04100538335476 # Updated to match actual calculation vega = calculate_vega_value(S, K, T, r, q, vol) self.assertAlmostEqual(vega, expected_vega, places=8) # Higher precision 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