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