コード例 #1
0
        public static string LinearRate_FwdCurve_StoreFromCollection(string baseHandle, string fwdCurveCollectionHandle, string tenor)
        {
            CurveTenor tenorActual = StrToEnum.CurveTenorConvert(tenor);

            LinearRateFunctions.FwdCurve_StoreFromCollection(baseHandle, fwdCurveCollectionHandle, tenorActual);
            return(baseHandle);
        }
コード例 #2
0
        public static string LinearRate_FixedLeg_Make(string baseHandle, DateTime asOf, DateTime startDate, DateTime endDate, double fixedRate,
                                                      string frequency, string dayCount, string dayRule, double notional)
        {
            CurveTenor tenorEnum    = StrToEnum.CurveTenorConvert(frequency);
            DayCount   dayCountEnum = StrToEnum.DayCountConvert(dayCount);
            DayRule    dayRuleEnum  = StrToEnum.DayRuleConvert(dayRule);

            LinearRateFunctions.FixedLeg_Make(baseHandle, asOf, startDate, endDate, fixedRate, tenorEnum, dayCountEnum, dayRuleEnum, notional);
            return(baseHandle);
        }
コード例 #3
0
        public static void CalibrationInstrumentSet_Make(string baseHandle, string[] linearRateProductHandles, string curveTenor)
        {
            CurveTenor tenor = StrToEnum.CurveTenorConvert(curveTenor);
            List <CalibrationInstrument> calibrationInstruments = new List <CalibrationInstrument>();

            for (int i = 0; i < linearRateProductHandles.Length; i++)
            {
                LinearRateInstrument product = ObjectMap.LinearRateInstruments[linearRateProductHandles[i]];
                calibrationInstruments.Add(new CalibrationInstrument(linearRateProductHandles[i], product, tenor));
            }

            ObjectMap.CalibrationInstrumentSets[baseHandle] = calibrationInstruments;
        }
コード例 #4
0
        public static void RiskOutput_StoreFromRiskOutputContainer(string baseHandle, string riskOutputContainerHandle, string tenor)
        {
            CurveTenor tenorEnum = StrToEnum.CurveTenorConvert(tenor);

            if (tenorEnum == CurveTenor.DiscOis)
            {
                ObjectMap.ZcbRiskOutputs[baseHandle] = ObjectMap.ZcbRiskOutputContainers[riskOutputContainerHandle].DiscRisk;
            }
            else
            {
                ObjectMap.ZcbRiskOutputs[baseHandle] = ObjectMap.ZcbRiskOutputContainers[riskOutputContainerHandle].FwdRiskCollection[tenorEnum];
            }
        }
コード例 #5
0
        public static string LinearRate_FwdCurveCollection_Make(string baseHandle, object[] fwdCurveHandles, object[] tenorNames)
        {
            CurveTenor[] tenorEnums          = new CurveTenor[tenorNames.Length];
            var          fwdCurveNamesString = fwdCurveHandles.Cast <string>().ToArray();

            for (int i = 0; i < tenorEnums.Length; i++)
            {
                tenorEnums[i] = StrToEnum.CurveTenorConvert((string)tenorNames[i]);
            }

            string output = LinearRateFunctions.FwdCurveCollection_Make(baseHandle, fwdCurveNamesString, tenorEnums);

            return(output);
        }
コード例 #6
0
        public static string Calibration_FwdCurveCalibrationProblem_Make(string baseHandle, string discCurveHandle, object[] curveCalibHandles, object[] fwdCurveTenors, string calibSpecHandle)
        {
            string[]     problemNamesString = curveCalibHandles.Cast <string>().ToArray();
            string[]     tenorsString       = fwdCurveTenors.Cast <string>().ToArray();
            CurveTenor[] tenorsActual       = new CurveTenor[tenorsString.Length];

            for (int i = 0; i < tenorsString.Length; i++)
            {
                tenorsActual[i] = StrToEnum.CurveTenorConvert(tenorsString[i]);
            }

            CalibrationFunctions.FwdCurveCalibrationProblem_Make(baseHandle, discCurveHandle, problemNamesString, tenorsActual, calibSpecHandle);
            return(baseHandle);
        }
コード例 #7
0
        public static void RiskJacobian_Make(string baseHandle, string linearRateModelHandle, DateTime asOf, string[] calibSetsHandles, string[] curveTenors, bool useAd = false)
        {
            LinearRateModel model    = ObjectMap.LinearRateModels[linearRateModelHandle];
            RiskJacobian    jacobian = new RiskJacobian(model, asOf);

            if (calibSetsHandles.Length != curveTenors.Length)
            {
                throw new InvalidOperationException("CurveTenor and Calibration set handles must have same dimension.");
            }

            for (int i = 0; i < calibSetsHandles.Length; i++)
            {
                jacobian.AddInstruments(ObjectMap.CalibrationInstrumentSets[calibSetsHandles[i]], StrToEnum.CurveTenorConvert(curveTenors[i]));
            }

            // Using this procedure, the instruments are actually sorted.
            jacobian.Initialize();

            if (useAd)
            {
                // Construct using AD
                jacobian.ConstructUsingAD();
            }
            else
            {
                jacobian.ConstructUsingBumpAndRun();
            }

            ObjectMap.RiskJacobians[baseHandle] = jacobian;
        }
コード例 #8
0
        public static object[,] LinearRate_FwdCurve_GetFromCollection(string fwdCurveCollectionHandle, string fwdCurveTenor)
        {
            CurveTenor tenorEnum = StrToEnum.CurveTenorConvert(fwdCurveTenor);

            return(LinearRateFunctions.FwdCurve_GetFromCollection(fwdCurveCollectionHandle, tenorEnum));
        }