コード例 #1
0
    public double PutPrice(EuropeanCallPutParams optionParameters)
    {
        double callPrice = CallPrice(optionParameters);

        // put-call parity
        return(callPrice - optionParameters.s0 + optionParameters.strike * Math.Exp(-p.r * optionParameters.T));
    }
コード例 #2
0
    public double CallPrice(EuropeanCallPutParams optionParameters)
    {
        double r   = p.r;                     // Interest rate
        double sig = p.sigma;                 // Volatility
        double K   = optionParameters.strike; // Strike price
        double T   = optionParameters.T;      // Expiry date
        double S   = optionParameters.s0;

        double tmp = sig * Math.Sqrt(T);
        double d1  = (Math.Log(S / K) + (r + 0.5 * sig * sig) * T) / tmp;
        double d2  = d1 - tmp;

        return(S * SpecialFunctions.N(d1) - (K * Math.Exp(-r * T) * SpecialFunctions.N(d2)));
    }