private static Task <IModel> CalibrateModel(TaskFactory taskFactory, Task <Market> market, Task <ICalibrationDescription> modelCalibDesc) { return(taskFactory.ComputationTaskWithLog("Model calibration", () => { IModelDescription modelDesc = ModelCalibration.Instance.Calibrate(modelCalibDesc.Result, market.Result); return ModelFactory.Instance.Build(modelDesc, market.Result); }, market, modelCalibDesc)); }
public IXmlDataReader BuildFor(IModelDescription model, string uri) { if (model.Type.BaseType != typeof(DataRow)) { _logger.LogWarning($"{model.Type.Name} does not implement {typeof(DataRow).Name}"); } return(new XmlDataReader(uri, model.DataSetType.Name)); }
public IModel Build(IModelDescription modelDescription, Market market) { IModelFactory modelfactory; if (factories.TryGetValue(modelDescription.GetType(), out modelfactory)) { return(modelfactory.Build(modelDescription, market)); } throw new ArgumentException(string.Format("Missing Model Factory for {0}", modelDescription)); }
public static object Bergomi2FAtmfSkewApprox(object mktObj, object[,] modelBag, object[] maturities) { return(FunctionRunnerUtils.Run("Bergomi2FAtmfSkewApprox", () => { Market market = MarketManager.Instance.GetMarket(mktObj); ICalibrationDescription b2FCalibDesc = Bergomi2FModelFactoryFromBag.Instance.Build(modelBag); IModelDescription b2FDesc = ModelCalibration.Instance.Calibrate(b2FCalibDesc, market); var b2Fmodel = (Bergomi2FModel)ModelFactory.Instance.Build(b2FDesc, market); var mats = b2Fmodel.Time[ObjectConverters.ConvertDateArray(maturities, market.RefDate)]; var skews = Bergomi2FUtils.AtmfSkewApprox(b2Fmodel, mats); return skews.AsColumn(); })); }
public static object Bergomi2FVolOfVol(object mktObj, object[,] modelBag, object[] starts, object[] ends) { return(FunctionRunnerUtils.Run("Bergomi2FVolOfVol", () => { Market market = MarketManager.Instance.GetMarket(mktObj); ICalibrationDescription b2FCalibDesc = Bergomi2FModelFactoryFromBag.Instance.Build(modelBag); IModelDescription b2FDesc = ModelCalibration.Instance.Calibrate(b2FCalibDesc, market); var b2Fmodel = (Bergomi2FModel)ModelFactory.Instance.Build(b2FDesc, market); var startDates = b2Fmodel.Time[ObjectConverters.ConvertDateArray(starts, market.RefDate)]; var endDates = b2Fmodel.Time[ObjectConverters.ConvertDateArray(ends, market.RefDate)]; if (startDates.Length != endDates.Length) { throw new ArgumentException("Incompatible size between starts and ends"); } return Bergomi2FUtils.FwdVolInstantVol(b2Fmodel, startDates, endDates).AsColumn(); })); }
public FiasDbContext BuildFor(IModelDescription modelDescription) { return(new FiasDbContext(_settings, new[] { modelDescription })); }