Posted by
piers august on
Dec 07, 2009; 8:37pm
URL: http://quantlib.414.s1.nabble.com/SABRInterpolation-excel-vs-linux-differences-tp5686.html
Hi All
I'm getting significant differences (about 0.2 vol in some places) between the
SABR interpolation in excel and linux for release 0.9.7.
For the same input data below, I'm finding alpha, rho and nu have
small differences giving about a 0.2% difference between the interpolated
curves at the money and elsewhere. Beta is fixed at 1. They should be
bang on identical right?
I'm probably doing something wrong - could anyone make any suggestions
as where to go from here to nail it?
The windows computer is a 64bit athlon and the linux is 64 bit intel btw.
cheers,
Piers
|
ql version |
0.9.7 |
|
|
|
|
=qlSABRInterpolation(,G11:G25,H11:H25,C9,D9,,1,,,,TRUE) |
|
|
|
|
obj_00000#0300 |
|
|
|
|
|
|
|
|
sabr |
excel outputted params |
linux outputted params |
|
|
alpha |
0.207442 |
alpha=0.205598 |
|
|
beta |
1.000 |
beta=1 |
|
|
rho |
-0.389061 |
rho=-0.394466 |
|
|
nu |
4.0176907 |
nu=4.16071 |
|
|
tau |
0.0305936 |
tau=0.0305936 |
|
|
fwd |
3826.25 |
forward=3826.25 |
|
|
|
|
|
|
input strikes |
input vols |
sabr excel |
sabr linux |
linux sabr – excel sabr |
3400 |
0.368624622242282 |
0.354604292668933 |
0.359178 |
0.46% |
3500 |
0.321037653604485 |
0.318275231545040 |
0.321538 |
0.33% |
3550 |
0.299501682381891 |
0.300303657851484 |
0.302877 |
0.26% |
3600 |
0.279643985001476 |
0.282569848982833 |
0.284426 |
0.19% |
3650 |
0.261615469316373 |
0.265235824583730 |
0.266342 |
0.11% |
3700 |
0.245580215704548 |
0.248582585887819 |
0.248912 |
0.03% |
3750 |
0.231712426785790 |
0.233087499691996 |
0.232633 |
-0.05% |
3800 |
0.220204595933114 |
0.219519711494862 |
0.218336 |
-0.12% |
3850 |
0.211257342746155 |
0.208967123228945 |
0.207239 |
-0.17% |
3900 |
0.205096538218055 |
0.202578259521284 |
0.200651 |
-0.19% |
3950 |
0.201943526100016 |
0.200931625388894 |
0.199217 |
-0.17% |
4000 |
0.202049566014993 |
0.203604828891783 |
0.202397 |
-0.12% |
4050 |
0.205673850628091 |
0.209520147602468 |
0.208939 |
-0.06% |
4100 |
0.213089315877449 |
0.217573188533236 |
0.217628 |
0.01% |
4200 |
0.240440352051281 |
0.237060304926802 |
0.238270 |
0.12% |
#include <ql/quantlib.hpp>
#include <iostream>
#include <vector>
using namespace QuantLib;
using namespace std;
int main(int argc, char *argv[])
{
Real forward = 3826.25;
Time tau = 0.0305936;
vector<double> strikes;
vector<double> vols;
strikes.push_back(3400); vols.push_back(0.368624622242282);
strikes.push_back(3500); vols.push_back(0.321037653604485);
strikes.push_back(3550); vols.push_back(0.299501682381891);
strikes.push_back(3600); vols.push_back(0.279643985001476);
strikes.push_back(3650); vols.push_back(0.261615469316373);
strikes.push_back(3700); vols.push_back(0.245580215704548);
strikes.push_back(3750); vols.push_back(0.231712426785790);
strikes.push_back(3800); vols.push_back(0.220204595933114);
strikes.push_back(3850); vols.push_back(0.211257342746155);
strikes.push_back(3900); vols.push_back(0.205096538218055);
strikes.push_back(3950); vols.push_back(0.201943526100016);
strikes.push_back(4000); vols.push_back(0.202049566014993);
strikes.push_back(4050); vols.push_back(0.205673850628091);
strikes.push_back(4100); vols.push_back(0.213089315877449);
strikes.push_back(4200); vols.push_back(0.240440352051281);
SABRInterpolation sabr( strikes.begin(),
strikes.end(),
vols.begin(),
tau,
forward,
Null<Real>(),
1,
Null<Real>(),
Null<Real>(),
false,
true,
false,
false ) ;
sabr.update();
cout << "forward=" <<sabr.forward() << endl;
cout << "expiry=" << sabr.expiry() << endl;
cout << "alpha=" << sabr.alpha() << endl;
cout << "beta=" << sabr.beta() << endl;
cout << "nu=" << sabr.nu() << endl;
cout << "rho=" << sabr.rho() << endl;
cout << "rmsError=" << sabr.rmsError() << endl;
cout << "atmVol=" << sabr(forward) << endl;
cout << "endCriteria=" << sabr.endCriteria() << endl;
for( unsigned int i = 0; i < strikes.size(); ++i )
cout << strikes[i] << " " << vols[i] << " " << sabr( strikes[i] ) << endl;
return 0;
}
New! Receive and respond to mail from other email accounts from within Hotmail
Find out how.
------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing.
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users