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();
}
}
}