namespace YLErp.Modules.ScenarioModule { /// /// 情景分析标的参数 /// public class ScenarioUnderlyingModel { /// /// [out]标的品种代码 /// public string VarietyCode { get; set; } /// /// [in]标的代码 /// public string UnderlyingCode { get; set; } /// /// [in]标的价格 /// public double? UnderlyingPrice { get; set; } /// /// [in]分红率 /// public double? DividenRate { get; set; } /// /// 分红率(初始传入) /// internal double? OriDividenRate { get; set; } /// /// [in]波动率 /// public double? ConstVol { get; set; } /// /// 波动率(初始传入) /// internal double? OriVol { get; set; } double? _preVol, _preDividenRate; internal void SetVol(double value) { if (_preVol == null) { ConstVol = _preVol = value; } else if (!double.IsNaN(_preVol.Value) && Math.Abs(_preVol.Value - value) > 1e-6) { ConstVol = null; _preVol = double.NaN; } } internal void SetDividenRate(double value) { if (_preDividenRate == null) { DividenRate = _preDividenRate = value; } else if (!double.IsNaN(_preDividenRate.Value) && Math.Abs(_preDividenRate.Value - value) > 1e-6) { DividenRate = null; _preDividenRate = double.NaN; } } public override string ToString() { return $"{VarietyCode}--{UnderlyingCode}--price:{UnderlyingPrice}--div:{DividenRate}--vol:{ConstVol}"; } public ScenarioUnderlyingModel Clone() { return (ScenarioUnderlyingModel)MemberwiseClone(); } } }