Files
zszq-trs/Framework/YLErp.Core/DBModels/SwapFlowEvent.cs
T

418 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;
using YLErp.Helpers;
using Newtonsoft.Json;
using YLErp.Models;
namespace YLErp.DBModels
{
[Table("swap_flow_event")]
public class swap_flow_event: DBModelBaseV2
{
/// <summary>
/// 事件日期
/// </summary>
[DisplayName("事件日期")]
[DataChange]
public DateTime EventDate { get; set; }
/// <summary>
/// 互换交易id
/// </summary>
[DisplayName("互换交易id")]
[DataChange]
public int SwapTradeId { get; set; }
/// <summary>
/// 互换交易编码
/// </summary>
[DisplayName("互换交易编码")]
[DataChange]
public string SwapTradeNo { get; set; }
/// <summary>
/// 持仓编码
/// </summary>
[NotMapped]
public string SwapPositionIdPadding
{
get
{
return PositionId.ToString().PadLeft(8, '0');
}
}
/// <summary>
/// 平仓事件 1:开仓,2:平仓,3:互换,4:自动互换
/// </summary>
[DisplayName("平仓事件")]
[DataChange]
public int EventType { get; set; }
[NotMapped]
public string EventTypeStr
{
get
{
switch (EventType)
{
case 1:return "开仓";
case 2: return "平仓";
case 3: return "互换";
case 4: return "自动互换";
default:return "";
}
}
}
/// <summary>
/// 事件原因
/// </summary>
[DisplayName("事件原因")]
[DataChange]
public string EventReason { get; set; }
/// <summary>
/// 浮动端收支方向 1:收取,2:支付
/// </summary>
[DisplayName("浮动端收支方向")]
[DataChange]
public int PayDirection { get; set; }
[NotMapped]
public string PayDirectionStr
{
get
{
if (PayDirection == 1)
{
return "收取";
}
else if (PayDirection == 2)
{
return "支付";
}
else return "";
}
}
/// <summary>
/// 浮动端多空方向 1:多,2:空
/// </summary>
[DisplayName("浮动端多空方向")]
[DataChange]
public int PositionType { get; set; }
[NotMapped]
public string PositionTypeStr
{
get
{
if (PositionType == 1)
{
return "B";
}
else if (PositionType == 2)
{
return "S";
}
else return "";
}
}
/// <summary>
/// 标的代码
/// </summary>
[DisplayName("标的代码")]
[DataChange]
public string UnderlyingCode { get; set; }
/// <summary>
/// 到期日
/// </summary>
[DisplayName("到期日")]
[DataChange]
public DateTime? MatuirityDate { get; set; }
/// <summary>
/// 成交数量
/// </summary>
[DisplayName("成交数量")]
[DataChange]
public decimal Quantity { get; set; }
/// <summary>
/// 剩余持仓数量
/// </summary>
public decimal? PositionQty { get; set; }
/// <summary>
/// 乘积因子
/// </summary>
[DisplayName("乘积因子")]
[DataChange]
public decimal CountRatio { get; set; }
/// <summary>
/// 合约乘数
/// </summary>
[DisplayName("合约乘数")]
[DataChange]
public decimal ContractSize { get; set; }
/// <summary>
/// 期初标的价格
/// </summary>
[NotMapped]
public decimal PosiNetPrice { get; set; }
/// <summary>
/// 期初标的价格不含费
/// </summary>
[NotMapped]
public decimal PosiGrossPrice { get; set; }
/// <summary>
/// 成交金额
/// </summary>
[DisplayName("成交金额")]
[DataChange]
public decimal TradingAmount { get; set; }
/// <summary>
/// 成交均价
/// </summary>
[DisplayName("成交均价")]
[DataChange]
public decimal TradingAmountAvg { get; set; }
/// <summary>
/// 含费均价
/// </summary>
[DisplayName("含费均价")]
[DataChange]
public decimal TradingAmountFeeAvg { get; set; }
/// <summary>
/// 交易费用佣金
/// </summary>
[DisplayName("交易费用佣金")]
[DataChange]
public decimal TradingFee { get; set; }
/// <summary>
/// 待结算后付交易费用佣金
/// </summary>
[DisplayName("待结算后付交易费用佣金")]
[DataChange]
public decimal TradingFeePending { get; set; }
/// <summary>
/// 待结算分红收益
/// </summary>
[DisplayName("待结算分红收益")]
[DataChange]
public decimal DividendPending { get; set; }
/// <summary>
/// 浮动端平仓盈亏·盯市
/// </summary>
[DisplayName("浮动端平仓盈亏·盯市")]
[DataChange]
public decimal MarkClosePnl { get; set; }
/// <summary>
/// 浮动端平仓盈亏·分红
/// </summary>
[DisplayName("浮动端平仓盈亏·分红")]
[DataChange]
public decimal DividendIn { get; set; }
/// <summary>
/// 浮动端平仓盈亏·费用
/// </summary>
[DisplayName("浮动端平仓盈亏·费用")]
[DataChange]
public decimal CloseFee { get; set; }
/// <summary>
/// 平仓前 交易佣金+后付费用
/// </summary>
[NotMapped]
public decimal BeforeCloseFee { get; set; }
/// <summary>
/// 基础费率(仅前端展示,不存库)
/// </summary>
[NotMapped]
public decimal PosiTradingFeeUnit { get; set; }
/// <summary>
/// 基础费率模式 0=百分比 1=单位数量(仅前端展示,不存库)
/// </summary>
[NotMapped]
public int PosiFeeType { get; set; }
/// <summary>
/// 持仓腿id
/// </summary>
[DisplayName("持仓腿id")]
[DataChange]
public long PositionId { get; set; }
/// <summary>
/// 数据状态 0:废弃,1:等待流水开平仓完成,100:完成
/// </summary>
[DisplayName("数据状态")]
[DataChange]
public int DataState { get; set; }
/// <summary>
/// 资金记录id
/// </summary>
[DisplayName("资金记录id")]
[DataChange]
public int ClientCashId { get; set; }
/// <summary>
/// 利息端收支方向
/// </summary>
[DisplayName("收支方向")]
[DataChange]
public int InterestDirection { get; set; }
[NotMapped]
public string InterestDirectionStr
{
get
{
if (InterestDirection == 1)
{
return "收取";
}
else if (InterestDirection == 2)
{
return "支付";
}
else return "";
}
}
/// <summary>
/// 计息方式 1:固定值,2:合约名义本金规模,5:初始预付金,6:追加预付金,9:标的期初全价
/// </summary>
[DisplayName("计息方式")]
[DataChange]
public int InterestMode { get; set; }
/// <summary>
/// 标的资产类型
/// </summary>
public string UnderlyingInstrumentType { get; set; }
[NotMapped]
public string InterestModeStr
{
get
{
if (InterestMode==0)
{
return string.Empty;
}
return ((InterestModeEnum)InterestMode).ToString();
}
}
/// <summary>
/// 利息端计息基准
/// </summary>
[DisplayName("计息基准")]
[DataChange]
public decimal InterestPrincipal { get; set; }
/// <summary>
/// 利息端计息利率
/// </summary>
[DisplayName("计息利率")]
[DataChange]
public decimal InterestRate { get; set; }
/// <summary>
/// 互换间隔
/// </summary>
[DisplayName("互换间隔")]
[DataChange]
public string InterestSwapInterval { get; set; }
/// <summary>
/// 利息端利息金额
/// </summary>
[DisplayName("利息金额")]
[DataChange]
public decimal InterestAmount { get; set; }
/// <summary>
/// 当日新计利息
/// </summary>
[NotMapped]
public decimal TdInterestAmount { get; set; }
/// <summary>
/// 利息端计息费用
/// </summary>
[DisplayName("计息费用")]
[DataChange]
public decimal InterestFee { get; set; }
/// <summary>
/// 利息端利息端平仓盈亏
/// </summary>
[DisplayName("利息端平仓盈亏")]
[DataChange]
public decimal InterestClosePnL { get; set; }
public long? EventId { get; set; }
public int? ClientId { get; set; }
public decimal? FloatRate { get; set; }
/// <summary>
/// 支付日
/// </summary>
public DateTime? PayDate { get; set; }
/// <summary>
/// 成交净价含费
/// </summary>
public decimal? TradingAmountNetFeeAvg { get; set; }
/// <summary>
/// 成交净价不含费
/// </summary>
public decimal? TradingAmountNetAvg { get; set; }
public DateTime? UnwindDate { get; set; }
/// <summary>
/// 操作记录
/// </summary>
public string OptLog { get; set; }
/// <summary>
/// 互换观察日集合
/// </summary>
[NotMapped]
public List<IntervalModel> SwapIntervalList
{
get
{
if (string.IsNullOrEmpty(InterestSwapInterval))
{
return new List<IntervalModel>();
}
return JsonConvert.DeserializeObject<List<IntervalModel>>(InterestSwapInterval);
}
}
/// <summary>
/// 浮动端平仓盈亏
/// </summary>
[NotMapped]
public decimal FloatPnlSum
{
get
{
return MarkClosePnl + TradingFee + TradingFeePending + DividendIn;
}
}
/// <summary>
/// 成交收益率
/// </summary>
[NotMapped]
public decimal? InitYtm { get; set; }
/// <summary>
/// 期末标的结算收益率(EQD-6953 平仓)。普通债券类收益互换平仓时由债券计算器按
/// 期末标的交割全价反算(估值日=平仓日 ValueDate),允许手工覆盖。
/// 命名遵循《互换价格字段命名规范决策文档》时点维度:平仓/了结用 Exit(勿用 End/Close/Final)。
/// [NotMapped]:不落 swap_flow_event 表列;仅随 UnwindData 序列化进 swap_event.EventData JSON
/// 由平仓待复核回显(GetSwapEvent)与结算确认书 Excel(TradeSettleBillGenerator) 消费。
/// ⚠️ 存储口径为【展示态百分数】(如 6.3721 表示 6.3721%),与同页期末交割全价(展示态)一致,
/// 区别于录入页 trade.InitYtm 的存储态小数(0.063721)——两者载体不同、互不干扰,勿"顺手统一"。
/// 精度:确认书导出固定 4 位小数不去零(ToString("0.0000"));本字段保留 4 位(四舍五入)。
/// </summary>
[NotMapped]
public decimal? ExitYtm { get; set; }
}
}