Пример #1
0
        public static string LinearRate_LinearRateModel_Make(string baseHandle, string fwdCurveCollectionHandle, string discCurveHandle, string interpolation)
        {
            InterpMethod interpMethod = StrToEnum.InterpolationConvert(interpolation);

            LinearRateFunctions.LinearRateModel_Make(baseHandle, fwdCurveCollectionHandle, discCurveHandle, interpMethod);
            return(baseHandle);
        }
Пример #2
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);
        }
Пример #3
0
        public static double LinearRate_Curve_GetValue(string baseHandle, DateTime asOf, DateTime date, string dayCountStr, string interpolationStr)
        {
            InterpMethod interpolation = StrToEnum.InterpolationConvert(interpolationStr);
            DayCount     dayCount      = StrToEnum.DayCountConvert(dayCountStr);

            return(LinearRateFunctions.Curve_GetDiscFactor(baseHandle, asOf, date, dayCount, interpolation));
        }
Пример #4
0
        public static double LinearRate_Curve_GetValue(string baseHandle, double date, string interpolationMethod)
        {
            DateTime     dateTime      = DateTime.FromOADate(date);
            InterpMethod interpolation = StrToEnum.InterpolationConvert(interpolationMethod);

            return(LinearRateFunctions.Curve_GetValue(baseHandle, dateTime, interpolation));
        }
Пример #5
0
        public static double LinearRate_Curve_GetFwdRate(string curveHandle, DateTime asOf, DateTime startDate, string tenorStr, string dayCountStr, string dayRuleStr, string interpolationStr)
        {
            CurveTenor   tenor         = StrToEnum.CurveTenorFromSimpleTenor(tenorStr);
            InterpMethod interpolation = StrToEnum.InterpolationConvert(interpolationStr);
            DayCount     dayCount      = StrToEnum.DayCountConvert(dayCountStr);
            DayRule      dayRule       = StrToEnum.DayRuleConvert(dayRuleStr);

            return(LinearRateFunctions.Curve_GetFwdRate(curveHandle, asOf, startDate, tenor, dayCount, dayRule, interpolation));
        }
Пример #6
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);
        }
Пример #7
0
        public static string LinearRate_OisSwap_Make(string baseHandle, DateTime asOf, string startTenor, string endTenor, string settlementLag, string dayCountFixedStr,
                                                     string dayCountFloatStr, string dayRuleStr, double notional, double fixedRate, int tradeSign)
        {
            DayCount dayCountFloat = StrToEnum.DayCountConvert(dayCountFloatStr);
            DayCount dayCountFixed = StrToEnum.DayCountConvert(dayCountFixedStr);
            DayRule  dayRule       = StrToEnum.DayRuleConvert(dayRuleStr);

            LinearRateFunctions.OisSwap_Make(baseHandle, asOf, startTenor, endTenor, settlementLag, dayCountFixed, dayCountFloat, dayRule, notional, fixedRate, tradeSign);
            return(baseHandle);
        }
Пример #8
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;
        }
Пример #9
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];
            }
        }
Пример #10
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);
        }
Пример #11
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);
        }
Пример #12
0
        public static string Calibration_CalibrationSettings_Make(string baseHandle, double precision, double scaling, double diffStep, string interpolation, int maxIterations, double startingValues, int bfgs_m, bool useAd, bool inheritDiscSize, double stepSizeOfInheritance, object[] calibrationOrder = null)
        {
            InterpMethod interp = StrToEnum.InterpolationConvert(interpolation);

            if (calibrationOrder[0] is ExcelMissing)
            {
                calibrationOrder = null;
                CalibrationFunctions.CalibrationSpec_Make(baseHandle, precision, scaling, diffStep, interp, maxIterations, startingValues, bfgs_m, useAd, inheritDiscSize, stepSizeOfInheritance);
            }
            else
            {
                // Need to do this, since object[] cannot be cast to int[]...
                int[] intCalibrationOrder = new int[calibrationOrder.Length];
                for (int i = 0; i < calibrationOrder.Length; i++)
                {
                    intCalibrationOrder[i] = Convert.ToInt32(calibrationOrder[i]);
                }

                CalibrationFunctions.CalibrationSpec_Make(baseHandle, precision, scaling, diffStep, interp, maxIterations, startingValues, bfgs_m, useAd, inheritDiscSize, stepSizeOfInheritance, intCalibrationOrder);
            }

            return(baseHandle);
        }
Пример #13
0
        public static DateTime Helpers_AdjustDate(DateTime startDate, string dayRule)
        {
            DayRule dayRuleEnum = StrToEnum.DayRuleConvert(dayRule);

            return(DateHandling.AdjustDate(startDate, dayRuleEnum));
        }
Пример #14
0
        public static DateTime Helpers_AddTenorAdjust(DateTime date, string Tenor, string dayRule)
        {
            DayRule dayRuleEnum = StrToEnum.DayRuleConvert(dayRule);

            return(DateHandling.AddTenorAdjust(date, Tenor, dayRuleEnum));
        }
Пример #15
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;
        }
Пример #16
0
        public static object[,] LinearRate_FwdCurve_GetFromCollection(string fwdCurveCollectionHandle, string fwdCurveTenor)
        {
            CurveTenor tenorEnum = StrToEnum.CurveTenorConvert(fwdCurveTenor);

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