Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }