38 lines
1.1 KiB
C#
38 lines
1.1 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|