Posted by
Niels Nygaard on
URL: http://quantlib.414.s1.nabble.com/no-subject-tp718.html
I seem to get different results when using the C++ version from what I get
when I use the C# version of QL. Here is my C# code:
namespace QuantLibOptionPricer
{
class Program
{
static void Main(string[] args)
{
double underlying = 36;
double strike = 40;
double dividendYield = 0.0;
double riskFreeRate = .06;
double volatility=0.2;
Option.Type type = Option.Type.Put;
Date todaysDate = new Date(27, Month.March, 2007);
Date settlementDate = new Date(27, Month.March, 2007);
Settings.instance().setEvaluationDate(todaysDate);
Date maturity = new Date(17, Month.May, 2007);
DayCounter dayCounter = new Actual365Fixed();
Console.WriteLine("Option Type = {0}", type);
Console.WriteLine("Maturity = {0}",maturity.__str__());
Console.WriteLine("Underlying price = {0}", underlying);
Console.WriteLine("Strike = {0}", strike);
Console.WriteLine("Dividend Yield = {0}", dividendYield);
Console.WriteLine("Riskfree Rate = {0}", riskFreeRate);
Console.WriteLine("Volatility = {0}", volatility);
EuropeanExercise euroEx = new EuropeanExercise(maturity);
AmericanExercise ameriEx = new
AmericanExercise(settlementDate, maturity);
QuoteHandle underlyingH = new QuoteHandle(new
SimpleQuote(strike));
YieldTermStructureHandle flatTermStructure = new
YieldTermStructureHandle( new FlatForward(settlementDate,
riskFreeRate,dayCounter));
YieldTermStructureHandle flatDividendTS = new
YieldTermStructureHandle( new FlatForward(settlementDate,
dividendYield,dayCounter));
BlackVolTermStructureHandle flatVolTS = new
BlackVolTermStructureHandle(new
BlackConstantVol(settlementDate, volatility, dayCounter));
PlainVanillaPayoff payoff = new
PlainVanillaPayoff(type,underlying );
BlackScholesProcess stochasticProcess=new
BlackScholesProcess(underlyingH,flatTermStructure,flatVolTS);
//Option
VanillaOption euroOption=new
VanillaOption(stochasticProcess,payoff,euroEx);
string method="Black-Scholes";
euroOption.setPricingEngine(new
AnalyticDividendEuropeanEngine());
Console.WriteLine("The price of the European Option using {0}
is: {1}", method,euroOption.NPV());
method = "CRRTree";
uint timeSteps=1000;
euroOption.setPricingEngine(new BinomialVanillaEngine("CRR",
timeSteps));
Console.WriteLine("The price of the European Option using {0}
is: {1}", method, euroOption.NPV());
}
}
}
This gives a price of 4.37. The C++ version givew 3.79 which is the
correct value. Any ideas of what may be wrong
Niels Nygaard
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users