public void GetSABRParameterTest() { Swaption target = Swaption.Instance(); target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); target.SABRCalibrateModel(_engineHandle, _settingsHandle, _volatilityData, _assetData, _optionExpiry); // Test alpha Swaption.CalibrationParameter param = Swaption.CalibrationParameter.Alpha; // used to be this, but not any more for some reason... //expected = 0.0854282092142854m; decimal expected = 0.0774577237728713m;//0.0774816286100299m decimal actual = target.GetSABRParameter(param, _engineHandle, _expiry, _tenor); Assert.AreEqual(expected, actual); // Test beta param = Swaption.CalibrationParameter.Beta; expected = 0.95m; actual = target.GetSABRParameter(param, _engineHandle, _expiry, _tenor); Assert.AreEqual(expected, actual); // Test nu param = Swaption.CalibrationParameter.Nu; // used to be this, but not any more for some reason... //expected = 0.3174771160265069427371566533m; expected = 0.7427956690310760080682235855m;//0.7397330508021633986595538765m; actual = target.GetSABRParameter(param, _engineHandle, _expiry, _tenor); Assert.AreEqual(expected, actual); // Test rho param = Swaption.CalibrationParameter.Rho; // used to be this, but not any more for some reason... //expected = -0.116352678779442m; expected = -0.140204549654502m;// -0.13311810502423m actual = target.GetSABRParameter(param, _engineHandle, _expiry, _tenor); Assert.AreEqual(expected, actual); }
public void SABRAddCalibrationSettingsTest() { Swaption target = Swaption.Instance(); // TODO: Initialize to an appropriate value string expected = _settingsHandle; string actual = target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); Assert.AreEqual(expected, actual); }
public void IsModelCalibratedTest() { Swaption target = Swaption.Instance(); target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); target.SABRCalibrateModel(_engineHandle, _settingsHandle, _volatilityData, _assetData, _optionExpiry); bool actual = target.IsModelCalibrated(_engineHandle, _optionExpiry, _tenor); Assert.AreEqual(true, actual); }
public void CalibrationErrorTest() { Swaption target = Swaption.Instance(); target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); target.SABRCalibrateModel(_engineHandle, _settingsHandle, _volatilityData, _assetData, _optionExpiry); // used to be this number, not any more for some reason... //double expected = 0.00000122592559259722; double expected = 0.00001; double actual = (double)target.CalibrationError(_engineHandle, _expiry, _tenor); Assert.AreEqual(expected, actual, expected); }
public void SABRInterpolateVolatilityTest() { Swaption target = Swaption.Instance(); target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); target.SABRCalibrateModel(_engineHandle, _settingsHandle, _volatilityData, _assetData, _optionExpiry); // Used to be this, not any more for some reason... //decimal expected = 0.1003227242714797260490536807m; double expected = 0.10; decimal actual = target.SABRInterpolateVolatility(_engineHandle, _exerciseTime, _assetCode, _strike); Assert.AreEqual(expected, (double)actual, 0.01); }
public void SABRCalibrateATMModelTest() { Swaption target = Swaption.Instance(); string expected = _atmEngineHandle; target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); string actual = target.SABRCalibrateATMModel(_atmEngineHandle, _settingsHandle, _nu, _rho, _atmVolatility, _assetPrice, _exerciseTime, _assetCode); Assert.AreEqual(expected, actual); // Test the IsCalibrated status - true if the Function succeeded // Use default expiry/tenor pair bool testStatus = target.IsModelCalibrated(_atmEngineHandle, _optionExpiry, _tenor); Assert.AreEqual(true, testStatus); }
public void SABRCalibrateModelTest() { Swaption target = Swaption.Instance(); target.SabrAddCalibrationSetting(_settingsHandle, _instrument, _ccy, _beta); string actual = target.SABRCalibrateModel(_engineHandle, _settingsHandle, _volatilityData, _assetData, _optionExpiry); string expected = _engineHandle; Assert.AreEqual(expected, actual); // Test the IsCalibrated status - true if the Function succeeded // Use default expiry/tenor pair bool testStatus = target.IsModelCalibrated(_engineHandle, _optionExpiry, _tenor); Assert.AreEqual(true, testStatus); // Test a non-existent expiry/tenor pair testStatus = target.IsModelCalibrated(_engineHandle, "4yr", "3"); Assert.AreEqual(false, testStatus); }