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); }
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); }
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; }
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]; } }
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); }
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); }
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; }
public static object[,] LinearRate_FwdCurve_GetFromCollection(string fwdCurveCollectionHandle, string fwdCurveTenor) { CurveTenor tenorEnum = StrToEnum.CurveTenorConvert(fwdCurveTenor); return(LinearRateFunctions.FwdCurve_GetFromCollection(fwdCurveCollectionHandle, tenorEnum)); }