using YLErp.BLL;
using YLErp.Configuration;
using YLErp.DBModels.Enums;
using YLErp.DBModels.Helpers;
namespace YLErp.Models
{
public class TradingRiskParameter
{
private double _pv;
private double _npv;
private double _tv;
private double _delta;
private double _sA_Delta;
private double _gamma;
private double _theta;
private double _vega;
private double _rho;
private double _vol;
private double _ddeltaDt;
private double _ddeltaDvol;
private double _dvegaDt;
private double _dvegaDvol;
private double _deltaCash;
private double _gammaCash;
private double _deltaInLots;
private double _gammaInLots;
private double? _deltaPercent;
private double _tradePrice;
private double _originalPrincipalSum;
private double _dailyPnl;
private double _exercisePnl;
private double _totalPnl;
private double _pnlWithHedge;
private double _totalPnlWithHedge;
private double _cost;
private double _accruedTotalPnl;
public string EncryptId
{
get { return Helpers.DataProtectHelper.Encrypt(TradeId); }
}
///
/// 对冲波动率
///
public double? TradeSavedVol { get; set; }
///
/// 报价单位
///
public string QuoteUnit { get; set; }
///
/// 交易日期
///
public DateTime? TradeDate { get; set; }
///
/// 成交手数
///
public double? Lots { get; set; }
///
/// 持仓手数
///
public double? LotsNewInfo { get; set; }
///
/// 客户ID
///
public int ClientId { get; set; }
///
/// 客户名称
///
public string ClientName { get; set; }
///
/// 品种代码
///
public string VarietyCode { get; set; }
///
/// 是否组合标的
///
internal bool IsSynthetic { get; set; }
///
/// 组合标的的公式信息
///
public string SyntheticTipsInfo { get; set; }
///
/// 标的现价
///
public double? SpotPrice { get; set; }
///
/// 期初标的价格
///
public double? InitSpotPrice { get; set; }
///
/// 离交易到期日还有几天
///
public int MaturityDay => ExerciseDate == null ? 999999 : ExerciseDate.Value.Subtract(DateTime.Now.Date).Days;
///
/// 离系统工作日期差几天
///
public int MaturityWorkDay => ExerciseDate == null ? 999999 : CalendarBLL.GetNonHolidayDays(ExerciseDate.Value);
///
/// 行权方式
///
public string ExerciseModeCn => TradeHelper.GetExerciseModeCn(ExerciseMode);
public string ExerciseMode { get; set; }
public string TradeStatus { get; set; }
public int TradeId { get; set; }
///
/// (EnumTradeType)交易类型标识
///
public int TradeFlag { get; set; }
public bool IsOption { get; set; }
public int? UnderlyingId { get; set; }
///
/// 结构类型
///
public string TradeType { get; set; }
public string StructureType { get; set; }
///
/// 是否分组交易
///
public int IsGroup { get; set; }
///
/// 看涨看跌
///
public string CallPut { get; set; }
///
/// 行权日
///
public DateTime? ExerciseDate { get; set; }
///
/// 持仓份额
///
public double Notional { get; set; }
///
/// 有效开仓份额
///
public double OriginalNotional { get; set; }
///
/// 开仓份额(虚拟)
///
public double OriginalNotionalV { get; set; }
///
/// 期权份额
///
public double? OptionVolume { get; set; }
///
/// 行权价
///
public double? Strike { get; set; }
///
/// 名义本金
///
public double? StockEqvNotional { get; set; }
///
/// 是否相对行权价
///
public string IsMoneynessOption { get; set; }
///
/// 交易方向
///
public string BuySell { get; set; }
///
/// 簿记账户
///
public int BookId { get; set; }
///
/// 标的代码
///
public string UnderlyingCode { get; set; }
///
/// 标的名称
///
public string UnderlyingName { get; set; }
///
/// 涨跌幅
///
public double? SpotPriceChangePercent { get; set; }
public double Pv
{
get => _pv;
set => _pv = double.IsNaN(value) ? 0 : value;
}
public double NPv
{
get => _npv;
set => _npv = double.IsNaN(value) ? 0 : value;
}
///
/// 时间价值
///
public double Tv
{
get => _tv;
set => _tv = double.IsNaN(value) ? 0 : value;
}
public double Delta
{
get => _delta;
set => _delta = double.IsNaN(value) ? 0 : value;
}
///
/// T+1日Delta
///
internal double? DeltaT1 { get; set; }
///
/// T+1日Delta(手数)
///
public double? DeltaT1Lots { get; set; }
public double SA_Delta
{
get => _sA_Delta;
set => _sA_Delta = double.IsNaN(value) ? 0 : value;
}
public double Gamma
{
get => _gamma;
set => _gamma = double.IsNaN(value) ? 0 : value;
}
public double Theta
{
get => _theta;
set => _theta = double.IsNaN(value) ? 0 : value;
}
public double Vega
{
get => _vega;
set => _vega = double.IsNaN(value) ? 0 : value;
}
public double Rho
{
get => _rho;
set => _rho = double.IsNaN(value) ? 0 : value;
}
public double Vol
{
get => _vol;
set => _vol = double.IsNaN(value) ? 0 : value;
}
public double DdeltaDt
{
get => _ddeltaDt;
set => _ddeltaDt = double.IsNaN(value) ? 0 : value;
}
public double DdeltaDvol
{
get => _ddeltaDvol;
set => _ddeltaDvol = double.IsNaN(value) ? 0 : value;
}
public double DvegaDt
{
get => _dvegaDt;
set => _dvegaDt = double.IsNaN(value) ? 0 : value;
}
public double DvegaDvol
{
get => _dvegaDvol;
set => _dvegaDvol = double.IsNaN(value) ? 0 : value;
}
public double DeltaCash
{
get => _deltaCash;
set => _deltaCash = double.IsNaN(value) ? 0 : value;
}
///
/// 东证独有字段 DeltaCash 限额
///
public double DeltaCash2 { get; set; }
public double GammaCash
{
get => _gammaCash;
set => _gammaCash = double.IsNaN(value) ? 0 : value;
}
///
/// Delta手数
///
public double DeltaInLots
{
get => _deltaInLots;
set => _deltaInLots = double.IsNaN(value) ? 0 : value;
}
///
/// 可对冲Gamma手数
///
public double GammaInLots
{
get => _gammaInLots;
set => _gammaInLots = double.IsNaN(value) ? 0 : value;
}
///
/// 显示某标的期权持仓的已对冲比例,只在按标的浏览汇总时有意义
/// 计算方式是:该标的总Delta/期权份额
///
public double? DeltaPercent
{
get => _deltaPercent;
set => _deltaPercent = value == null || double.IsNaN(value.Value) ? 0 : value;
}
///
/// 权利金
///
public double TradePrice
{
get => _tradePrice;
set => _tradePrice = double.IsNaN(value) ? 0 : value;
}
///
/// 保底收益总额
///
public double OriginalPrincipalSum
{
get => _originalPrincipalSum;
set => _originalPrincipalSum = double.IsNaN(value) ? 0 : value;
}
///
/// 权利金
///
public double Premium { get; set; }
public bool IsPremiumRate { get; set; }
public double DailyPnl
{
get => _dailyPnl;
set => _dailyPnl = double.IsNaN(value) ? 0 : value;
}
///
/// 行权收益(只有期权有)
///
public double ExercisePnl
{
get => _exercisePnl;
set => _exercisePnl = double.IsNaN(value) ? 0 : value;
}
public double TotalPnl
{
get => _totalPnl;
set => _totalPnl = double.IsNaN(value) ? 0 : value;
}
public double TotalPnlWithHedge
{
get => _totalPnlWithHedge;
set => _totalPnlWithHedge = double.IsNaN(value) ? 0 : value;
}
public double PnlWithHedge
{
get => _pnlWithHedge;
set => _pnlWithHedge = double.IsNaN(value) ? 0 : value;
}
///
/// 成本
///
public double Cost
{
get => _cost;
set => _cost = double.IsNaN(value) ? 0 : value;
}
///
/// 累积总盈亏
///
public double AccruedTotalPnl
{
get => _accruedTotalPnl;
set => _accruedTotalPnl = double.IsNaN(value) ? 0 : value;
}
///
///
///
public string TradeNumber { get; set; }
///
/// 场内期权代码
///
public string ExchangeOptionCode { get; set; }
//持仓类型 long short
internal string PositionType { get; set; }
///
/// 标的资产类型
///
public string InstrumentType { get; set; }
///
/// 场内期权价格
///
public double? ExOptionPrice { get; set; }
///
/// 分红率
///
public double? DividendRate { get; set; }
///
/// 无风险利率
///
public double? NoRiskRate { get; set; }
///
/// 用于存储场外交易份额[绝对,轧差]
///
public double[] Notionals { get; set; }
///
/// 开仓波动率
///
public double OpenVol { get; set; }
///
/// 对冲PV
///
public double? HedgePv { get; set; }
///
/// 对冲Delta
///
public double? HedgeDelta { get; set; }
///
/// 对冲Delta手数
///
public double? HedgeDeltaLots { get; set; }
public List viewList { get; set; }
///
/// 判断是否有持仓
///
internal bool HasPosition { get; set; }
///
/// 公司定制
///
public TradingRiskParameter_Company CompanyObj { get; set; }
///
/// LastPv
///
public double? LastPv { get; set; }
///
/// TTM
///
public double? PricingT { get; set; }
///
/// Debug
///
public List