589 lines
14 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|