using BaseOUDAL; using System.ComponentModel; using System.Data; namespace YLErp.Model { public class EodPnlGridSum { /// /// /// 名义本金总数 /// public double? NotionalSum { get; set; } /// /// /// 昨日价值总数 /// public double? LastPvSum { get; set; } /// /// /// 总数 /// public double? PvSum { get; set; } public double? SellPvSum { get; set; } public double? RoundedPvSum { get; set; } /// /// /// 当日价值总数 /// public double? DailyPnLSum { get; set; } /// /// /// 当日价值总数 /// public double? RoundedDailyPnLSum { get; set; } /// /// /// 总数 /// public double? PnLPriceSum { get; set; } /// /// /// 总数 /// public double? PnLDeltaSum { get; set; } /// /// /// 总数 /// public double? PnLGammaSum { get; set; } /// /// /// 总数 /// public double? PnLVegaSum { get; set; } /// /// /// 总数 /// public double? PnLThetaSum { get; set; } /// /// /// 总数 /// public double? PnLRhoSum { get; set; } /// /// /// 总数 /// public double? PnLPriceVolCrossSum { get; set; } /// /// /// 总数 /// public double? PnLPriceResidualSum { get; set; } /// /// /// 总数 /// public double? PnLVolSum { get; set; } /// /// /// 总数 /// public double? PnLVolResidualSum { get; set; } /// /// /// 未归因盈亏总数 /// public double? UnexplainedPnLSum { get; set; } /// /// /// 已归因盈亏总数 /// public double? ExplainedPnLSum { get; set; } /// /// /// 名义本金合计 /// public double? OriginalStockEqvNotionalSum { get; set; } public double? StockEqvNotionalSum { get; set; } /// /// 交易总额合计 /// public double? TradePriceSum { get; set; } public double? MarginSum { get; set; } } public class EodPnlReq : BaseSearchReq { /// /// /// public int id { get; set; } /// /// 簿记账户 /// public string BookName { get; set; } /// /// 簿记账户信息 /// public int? BookId { get; set; } /// /// 估值日 /// public DateTime? ValueDate { get; set; } public DateTime ValueDateStart { get; set; } public DateTime ValueDateEnd { get; set; } /// /// 交易信息 /// public int? TradeId { get; set; } /// /// 资产类型(香草期权等) /// public string AssetType { get; set; } /// /// 资产代码 /// public string AssetCode { get; set; } /// /// 持仓类型 /// public string PositionType { get; set; } /// /// 结构类型 /// public string TradeType { get; set; } /// /// 操作人_optid /// public int? OptId { get; set; } /// /// 操作人_optname /// public string OptName { get; set; } /// /// 操作时间_createdate /// public DateTime? OptDate { get; set; } public DateTime OptDateStart { get; set; } public DateTime OptDateEnd { get; set; } public string GroupStr { get; set; } public List TradeTypesList { get { return (TradeTypes + "").Split(',').ToList(); } } public string TradeTypes { get; set; } public double? Strike { get; set; } public DateTime? ExerciseDate { get; set; } public string ExerciseMode { get; set; } public string UnderlyingAssetClass { get; set; } public string UnderlyingCode { get; set; } public List BookIdList { get { if (BookIds == null) { BookIds = ""; } return BookIds.Split(',').Select(c => Convert.ToInt32(c)).ToList(); } } public string BookIds { get; set; } public string TraderIds { get; set; } public List TraderIdList { get { if (TraderIds == null) { TraderIds = ""; } return TraderIds.Split(',').Select(c => Convert.ToInt32(c)).ToList(); } } /// /// 交易编码列表 /// public List TradeNumberList { get; set; } /// /// 簿记账户列表 /// public List BookNameList { get; set; } /// /// 昨日Pv范围开始 /// public double? LastPvStart { get; set; } /// /// 昨日Pv范围结束 /// public double? LastPvEnd { get; set; } /// /// Pv范围开始 /// public double? PvStart { get; set; } /// /// Pv范围结束 /// public double? PvEnd { get; set; } /// /// 当日PnL范围开始 /// public double? DailyPnLStart { get; set; } /// /// 当日PnL范围结束 /// public double? DailyPnLEnd { get; set; } /// /// 已实现PnL范围开始 /// public double? RealizedPnLStart { get; set; } /// /// 已实现PnL范围结束 /// public double? RealizedPnLEnd { get; set; } /// /// 未实现PnL范围开始 /// public double? UnRealizedPnLStart { get; set; } /// /// 未实现PnL范围结束 /// public double? UnRealizedPnLEnd { get; set; } /// /// 实际PnL范围开始 /// public double? ActualPnLStart { get; set; } /// /// 实际PnL范围结束 /// public double? ActualPnLEnd { get; set; } /// /// 估值PnL范围开始 /// public double? EstimatePnLStart { get; set; } /// /// 估值PnL范围结束 /// public double? EstimatePnLEnd { get; set; } /// /// 未归因PnL范围开始 /// public double? UnexplainedPnLStart { get; set; } /// /// 未归因PnL范围结束 /// public double? UnexplainedPnLEnd { get; set; } /// /// 已归因PnL范围开始 /// public double? ExplainedPnLStart { get; set; } /// /// 已归因PnL范围结束 /// public double? ExplainedPnLEnd { get; set; } /// /// 持仓PnL范围开始 /// public double? PositionPnLStart { get; set; } /// /// 持仓PnL范围结束 /// public double? PositionPnLEnd { get; set; } /// /// 总PnL范围开始 /// public double? TotalPnlStart { get; set; } /// /// 总PnL范围结束 /// public double? TotalPnlEnd { get; set; } /// /// 累积总PnL范围开始 /// public double? AccruedTotalPnlStart { get; set; } /// /// 累积总PnL范围结束 /// public double? AccruedTotalPnlEnd { get; set; } /// /// 交易类型 /// public List TradeTypeList { get; set; } /// /// 标的代码列表 /// public List UnderlyingCodeList { get; set; } } public class EodPnlGroup { public int? BookId { get; set; } /// /// 簿记账户 /// [DisplayName("簿记账户")] public string BookName { get; set; } /// /// 簿记账户信息 /// [DisplayName("结构类型")] public string TradeType { get; set; } /// /// 资产类型(香草期权等) /// [DisplayName("标的类型")] public string UnderlyingAssetClass { get; set; } /// /// 簿记账户信息 /// [DisplayName("标的代码")] public string UnderlyingCode { get; set; } public string PositionType { get; set; } /// /// 估值日 /// [DisplayName("ValueDate")] public DateTime ValueDate { get; set; } /// /// 昨日价值 /// [DisplayName("LastPv")] public double? LastPv { get; set; } /// /// /// [DisplayName("Pv")] public double? Pv { get; set; } /// /// 当日价值 /// [DisplayName("DailyPnL")] public double? DailyPnL { get; set; } /// /// /// [DisplayName("PnLPrice")] public double? PnLPrice { get; set; } /// /// /// [DisplayName("PnLDelta")] public double? PnLDelta { get; set; } /// /// /// [DisplayName("PnLGamma")] public double? PnLGamma { get; set; } /// /// /// [DisplayName("PnLVol")] public double? PnLVol { get; set; } /// /// /// [DisplayName("PnLVega")] public double? PnLVega { get; set; } public double? PnLVolResidual { get; set; } /// /// /// //private decimal? _PnLTheta; /// /// /// [DisplayName("PnLTheta")] public double? PnLTheta { get; set; } public double? PnLRho { get; set; } /// /// 未归因盈亏 /// [DisplayName("UnexplainedPnL")] public double? UnexplainedPnL { get; set; } /// /// 估值盈亏 /// [DisplayName("估值盈亏")] public double? EstimatePnL { get; set; } /// /// /// [DisplayName("PnLPriceResidual")] public double? PnLPriceResidual { get; set; } /// /// 已归因盈亏 /// [DisplayName("已归因盈亏")] public double? ExplainedPnL { get; set; } /// /// 操作人_optid /// [DisplayName("操作人")] public int? OptId { get; set; } /// /// 操作人_optname /// [DisplayName("操作人")] public string OptName { get; set; } /// /// 操作时间_createdate /// [DisplayName("操作时间")] public DateTime? OptDate { get; set; } /// /// 交易编号 /// [DisplayName("交易编号")] public string TradeNumber { get; set; } [DisplayName("看涨看跌")] public string OptionType { get; set; } [DisplayName("买卖方向")] public string BuySell { get; set; } [DisplayName("行权价")] public double? Strike { get; set; } /// /// 到期日 /// public DateTime? MaturityDate { get; set; } [DisplayName("份额")] public double Notional { get; set; } [DisplayName("交易员")] public int? TraderId { get; set; } [DisplayName("场内合约号")] public string HedgeUniqueCode { get; set; } /// /// 已实现PnL /// public double? RealizedPnL { get; set; } /// /// 未实现PnL /// public double? UnRealizedPnL { get; set; } /// /// 实际PnL /// public double? ActualPnL { get; set; } /// /// 持仓PnL /// public double? PositionPnL { get; set; } /// /// 总PnL /// public double? TotalPnl { get; set; } /// /// 累积总PnL /// public double? AccruedTotalPnl { get; set; } public EodPnlGroup Clone() { var cloneObj = new EodPnlGroup { BookId = BookId, BookName = BookName, TradeType = TradeType, UnderlyingAssetClass = UnderlyingAssetClass, UnderlyingCode = UnderlyingCode, LastPv = LastPv, Pv = Pv, DailyPnL = DailyPnL, EstimatePnL = EstimatePnL, PnLPrice = PnLPrice, PnLDelta = PnLDelta, PnLGamma = PnLGamma, PnLPriceResidual = PnLPriceResidual, PnLVega = PnLVega, PnLVol = PnLVol, PnLVolResidual = PnLVolResidual, PnLTheta = PnLTheta, PnLRho = PnLRho, UnexplainedPnL = UnexplainedPnL, ExplainedPnL = ExplainedPnL, TradeNumber = TradeNumber, OptionType = OptionType, BuySell = BuySell, Strike = Strike, MaturityDate = MaturityDate, Notional = Notional, TraderId = TraderId }; return cloneObj; } public void Aggregation(EodPnlGroup eodPnlGroup) { LastPv += eodPnlGroup.LastPv ?? 0; Pv += eodPnlGroup.Pv ?? 0; DailyPnL += eodPnlGroup.DailyPnL ?? 0; PnLPriceResidual += eodPnlGroup.PnLPriceResidual ?? 0; EstimatePnL += eodPnlGroup.EstimatePnL ?? 0; PnLPrice += eodPnlGroup.PnLPrice ?? 0; PnLDelta += eodPnlGroup.PnLDelta ?? 0; PnLGamma += eodPnlGroup.PnLGamma ?? 0; PnLVega += eodPnlGroup.PnLVega ?? 0; PnLTheta += eodPnlGroup.PnLTheta ?? 0; PnLRho += eodPnlGroup.PnLRho ?? 0; PnLVol += eodPnlGroup.PnLVol ?? 0; PnLVolResidual += eodPnlGroup.PnLVolResidual ?? 0; UnexplainedPnL += eodPnlGroup.UnexplainedPnL ?? 0; ExplainedPnL += eodPnlGroup.ExplainedPnL ?? 0; Notional += eodPnlGroup.Notional; } } }