using Qdp.Foundation.Implementations; using Qdp.Pricing.Base.Implementations; using YLErp.Enums; namespace YLErp.Modules.CalculationModule { /// /// /// public class OptionValueRequestBase { public OptionValueRequestBase(double sysRiskFreeRate) { this.sysRiskFreeRate = sysRiskFreeRate; } /// /// 系统无风险利率 /// public double sysRiskFreeRate { get; } /// /// 是否商品期货使用精确时间模式 /// public bool preciseTimeMode { get; set; } public bool isEodCalc { get; set; } = false; /// /// 到期日偏移量 /// public int maturityShift { get; set; } /// /// 覆写OptionTradeParamBase的字段值 /// public Action ParamOverride { get; set; } } /// /// 期权交易构建参数 /// public class OptionTradeParamRequest : OptionValueRequestBase { public OptionTradeParamRequest(double sysRiskFreeRate) : base(sysRiskFreeRate) { } /// /// [可选]交易ID /// public string tradeId { get; set; } /// /// 是否有夜盘交易 /// public bool hasNightMarket { get; set; } /// /// [可选]TTMDays /// public double timeToMaturityDays { get; set; } = double.NaN; /// /// 波动率曲面名称(在market中添加的波动率曲面名称) /// public string[] volSurfaceNames { get; set; } /// /// 用于亚式期权|区间累积 /// public string fixings { get; set; } /// /// dividends /// public Dictionary dividends { get; set; } /// /// 已发生的观察日结算数据 /// 累计期权--计算payoff时使用 /// public List happenedObservations { get; set; } } /// /// 期权计算请求参数 /// public class OptionValueCalcRequest : OptionValueRequestBase { public OptionValueCalcRequest(double sysRiskFreeRate) : base(sysRiskFreeRate) { } /// /// [必需]波动率 /// public double[] vols { get; set; } /// /// [必需]标的现价 /// public double[] spotPrices { get; set; } /// /// 关联性 /// public double[] correlations { get; set; } /// /// 计算枚举 /// public PricingRequest pricingRequest { get; set; } = QdpModule.QdpPricingRequest.BASIC_GREEKS; /// /// 引擎名称 /// public string engineName { get; set; } /// /// 快速模式,默认false /// public bool quadratureFastMode { get; set; } /// /// [非必需]期权计算场景 /// public CalcScenarioEnum calcScenario { get; set; } /// /// 是否计算T+1日的Delta /// public bool calcDeltaT1 { get; set; } /// /// 用于亚式期权|区间累积 /// 如果为null时需要计算时现取 /// public string fixings { get; set; } /// /// TTMDays /// public double? timeToMaturityDays { get; set; } public OptionValueCalcRequest Clone() { return (OptionValueCalcRequest)MemberwiseClone(); } } }