using YLErp.Modules.CalculationModule;
namespace YLErp.Modules.ScenarioModule
{
///
/// 情景分析计算结果
///
public class ScenarioCalcResult
{
public string ConfigName { get; set; }
public IEnumerable Trades { get; set; }
public IEnumerable Underlyings { get; set; }
public IEnumerable ResultItems { get; set; }
public string xType { get; set; }
public string yType { get; set; }
public IEnumerable xRates { get; set; }
public IEnumerable yRates { get; set; }
}
///
/// 情景分析计算结果单项
///
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);
}
}
}