85 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|