Options Calculator

Options Pricing Calculator (Black-Scholes Model)

Calculate the theoretical fair value of European call and put options based on the standard pricing variables.

Call Option Put Option
Estimated Option Price
$0.00
Delta
0.0000
Gamma
0.0000

Understanding Options Pricing

The Options Pricing Calculator utilizes the Black-Scholes Model to determine the theoretical fair market value of an option contract. This mathematical model is the standard for valuing European-style options, which can only be exercised at the expiration date.

Key Variables Explained

  • Underlying Price: The current market price of the stock or asset.
  • Strike Price: The fixed price at which the option holder can buy (Call) or sell (Put) the underlying asset.
  • Volatility (Sigma): A measure of how much the stock price is expected to fluctuate. Higher volatility increases option premiums because there is a higher probability of the price reaching the strike.
  • Time to Expiry: Options are wasting assets. As time passes (theta decay), the value of the option typically decreases, all else being equal.
  • Risk-Free Rate: Usually based on the yield of government bonds (like US Treasury bills), representing the interest rate an investor could earn with zero risk.

Practical Example

Imagine Stock ABC is trading at $100. You are looking at a $105 Call Option expiring in 30 days. If the volatility is 20% and the risk-free rate is 5%, the calculator will process the probability of the stock exceeding $105 within those 30 days to give you a "fair value" (e.g., $0.85). If the market is currently selling that option for $0.50, it might be considered undervalued based on your volatility assumptions.

function normalCDF(x) { var t = 1 / (1 + 0.2316419 * Math.abs(x)); var d = 0.3989423 * Math.exp(-x * x / 2); var probability = d * t * (0.3193815 + t * (-0.3565638 + t * (1.781478 + t * (-1.821256 + t * 1.330274)))); if (x > 0) { return 1 – probability; } else { return probability; } } function calculateOptionPrice() { var S = parseFloat(document.getElementById("stockPrice").value); var K = parseFloat(document.getElementById("strikePrice").value); var T_days = parseFloat(document.getElementById("daysToExpiry").value); var v = parseFloat(document.getElementById("volatility").value) / 100; var r = parseFloat(document.getElementById("riskFreeRate").value) / 100; var type = document.getElementById("optionType").value; if (isNaN(S) || isNaN(K) || isNaN(T_days) || isNaN(v) || isNaN(r) || S <= 0 || K <= 0 || T_days <= 0) { alert("Please enter valid positive numbers for all fields."); return; } // Convert days to years var T = T_days / 365; // Black-Scholes Math var d1 = (Math.log(S / K) + (r + (v * v) / 2) * T) / (v * Math.sqrt(T)); var d2 = d1 – v * Math.sqrt(T); var optionPrice = 0; var delta = 0; var gamma = 0; if (type === "call") { optionPrice = S * normalCDF(d1) – K * Math.exp(-r * T) * normalCDF(d2); delta = normalCDF(d1); } else { optionPrice = K * Math.exp(-r * T) * normalCDF(-d2) – S * normalCDF(-d1); delta = normalCDF(d1) – 1; } // Gamma calculation (same for Call and Put) var phi_d1 = (1 / Math.sqrt(2 * Math.PI)) * Math.exp(-(d1 * d1) / 2); gamma = phi_d1 / (S * v * Math.sqrt(T)); // Display results document.getElementById("optionValue").innerHTML = "$" + optionPrice.toFixed(2); document.getElementById("deltaVal").innerHTML = delta.toFixed(4); document.getElementById("gammaVal").innerHTML = gamma.toFixed(4); document.getElementById("resultsArea").style.display = "block"; // Scroll to results on mobile document.getElementById("resultsArea").scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment