Files
zszq-trs/YLErpDAL/Modules/ScenarioModule/Models/ScenarioCalcResult.cs
T
2024-05-09 14:06:26 +08:00

85 lines
2.4 KiB
C#

using YLErp.Modules.CalculationModule;
namespace YLErp.Modules.ScenarioModule
{
/// <summary>
/// 情景分析计算结果
/// </summary>
public class ScenarioCalcResult
{
public string ConfigName { get; set; }
public IEnumerable<ScenarioCalcResultItem> Trades { get; set; }
public IEnumerable<ScenarioUnderlyingModel> Underlyings { get; set; }
public IEnumerable<ScenarioCalcResultItem> ResultItems { get; set; }
public string xType { get; set; }
public string yType { get; set; }
public IEnumerable<string> xRates { get; set; }
public IEnumerable<string> yRates { get; set; }
}
/// <summary>
/// 情景分析计算结果单项
/// </summary>
public class ScenarioCalcResultItem
{
public int xIndex { get; set; }
public int yIndex { get; set; }
public string UnderlyingCode { get; set; }
public string UnderlyingPrice { get; set; }
public int TradeId { get; set; }
public double ZeroPv { get; set; }
public double Pv { get; set; }
public double Delta { get; set; }
public double Gamma { get; set; }
public double Theta { get; set; }
public double Vega { get; set; }
public double PnL { get; set; }
public double DeltaChg { get; set; }
public double DeltaInLots { get; set; }
public double DeltaCash { get; set; }
public double GammaCash { get; set; }
public void AddValueResult(TradeValueResult valueResult, double contractSize, double zeroPv, double zeroDelta)
{
Pv += NumberHelper.Normalize(valueResult.Pv);
Delta += NumberHelper.Normalize(valueResult.Delta);
Gamma += NumberHelper.Normalize(valueResult.Gamma);
Theta += NumberHelper.Normalize(valueResult.Theta);
Vega += NumberHelper.Normalize(valueResult.Vega);
PnL += NumberHelper.Normalize(valueResult.Pv - zeroPv);
DeltaChg += NumberHelper.Normalize(valueResult.Delta - zeroDelta);
DeltaCash += NumberHelper.Normalize(valueResult.DeltaCash);
GammaCash += NumberHelper.Normalize(valueResult.GammaCash);
ZeroPv += Math.Abs(NumberHelper.Normalize(zeroPv));
DeltaInLots = NumberHelper.Normalize(Delta) / (contractSize < 1 ? 1 : contractSize);
}
}
}