Files
zszq-trs/YLErpDAL/Modules/CalculationModule/OptionValueCalcRequest.cs
2024-05-09 14:06:26 +08:00

154 lines
4.0 KiB
C#

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