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); }
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 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)); }
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)); }
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)); }
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 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); }
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 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); }
public static DateTime Helpers_AdjustDate(DateTime startDate, string dayRule) { DayRule dayRuleEnum = StrToEnum.DayRuleConvert(dayRule); return(DateHandling.AdjustDate(startDate, dayRuleEnum)); }
public static DateTime Helpers_AddTenorAdjust(DateTime date, string Tenor, string dayRule) { DayRule dayRuleEnum = StrToEnum.DayRuleConvert(dayRule); return(DateHandling.AddTenorAdjust(date, Tenor, dayRuleEnum)); }
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)); }