Files
zszq-trs/YLErpDAL/Model/EodPositionRisks.cs
T
2026-08-20 14:15:12 +08:00

589 lines
14 KiB
C#

using BaseOUDAL;
using YLErp.Commons;
using YLErp.Helpers;
using YLErp.Modules;
namespace YLErp.Model
{
public class EodPositionRisksDTO
{
public int id { get; set; }
public bool? IsUsePremiumRate { get; set; }
public double? PremiumRate { get; set; }
public double? Notional { get; set; }
public double? TradeAmount
{
get
{
return Notional / DataCacheProvider.GetUnderlyingDataSource().GetCountRatio(UnderlyingCode);
}
}
public double UnderlyingPrice { get; set; }
public int UnderlyingId { get; set; }
public int? VarietyId { get; set; }
public string EncryptTradeId
{
get
{
return DataProtectHelper.Encrypt(id);
}
}
public string IsMoneynessOption { get; set; }
/// <summary>
/// 主交易编号
/// </summary>
public string ParentTradeNumber { get; set; }
/// <summary>
/// 确认书编号
/// </summary>
public string ContractCode { get; set; }
public string BuySell { get; set; }
private string _tradeNumber;
/// <summary>
/// 多腿编号
/// </summary>
public string TradeNumber
{
get
{
return _tradeNumber;
}
set
{
if (string.IsNullOrWhiteSpace(value))
{
_tradeNumber = "";
}
else
{
_tradeNumber = value;
}
}
}
public string ChildLeg { get; set; }
public string HedgeUniqueCode { get; set; }
public int ParentTradeId { get; set; }
public string TradeStatus { get; set; }
public DateTime? ExerciseDate { get; set; }
public DateTime? SettlementDate { get; set; }
public int SettlementFlag { get; set; }
public string ExerciseMode { get; set; }
public string TradeType { get; set; }
public string StructureType { get; set; }
public string ClientName { get; set; }
public string ClientNumber { get; set; }
public string AssetBookName { get; set; }
public DateTime? TradeDate { get; set; }
public string OptionType { get; set; }
public string UnderlyingCode { get; set; }
public string UnderlyingAssetName { get; set; }
public string UnderlyingVariety { get; set; }
public double? InitialSpotPrice { get; set; }
/// <summary>
/// 保底收益总额
/// </summary>
public double? OriginalPrincipalSum { get; set; }
public double? Strike { get; set; }
public double? TradeSinglePrice { get; set; }
public double? TradePrice { get; set; }
public double? etcTradePrice { get; set; }
public double? StockEqvNotional { get; set; }
internal double? StockEqvNotionalMax { set; get; }
public double? OriginalStockEqvNotional
{
get
{
return PS.Config.ErpElement.UseStockEqvNotionalMax && StockEqvNotionalMax > 0 ? StockEqvNotionalMax : _originalStockEqvNotional;
}
set
{
_originalStockEqvNotional = value;
}
}
public double? StockEqvNotionalToShow
{
get
{
if (ConsTrade.TradeTypesForHedge.Contains(TradeType))
{
return OtcFormatHelper.FormatValue(StockEqvNotional ?? 0, 2);
}
if (PS.Config.ComponentVersion == Configuration.ComponentVersion.Broker)
{
return OtcFormatHelper.FormatValue(StockEqvNotional ?? 0, 2);
}
return OtcFormatHelper.FormatValue(OriginalStockEqvNotional, 2);
}
}
public double? TradeOriginalAmount { get; set; }
public double? OriginalNotional { get; set; }
public int IsGroup { get; set; }
public double? SinglePV { get; set; }
public double? PV { get; set; }
public double? RoundedPV { get; set; }
public double? PositionPnl { get; set; }
public double? RoundedPositionPnl { get; set; }
public double RealizedPnl { get; set; }
public double dailyPnl { get; set; }
public double? CurrentVolatility { get; set; }
public string ExchangeOptionCode { get; set; }
public double? Delta { get; set; }
public double? DeltaCash { get; set; }
public double? DeltaLots { get; set; }
public double? Gamma { get; set; }
public double? GammaCash { get; set; }
public double? GammaLots { get; set; }
public double? Theta { get; set; }
public double? Rho { get; set; }
public double? Vega { get; set; }
public double? VegaCash { get; set; }
/// <summary>
/// 无风险利率
/// </summary>
public double RiskFreeRate { get; set; }
/// <summary>
/// 分红率
/// </summary>
public double DividendRate { get; set; }
/// <summary>
/// Delta_R
/// </summary>
public double? Delta_r { get; set; }
public double? Delta_r_1bp { get; set; }
public double? Dv01 { get; set; }
public double? Gamma_r { get; set; }
public double? Gamma_r_1bp { get; set; }
public double? Vega_r { get; set; }
public double? Vega_r_1bp { get; set; }
public double? Vega_1bp { get; set; }
/// <summary>
/// 维持预付金
/// </summary>
public double? Margin { get; set; }
/// <summary>
/// 广期想查看
/// </summary>
public double? Spv1 { get; set; }
public double? Spv2 { get; set; }
public double? Spv3 { get; set; }
/// <summary>
/// 敞口
/// </summary>
public double? Exposure { get; set; }
/// <summary>
/// 观察状态
/// </summary>
public string KnockInOutStatus { get; set; }
/// <summary>
/// 交易员
/// </summary>
public string TraderName { get; set; }
/// <summary>
/// 初始预付金
/// </summary>
public double? InitMargin { get; set; }
/// <summary>
/// 持仓初始预付金 = 初始预付金 *持仓数量/开仓数量
/// </summary>
public double? PosiInitMargin { get; set; }
[NonSerialized]
public string TradeJson;
private trade _trade = null;
private double? _originalStockEqvNotional;
public trade trade
{
get
{
if (_trade != null)
{
return _trade.IsDefault() ? trade.Default : _trade;
}
if (!string.IsNullOrEmpty(TradeJson))
{
try
{
_trade = TradeHelper2.Deserialize(TradeJson);
}
catch (Exception e)
{
LogFactory.GetLogger<EodPositionRisksDTO>().Error("EodTrade Trade", e);
}
}
else
{
_trade = trade.Default;
}
return _trade;
}
set
{
_trade = value;
}
}
#region ----二元----
/// <summary>
/// 二元类型
/// </summary>
public string PayoffType { get; set; }
/// <summary>
/// 补偿金额
/// </summary>
public double? CashOrNothingAmount { get; set; }
/// <summary>
/// 补偿金额比率
/// </summary>
public double? CashOrNothingAmountRate { get; set; }
/// <summary>
/// 观察方式
/// </summary>
public string MonitorType { get; set; }
/// <summary>
/// 是否离散观察
/// </summary>
public string IsDiscreteMonitored
{
get
{
if (string.IsNullOrWhiteSpace(MonitorType))
{
return string.Empty;
}
return MonitorType == "离散" ? "是" : "否";
}
}
/// <summary>
/// 补偿方式
/// </summary>
public string RebateType { get; set; }
#endregion
#region ----亚式----
public string StrikeType { get; set; }
/// <summary>
/// 均价起算日
/// </summary>
public DateTime? AveragingPeriodStartDate { get; set; }
public string PayoffType2 { get; set; }
/// <summary>
/// 参与率
/// </summary>
public double? ParticipationRate { get; set; }
/// <summary>
/// 杠杆率
/// </summary>
public double? StrikeGearingFactor { get; set; }
/// <summary>
/// 增强价格
/// </summary>
public double EnhancedPrice { get; set; }
#endregion
#region
public double? ParticipationRate2 { get; set; }
public double? ParticipationRate3 { get; set; }
#endregion
#region ----障碍----
/// <summary>
/// 障碍类型
/// </summary>
public string BarrierType { get; set; }
/// <summary>
/// 观察类型
/// </summary>
public string Discrete { get; set; }
/// <summary>
/// 障碍价格
/// </summary>
public double? BarrierPrice { get; set; }
/// <summary>
/// 高障碍价格
/// </summary>
public double? UpperBarrierPrice { get; set; }
public double? RebateRate { get; set; }
/// <summary>
/// 补偿金额
/// </summary>
public double? Rebate { get; set; }
/// <summary>
/// 高障碍补偿金额
/// </summary>
public double? RebateHigh { get; set; }
/// <summary>
/// 高障碍补偿金额
/// </summary>
public double? RebateHighRate { get; set; }
/// <summary>
/// 障碍偏移
/// </summary>
public double? BarrierShift { get; set; }
public string RebateType3 { get; set; }
#endregion
#region----盈亏分解----
public double? PnLDelta { get; set; }
public double? PnLGamma { get; set; }
public double? PnLVega { get; set; }
public double? PnLTheta { get; set; }
public double? PnLPsi { get; set; }
#endregion
/// <summary>
///
/// </summary>
public int? CountRatio { get; set; }
/// <summary>
/// 存续名义本金
/// </summary>
public double? SurvivingNominalPrincipal { get; internal set; }
public string GroupName { get; set; }
/// <summary>
/// 累计期权 类型(标准,三段式)
/// </summary>
public string AccumulatorStructureTypeStr { get; internal set; }
/// <summary>
/// 累计三段式 risk 执行价格2
/// </summary>
public double? Strike2 { get; internal set; }
/// <summary>
/// 累计三段式 risk 执行价格3
/// </summary>
public double? Strike3 { get; internal set; }
/// <summary>
/// 备注
/// </summary>
public string Comments { get; set; }
}
/// <summary>
/// 日终持仓风险
/// </summary>
public class EodPositionRisksReq : BaseSearchReq, IClonable<EodPositionRisksReq>
{
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartDate { get; set; }
/// <summary>
/// 结算日
/// </summary>
public DateTime ValueDate { get; set; }
/// <summary>
/// 交易编号
/// </summary>
public string TradeNumber { get; set; }
/// <summary>
/// 是否仅仅导出
/// </summary>
public bool IsOnlyExport { get; set; }
/// <summary>
/// 簿记账户信息
/// </summary>
public List<int> BookIds { get; set; }
public IEnumerable<int> AssetIdGroupList { get; set; }
public IEnumerable<string> TradeTypes { get; set; }
public IEnumerable<int> VarietyIds { get; set; }
public IEnumerable<int> UnderlyingIds { get; set; }
/// <summary>
/// 正数代表tradeId;负数代表eod_trade_position的id
/// </summary>
public IEnumerable<int> TradeIds { get; set; }
public List<int> ClientIds { get; set; }
public DateTime? SettlementDateStart { get; set; }
public DateTime? SettlementDateEnd { get; set; }
public IEnumerable<int> SettlementFlags { get; set; }
/// <summary>
/// 标的价格类型
/// </summary>
public string EodSettlePriceMode { get; set; }
/// <summary>
/// 波动率类型
/// </summary>
public string VolType { get; set; }
/// <summary>
/// 分红率类型
/// </summary>
public string DividendRateType { get; set; }
/// <summary>
/// 是否需要eod结算时的数据
/// </summary>
public bool needSettleData { get; set; }
/// <summary>
/// 是否只查询场外期权交易,组合交易按照主交易展示
/// </summary>
public bool IsParentTrade { get; set; }
public List<int> UserAssets { get; set; }
public List<int> UserClients { get; set; }
public List<string> GroupNamesList
{
get
{
return (GroupNames + "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
}
}
public string GroupNames { get; set; }
public List<int> CurUserTradeIds { get; set; }
/// <summary>
/// 标签值
/// </summary>
public List<int> TagIds { get; set; }
public EodPositionRisksReq Clone()
{
return (EodPositionRisksReq)MemberwiseClone();
}
}
}