Files
zszq-trs/YLErpDAL/Model/EodPnl.cs
T
2024-05-09 14:06:26 +08:00

642 lines
16 KiB
C#

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