642 lines
16 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|