- S: 標的現貨價格 Spot
- K: Strike 選擇權履約價 Strike
- Vol: 標的波動率 Volatility
- r: 無風險利率 Risk-free Rate
- T: 到期時間 Time to Maturity
Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
然後建立一個 Wrapper 函數 N:
private double N(double z)
{
return excel.WorksheetFunction.NormSDist(z);
}
這樣就可以直接在 C# 的程式裡呼叫 N(z) 這個函數. 以下是示範的 Black-Scholes 選擇權評價方法:
private void BlackScholesVanillaOption(double S, double K, double Vol, double r, double T, out double call, out double put)
{
double d1 = (Math.Log(S / K) + (r + Vol * Vol) * T) / Vol / Math.Sqrt(T);
double d2 = d1 - Vol * Math.Sqrt(T);
call = S * N(d1) - K * Math.Exp(-r * T) * N(d2);
put = K * Math.Exp(-r * T) * N(-d2) - S * N(-d1);
}