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; }
///
/// 主交易编号
///
public string ParentTradeNumber { get; set; }
///
/// 确认书编号
///
public string ContractCode { get; set; }
public string BuySell { get; set; }
private string _tradeNumber;
///
/// 多腿编号
///
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; }
///
/// 保底收益总额
///
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; }
///
/// 无风险利率
///
public double RiskFreeRate { get; set; }
///
/// 分红率
///
public double DividendRate { get; set; }
///
/// Delta_R
///
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; }
///
/// 维持预付金
///
public double? Margin { get; set; }
///
/// 广期想查看
///
public double? Spv1 { get; set; }
public double? Spv2 { get; set; }
public double? Spv3 { get; set; }
///
/// 敞口
///
public double? Exposure { get; set; }
///
/// 观察状态
///
public string KnockInOutStatus { get; set; }
///
/// 交易员
///
public string TraderName { get; set; }
///
/// 初始预付金
///
public double? InitMargin { get; set; }
///
/// 持仓初始预付金 = 初始预付金 *持仓数量/开仓数量
///
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().Error("EodTrade Trade", e);
}
}
else
{
_trade = trade.Default;
}
return _trade;
}
set
{
_trade = value;
}
}
#region ----二元----
///
/// 二元类型
///
public string PayoffType { get; set; }
///
/// 补偿金额
///
public double? CashOrNothingAmount { get; set; }
///
/// 补偿金额比率
///
public double? CashOrNothingAmountRate { get; set; }
///
/// 观察方式
///
public string MonitorType { get; set; }
///
/// 是否离散观察
///
public string IsDiscreteMonitored
{
get
{
if (string.IsNullOrWhiteSpace(MonitorType))
{
return string.Empty;
}
return MonitorType == "离散" ? "是" : "否";
}
}
///
/// 补偿方式
///
public string RebateType { get; set; }
#endregion
#region ----亚式----
public string StrikeType { get; set; }
///
/// 均价起算日
///
public DateTime? AveragingPeriodStartDate { get; set; }
public string PayoffType2 { get; set; }
///
/// 参与率
///
public double? ParticipationRate { get; set; }
///
/// 杠杆率
///
public double? StrikeGearingFactor { get; set; }
///
/// 增强价格
///
public double EnhancedPrice { get; set; }
#endregion
#region
public double? ParticipationRate2 { get; set; }
public double? ParticipationRate3 { get; set; }
#endregion
#region ----障碍----
///
/// 障碍类型
///
public string BarrierType { get; set; }
///
/// 观察类型
///
public string Discrete { get; set; }
///
/// 障碍价格
///
public double? BarrierPrice { get; set; }
///
/// 高障碍价格
///
public double? UpperBarrierPrice { get; set; }
public double? RebateRate { get; set; }
///
/// 补偿金额
///
public double? Rebate { get; set; }
///
/// 高障碍补偿金额
///
public double? RebateHigh { get; set; }
///
/// 高障碍补偿金额
///
public double? RebateHighRate { get; set; }
///
/// 障碍偏移
///
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
///
///
///
public int? CountRatio { get; set; }
///
/// 存续名义本金
///
public double? SurvivingNominalPrincipal { get; internal set; }
public string GroupName { get; set; }
///
/// 累计期权 类型(标准,三段式)
///
public string AccumulatorStructureTypeStr { get; internal set; }
///
/// 累计三段式 risk 执行价格2
///
public double? Strike2 { get; internal set; }
///
/// 累计三段式 risk 执行价格3
///
public double? Strike3 { get; internal set; }
///
/// 备注
///
public string Comments { get; set; }
}
///
/// 日终持仓风险
///
public class EodPositionRisksReq : BaseSearchReq, IClonable
{
///
/// 开始时间
///
public DateTime StartDate { get; set; }
///
/// 结算日
///
public DateTime ValueDate { get; set; }
///
/// 交易编号
///
public string TradeNumber { get; set; }
///
/// 是否仅仅导出
///
public bool IsOnlyExport { get; set; }
///
/// 簿记账户信息
///
public List BookIds { get; set; }
public IEnumerable AssetIdGroupList { get; set; }
public IEnumerable TradeTypes { get; set; }
public IEnumerable VarietyIds { get; set; }
public IEnumerable UnderlyingIds { get; set; }
///
/// 正数代表tradeId;负数代表eod_trade_position的id
///
public IEnumerable TradeIds { get; set; }
public List ClientIds { get; set; }
public DateTime? SettlementDateStart { get; set; }
public DateTime? SettlementDateEnd { get; set; }
public IEnumerable SettlementFlags { get; set; }
///
/// 标的价格类型
///
public string EodSettlePriceMode { get; set; }
///
/// 波动率类型
///
public string VolType { get; set; }
///
/// 分红率类型
///
public string DividendRateType { get; set; }
///
/// 是否需要eod结算时的数据
///
public bool needSettleData { get; set; }
///
/// 是否只查询场外期权交易,组合交易按照主交易展示
///
public bool IsParentTrade { get; set; }
public List UserAssets { get; set; }
public List UserClients { get; set; }
public List GroupNamesList
{
get
{
return (GroupNames + "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
}
}
public string GroupNames { get; set; }
public List CurUserTradeIds { get; set; }
///
/// 标签值
///
public List TagIds { get; set; }
public EodPositionRisksReq Clone()
{
return (EodPositionRisksReq)MemberwiseClone();
}
}
}