Files
zszq-trs/Framework/YLErp.Core/DBModels/SwapPosition.cs
T
2026-07-23 16:59:58 +08:00

291 lines
8.5 KiB
C#

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;
using Qdp.Pricing.Base.Interfaces;
namespace YLErp.DBModels
{
/// <summary>
/// 互换合约持仓表
/// </summary>
[Table("swap_position")]
public class swap_position : DBModelBaseV2
{
/// <summary>
/// 期初持仓id
/// </summary>
[DisplayName("期初持仓id")]
[DataChange]
public long PositionId { get; set; }
/// <summary>
/// 交易id
/// </summary>
[DisplayName("交易id")]
[DataChange]
public int SwapTradeId { get; set; }
/// <summary>
/// 收支方向 1:收取,2:支付
/// </summary>
[DisplayName("收支方向")]
[DataChange]
public int PosiDirection { get; set; }
/// <summary>
/// 多空方向 1:多头,2:空头
/// </summary>
[DisplayName("多空方向")]
[DataChange]
public int PositionType { get; set; }
/// <summary>
/// 标的代码
/// </summary>
[DisplayName("标的代码")]
[DataChange]
public string UnderlyingCode { get; set; }
[NotMapped]
public underlying_manager underlying { get; set; }
/// <summary>
/// 乘积因子 元/1吨
/// </summary>
[DisplayName("乘积因子")]
[DataChange]
public decimal CountRatio { get; set; } = 1;
/// <summary>
/// 合约乘数 20吨/1手
/// </summary>
[DisplayName("合约乘数")]
[DataChange]
public decimal ContractSize { get; set; } = 1;
/// <summary>
/// 期初标的价格
/// </summary>
[DisplayName("期初标的价格")]
[DataChange]
public decimal PosiNetPrice { get; set; }
/// <summary>
/// 期初标的价格不含费
/// </summary>
[DisplayName("期初标的价格-不含费")]
[DataChange]
public decimal PosiGrossPrice{get;set;}
/// <summary>
/// 成交净价含费
/// </summary>
[DisplayName("成交净价含费")]
[DataChange]
public decimal? PosiNetFeePrice { get; set; }
/// <summary>
/// 成交净价不含费
/// </summary>
[DisplayName("成交净价不含费")]
[DataChange]
public decimal? PosiNetNoFeePrice { get; set; }
/// <summary>
/// 期初名义本金
/// </summary>
[DisplayName("期初名义本金")]
[DataChange]
public decimal PosiNotionalValue { get; set; }
/// <summary>
/// 交易数量
/// </summary>
[DisplayName("交易数量")]
[DataChange]
public decimal PosiQuantity { get; set; }
/// <summary>
/// 交易费用
/// </summary>
[DisplayName("交易费用")]
[DataChange]
public decimal PosiTradingFee { get; set; }
/// <summary>
/// 单位交易费用
/// </summary>
[DataChange]
public decimal PosiTradingFeeUnit { get; set; }
/// <summary>
/// 起始日
/// </summary>
[DisplayName("起始日")]
[DataChange]
public DateTime PosiStartDate { get; set; }
/// <summary>
/// 到期日
/// </summary>
[DisplayName("到期日")]
[DataChange]
public DateTime? PosiMatuirityDate { get; set; }
/// <summary>
/// 平仓部分分红收益 实时持仓用 累计
/// </summary>
[DisplayName("平仓部分分红收益")]
[DataChange]
public decimal PosiDividendIncome { get; set; }
/// <summary>
/// 交易费用(待结算) 实时持仓用 累计
/// </summary>
[DisplayName("交易费用(待结算)")]
[DataChange]
public decimal PosiTradingFeePending { get; set; }
/// <summary>
/// 收支方向 1:收取,2:支付
/// </summary>
[DisplayName("收支方向")]
[DataChange]
public int InterestDirection { get; set; }
/// <summary>
/// 计息利率(年化)
/// </summary>
[DisplayName("计息利率(年化)")]
[DataChange]
public decimal InterestRateDefault { get; set; }
/// <summary>
/// 浮动利率
/// </summary>
public decimal FloatRate { get; set; }
/// <summary>
/// 浮动利率标的
/// </summary>
public string FloatRateUnderlyingCode { get; set; }
/// <summary>
/// 计息基本类型 1:固定值,2:合约名义本金规模,3:持仓名义本金,4:持仓市值,5:初始预付金,6:追加预付金
/// </summary>
[DisplayName("计息基本类型")]
[DataChange]
public int InterestMode { get; set; }
[NotMapped]
public string InterestModeStr
{
get
{
return ((InterestModeEnum)InterestMode).ToString();
}
}
/// <summary>
/// 计息方式 0:单利,1:复利
/// </summary>
public int InterestType { get; set; }
/// <summary>
/// 计息基数(固定值时适用)
/// </summary>
[DisplayName("计息基数")]
[DataChange]
public decimal InterestPrincipalFix { get; set; }
/// <summary>
/// 互换间隔
/// </summary>
[DisplayName("互换间隔")]
[DataChange]
public string InterestSwapInterval { get; set; }
/// <summary>
/// 待结算其他费用 实时持仓用 累计
/// </summary>
[DisplayName("待结算其他费用")]
[DataChange]
public decimal InterestFeePending { get; set; }
/// <summary>
/// 利息金额 实时持仓用 累计
/// </summary>
[DisplayName("利息金额")]
[DataChange]
public decimal InterestAmount { get; set; }
/// <summary>
/// 是否期初
/// </summary>
[DisplayName("是否期初")]
[DataChange]
public bool IsInitial { get; set; }
/// <summary>
/// 是否年化
/// </summary>
public bool IsAnnualized { get; set; }
/// <summary>
/// 发生日期 预付金腿用
/// </summary>
public DateTime? HappenDate { get; set; }
/// <summary>
/// 币种
/// </summary>
public string Currency { get; set; }
/// <summary>
/// 持仓编号
/// </summary>
public string PosiNumber { get; set; }
/// <summary>
/// 标的资产类型
/// </summary>
public string UnderlyingInstrumentType { get; set; }
/// <summary>
/// 期初收益率
/// </summary>
public decimal? InitYtm { get; set; }
/// <summary>
/// 是否无效
/// </summary>
public bool Invalid { get; set; }
/// <summary>
/// 重置频率(天)
/// </summary>
public int? interest_rest_days { get; set; }
/// <summary>
/// 利率准则(-1前一营业日,0当前营业日)
/// </summary>
public int? interest_rule { get; set; }
/// <summary>
/// 利息端类别
/// </summary>
public string category_tag { 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 TradeObervation Obervation { get; set; }
/// <summary>
/// 持仓编码
/// </summary>
[NotMapped]
public string PositionIdPadding
{
get
{
return PositionId.ToString().PadLeft(8, '0');
}
}
public swap_position Clone()
{
return (swap_position)MemberwiseClone();
}
}
}