using Qdp.Pricing.Base.Enums; using Qdp.Pricing.Library.Common.Interfaces; using Qdp.Pricing.Library.Options.MonteCarlo; using Qdp.Pricing.Library.Options.Products.RangeAccrual.Engines.Analytical; namespace YLErp.BLL.Calculation.Engine { class RangeAccrualEngineFactory : OptionEngineFactoryBase { public static RangeAccrualEngineFactory Instance { get { if (_instance == null) { _instance = new RangeAccrualEngineFactory(); } return _instance; } } protected RangeAccrualEngineFactory() { } protected static RangeAccrualEngineFactory _instance; public override IEngine GetEngine(string engineName = null, OptionExercise exercise = OptionExercise.European, params object[] additionalParams) { if (engineName?.ToUpper() == "GBMMONTECARLOENGINE") { return new GbmMonteCarloEngine(100000, 1e-3, 1e-6, 1); } else { return new AnalyticalRangeAccrualEngine(); } } } }