643 lines
20 KiB
C#
643 lines
20 KiB
C#
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace YLErp.DBModels
|
|
{
|
|
/// <summary>
|
|
/// 客户结算统计
|
|
/// </summary>
|
|
[Table("clientbalancedaily")]
|
|
public class ClientBalanceDaily : DBModelWithOperator
|
|
{
|
|
[DisplayName("预付金")]
|
|
public double? CashDeposit { get; set; }
|
|
|
|
[DisplayName("授信额度")]
|
|
public double? Credit { get; set; }
|
|
|
|
/// <summary>
|
|
/// 追保金额(所有欠缺金额)
|
|
/// </summary>
|
|
[DisplayName("追保金额")]
|
|
public double? Margin { get; set; }
|
|
|
|
[NotMapped]
|
|
public double MarginAbs
|
|
{
|
|
get
|
|
{
|
|
return Math.Abs(Margin ?? 0);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 客户信息
|
|
/// </summary>
|
|
[DisplayName("客户信息")]
|
|
public int ClientId { get; set; }
|
|
/// <summary>
|
|
/// 客户名称
|
|
/// </summary>
|
|
[DisplayName("客户名称")]
|
|
public string ClientName { get; set; }
|
|
/// <summary>
|
|
/// 客户编号
|
|
/// </summary>
|
|
[DisplayName("客户编号")]
|
|
public string ClientNumber { get; set; }
|
|
/// <summary>
|
|
/// 结算日期
|
|
/// </summary>
|
|
[DisplayName("结算日期")]
|
|
public DateTime? BalanceDate { get; set; }
|
|
/// <summary>
|
|
/// 上日资金余额
|
|
/// </summary>
|
|
[DisplayName("上日资金余额")]
|
|
public double? LastDayRemainFund { get; set; }
|
|
|
|
/// <summary>
|
|
/// 上日资金余额(包含抵押品价值)
|
|
/// </summary>
|
|
[NotMapped]
|
|
public double? LastDayRemainFundWithProduct
|
|
{
|
|
get
|
|
{
|
|
return LastDayRemainFund + TodayRemianFundProduct - CashInCashOutProductChange;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 当日资金余额(不包含抵押品价值)
|
|
/// </summary>
|
|
[DisplayName("当日资金余额")]
|
|
public double? ToDayRemainFund { get; set; }
|
|
|
|
/// <summary>
|
|
/// 当日资金余额(包含抵押品价值)
|
|
/// </summary>
|
|
[NotMapped]
|
|
public double? ToDayRemainFundWithProduct
|
|
{
|
|
get
|
|
{
|
|
return ToDayRemainFund + TodayRemianFundProduct;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 当日入金
|
|
/// </summary>
|
|
[DisplayName("当日入金")]
|
|
public double? InFund { get; set; }
|
|
/// <summary>
|
|
/// 当日出金
|
|
/// 为绝对值,不包含出金方向
|
|
/// </summary>
|
|
[DisplayName("当日出金")]
|
|
public double? OutFund { get; set; }
|
|
|
|
/// <summary>
|
|
/// 其他收入
|
|
/// </summary>
|
|
[DisplayName("其他收入")]
|
|
public double? InFundOther { get; set; }
|
|
|
|
/// <summary>
|
|
/// 其他支出
|
|
/// </summary>
|
|
[DisplayName("其他支出")]
|
|
public double? OutFundOther { get; set; }
|
|
|
|
/// <summary>
|
|
/// 当日损益
|
|
/// </summary>
|
|
private double? _DayGainLoss;
|
|
/// <summary>
|
|
/// 当日损益
|
|
/// </summary>
|
|
[DisplayName("当日损益")]
|
|
|
|
public double? DayGainLoss
|
|
{
|
|
set { _DayGainLoss = value; }
|
|
get { return _DayGainLoss == null ? _DayGainLoss : Round(_DayGainLoss.Value, 2); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 持仓盈亏
|
|
/// </summary>
|
|
private double? _PositionPnl;
|
|
/// <summary>
|
|
/// 持仓盈亏
|
|
/// </summary>
|
|
[DisplayName("持仓盈亏")]
|
|
public double? PositionPnl
|
|
{
|
|
set { _PositionPnl = value; }
|
|
get { return _PositionPnl == null ? _PositionPnl : Round(_PositionPnl.Value, 2); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 四舍五入处理后的持仓盈亏
|
|
/// </summary>
|
|
public double? RoundedPositionPnl { get; set; }
|
|
|
|
/// <summary>
|
|
/// 期权空头浮动盈利=∑max(期权空头持仓*(期权合约成本价-期权合约现价), 0) 从客户角度看的
|
|
/// </summary>
|
|
public double? ClientSellPositionPnl { get; set; }
|
|
|
|
/// <summary>
|
|
/// 总盈亏
|
|
/// </summary>
|
|
private double? _TotalPnl;
|
|
/// <summary>
|
|
/// 总盈亏
|
|
/// </summary>
|
|
[DisplayName("总盈亏")]
|
|
|
|
public double? TotalPnl
|
|
{
|
|
set { _TotalPnl = value; }
|
|
get { return _TotalPnl == null ? _TotalPnl : Round(_TotalPnl.Value, 2); }
|
|
}
|
|
|
|
//每日盈亏
|
|
[DisplayName("每日盈亏")]
|
|
public double? DailyPnl { get; set; }
|
|
|
|
[NotMapped]
|
|
public double? RoundedDailyPnl { get; set; }
|
|
/// <summary>
|
|
/// 状态
|
|
/// </summary>
|
|
[DisplayName("状态")]
|
|
public string State { get; set; }
|
|
|
|
///// <summary>
|
|
///// 确认人
|
|
///// </summary>
|
|
//[DisplayName("确认人")]
|
|
//public int? ConfirmerId { get; set; }
|
|
///// <summary>
|
|
///// 确认人
|
|
///// </summary>
|
|
//[DisplayName("确认人")]
|
|
//public string ConfirmerName { get; set; }
|
|
///// <summary>
|
|
///// 结算书
|
|
///// </summary>
|
|
//[DisplayName("结算书")]
|
|
//public string ConfirmBookHtml { get; set; }
|
|
|
|
[NotMapped]
|
|
public double? Amount { get; set; }
|
|
/// <summary>
|
|
/// 期权费收支
|
|
/// </summary>
|
|
[DisplayName("期权费收支")]
|
|
public double? OptionPremium { get; set; }
|
|
|
|
/// <summary>
|
|
/// 期权费收支(互换)
|
|
/// </summary>
|
|
[DisplayName("收益互换期权费")]
|
|
public double? OptionPremiumSwap { get; set; }
|
|
|
|
/// <summary>
|
|
/// 结算收支
|
|
/// </summary>
|
|
[DisplayName("结算收支")]
|
|
public double? SettlementBalance { get; set; }
|
|
/// <summary>
|
|
/// 当日平仓收益
|
|
/// </summary>
|
|
[DisplayName("当日平仓收益")]
|
|
public double? UnwindBalance { get; set; }
|
|
/// <summary>
|
|
/// 当日行权收益
|
|
/// </summary>
|
|
[DisplayName("当日行权收益")]
|
|
public double? ExerciseBalance { get; set; }
|
|
|
|
/// <summary>
|
|
/// 当日互换收益
|
|
/// </summary>
|
|
[DisplayName("当日互换收益")]
|
|
public double? SwapBalance { get; set; }
|
|
|
|
/// <summary>
|
|
/// 净资金流入
|
|
/// </summary>
|
|
[DisplayName("净资金流入")]
|
|
public double? NetFund { get; set; }
|
|
|
|
/// <summary>
|
|
/// 其他收支
|
|
/// </summary>
|
|
[DisplayName("其他收支")]
|
|
public double? OtherFund { get; set; }
|
|
|
|
/// <summary>
|
|
/// 票息
|
|
/// </summary>
|
|
[DisplayName("票息")]
|
|
public double? Coupon { get; set; }
|
|
|
|
/// <summary>
|
|
/// 预付金余额
|
|
/// </summary>
|
|
[DisplayName("预付金余额")]
|
|
public double? MarginBalance { get; set; }
|
|
/// <summary>
|
|
/// 冻结权利金
|
|
/// </summary>
|
|
[DisplayName("冻结权利金")]
|
|
public double? FrozenPremium { get; set; }
|
|
/// <summary>
|
|
/// 冻结出金
|
|
/// </summary>
|
|
[DisplayName("冻结出金")]
|
|
public double? FrozenOutFund { get; set; }
|
|
/// <summary>
|
|
/// 冻结抵押品赎回
|
|
/// </summary>
|
|
[DisplayName("冻结抵押品赎回")]
|
|
public double? FrozenRedeemFunds { get; set; }
|
|
/// <summary>
|
|
/// 冻结资金
|
|
/// </summary>
|
|
[DisplayName("冻结资金")]
|
|
public double? FrozenBalance { get; set; }
|
|
/// <summary>
|
|
/// 应付到期权利金
|
|
/// </summary>
|
|
[DisplayName("应付到期权利金")]
|
|
public double? CopeWithExpirePremium { get; set; }
|
|
/// <summary>
|
|
/// 应付存续权利金
|
|
/// </summary>
|
|
[DisplayName("应付存续权利金")]
|
|
public double? CopeWithLastPremium { get; set; }
|
|
/// <summary>
|
|
/// 了结交易权利金
|
|
/// </summary>
|
|
[DisplayName("了结权利金")]
|
|
public double? EndPremium { get; set; }
|
|
/// <summary>
|
|
/// 潜在行权盈余
|
|
/// </summary>
|
|
[DisplayName("潜在行权盈余")]
|
|
public double? Pv { get; set; }
|
|
|
|
/// <summary>
|
|
/// 四舍五入处理后的持仓市值
|
|
/// </summary>
|
|
public double? RoundedPv { get; set; }
|
|
|
|
/// <summary>
|
|
/// 空头持仓市值
|
|
/// </summary>
|
|
[DisplayName("空头持仓市值")]
|
|
public double? SellPv { get; set; }
|
|
|
|
/// <summary>
|
|
/// 当日该客户所有持仓的卖出期权权利金
|
|
/// </summary>
|
|
[DisplayName("权利金冻结")]
|
|
public double? SellTradePrice { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户权益(现金+持仓市值+抵押品总价值)
|
|
/// </summary>
|
|
[NotMapped]
|
|
public double? TotalAmount
|
|
{
|
|
get
|
|
{
|
|
return (ToDayRemainFund ?? 0) + (Pv ?? 0) + (TodayRemianFundProduct ?? 0) - (PrepaymentAmount ?? 0);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 客户权益(现金+四舍五入处理后的持仓市值+抵押品总价值)
|
|
/// </summary>
|
|
[NotMapped]
|
|
public double? RoundedTotalAmount
|
|
{
|
|
get
|
|
{
|
|
return (ToDayRemainFund ?? 0) + (RoundedPv ?? 0) + (TodayRemianFundProduct ?? 0) - (PrepaymentAmount ?? 0);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 未了结名义成交金额
|
|
/// </summary>
|
|
[DisplayName("未了结名义成交金额")]
|
|
public double? TotalNominal { get; set; }
|
|
/// <summary>
|
|
/// 应付预付金
|
|
/// 负数代表客户应缴预付金,正数代表客户应收预付金
|
|
/// </summary>
|
|
[DisplayName("应付预付金")]
|
|
public double? PayableMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 互换应付预付金(要么为负,要么为零)
|
|
/// </summary>
|
|
[DisplayName("互换应付预付金")]
|
|
public double? SwapPayableMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 互换预付金容忍
|
|
/// </summary>
|
|
[DisplayName("互换预付金容忍")]
|
|
public double? SwapUnPayableMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// Delta预付金
|
|
/// 负数代表客户应缴预付金,正数代表客户应收预付金
|
|
/// </summary>
|
|
public double? DeltaMargin { get; set; }
|
|
/// <summary>
|
|
/// 应付预付金(结算报告客户角度,正数代表他要付钱,负数代表应收)
|
|
/// </summary>
|
|
public double MinusPayableMargin
|
|
{
|
|
get
|
|
{
|
|
return -PayableMargin ?? 0;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 双向预付金(暂时只有国君用到该字段)
|
|
/// </summary>
|
|
public double? TwoSideMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 本方角度预付金
|
|
/// </summary>
|
|
public double? MySideMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户角度预付金
|
|
/// </summary>
|
|
public double? OtherSideMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否是手动修改过的预付金占用
|
|
/// </summary>
|
|
public bool? IsPayableMarginManual { get; set; }
|
|
|
|
/// <summary>
|
|
/// 冻结预付金(绝对值)
|
|
/// </summary>
|
|
[DisplayName("冻结预付金")]
|
|
public double? FrozenMarginMoney { get; set; }
|
|
/// <summary>
|
|
/// 可提取预付金
|
|
/// </summary>
|
|
[DisplayName("可提取预付金")]
|
|
public double? AdvisableMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 抵押品变化
|
|
/// </summary>
|
|
[DisplayName("抵押品变化")]
|
|
public double? CashInCashOutProductChange { get; set; }
|
|
/// <summary>
|
|
/// 当日抵押品资金余额
|
|
/// </summary>
|
|
[DisplayName("当日抵押品资金余额")]
|
|
public double? TodayRemianFundProduct { get; set; }
|
|
|
|
//是否期权费授信
|
|
[DisplayName("是否期权费授信")]
|
|
public bool? IsTradeCredit
|
|
{
|
|
get; set;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 潜在行权盈余
|
|
/// </summary>
|
|
[DisplayName("潜在行权盈余")]
|
|
public double? PotentialSurpluses { get; set; }
|
|
|
|
/// <summary>
|
|
/// 持仓期权费净额
|
|
/// </summary>
|
|
[DisplayName("持仓期权费净额")]
|
|
public double? PositionPremiumNetCash { get; set; }
|
|
|
|
/// <summary>
|
|
/// 期初持仓交易净额
|
|
/// </summary>
|
|
[DisplayName("期初持仓交易净额")]
|
|
public double? LastDayPositionPremiumNetCash { get; set; }
|
|
|
|
/// <summary>
|
|
/// 实现盈亏
|
|
/// </summary>
|
|
[DisplayName("实现盈亏")]
|
|
public double? WinLoss { get; set; }
|
|
|
|
/// <summary>
|
|
/// 额外追保
|
|
/// </summary>
|
|
[DisplayName("额外追保")]
|
|
public double? AdditionalMargin
|
|
{
|
|
get; set;
|
|
}
|
|
/// <summary>
|
|
/// 可用名义本金规模
|
|
/// </summary>
|
|
public double? AvailableStockEqvNotional { get; set; }
|
|
/// <summary>
|
|
/// 潜在风险暴露
|
|
/// </summary>
|
|
public double? PFE { get; set; }
|
|
/// <summary>
|
|
/// 违约风险暴露
|
|
/// </summary>
|
|
public double? EAD { get; set; }
|
|
|
|
//---------------------------------------
|
|
// 总和
|
|
//---------------------------------------
|
|
|
|
/// <summary>
|
|
/// 净资金流入总和
|
|
/// </summary>
|
|
public double? NetFundSum { get; set; }
|
|
/// <summary>
|
|
/// 入金总和
|
|
/// </summary>
|
|
public double? InFundSum { get; set; }
|
|
/// <summary>
|
|
/// 出金总和
|
|
/// </summary>
|
|
public double? OutFundSum { get; set; }
|
|
/// <summary>
|
|
/// 其他收支总和
|
|
/// </summary>
|
|
public double? OtherFundSum { get; set; }
|
|
/// <summary>
|
|
/// 期权费收支(权利金收支)总和
|
|
/// </summary>
|
|
public double? OptionPremiumSum { get; set; }
|
|
/// <summary>
|
|
/// 期权费收支(权利金收支)总和 -- 互换
|
|
/// </summary>
|
|
public double? OptionPremiumSwapSum { get; set; }
|
|
/// <summary>
|
|
/// 结算费支出(客户平仓行权收益)总和
|
|
/// </summary>
|
|
public double? SettlementBalanceSum { get; set; }
|
|
/// <summary>
|
|
/// 结算费支出(客户平仓收益)总和
|
|
/// </summary>
|
|
public double? UnwindBalanceSum { get; set; }
|
|
/// <summary>
|
|
/// 结算费支出(客户行权收益)总和
|
|
/// </summary>
|
|
public double? ExerciseBalanceSum { get; set; }
|
|
public double? SwapBalanceSum { get; set; }
|
|
/// <summary>
|
|
/// 抵押品变化总和
|
|
/// </summary>
|
|
public double? CashInCashOutProductChangeSum { get; set; }
|
|
/// <summary>
|
|
/// 实现盈亏总和
|
|
/// </summary>
|
|
public double? WinLossSum { get; set; }
|
|
/// <summary>
|
|
/// 了结权利金总和
|
|
/// </summary>
|
|
public double? EndPremiumSum { get; set; }
|
|
/// <summary>
|
|
/// 票息总和
|
|
/// </summary>
|
|
public double? CouponSum { get; set; }
|
|
|
|
public string FundJson { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户持仓交易预付金总和,客户买入为正,客户卖出为负
|
|
/// </summary>
|
|
public double? PrepaymentAmount { get; set; }
|
|
/// <summary>
|
|
/// 维保线
|
|
/// </summary>
|
|
public double? MaintenanceLine { get; set; }
|
|
/// <summary>
|
|
/// 追保入金
|
|
/// </summary>
|
|
public double? vm_in_fund { get; set; }
|
|
/// <summary>
|
|
/// 追保 入金累计
|
|
/// </summary>
|
|
public double? vm_in_fund_sum { get; set; }
|
|
/// <summary>
|
|
/// 追保 出金
|
|
/// </summary>
|
|
public double? vm_out_fund { get; set; }
|
|
/// <summary>
|
|
/// 追保 出金累计
|
|
/// </summary>
|
|
public double? vm_out_fund_sum { get; set; }
|
|
/// <summary>
|
|
/// 交易费用
|
|
/// </summary>
|
|
public double? trade_fee { get; set; }
|
|
public double? trade_fee_sum { get; set; }
|
|
/// <summary>
|
|
/// 利息盈亏
|
|
/// </summary>
|
|
public double? interest_pnl { get; set; }
|
|
public double? interest_pnl_sum { get; set; }
|
|
|
|
[NotMapped]
|
|
public FundObject FundObject { get; set; }
|
|
|
|
private static double Round(double value, int digit)
|
|
{
|
|
var num = Convert.ToDouble("1e-" + digit);
|
|
return Math.Round(value / num, 0, MidpointRounding.AwayFromZero) * num;
|
|
}
|
|
}
|
|
|
|
public class FundObject
|
|
{
|
|
public Dictionary<string, double> InFund { get; set; } = new Dictionary<string, double>();
|
|
public Dictionary<string, double> VmInFund { get; set; } = new Dictionary<string, double>();
|
|
|
|
/// <summary>
|
|
/// 出金为绝对值,不包含出金方向处理
|
|
/// </summary>
|
|
public Dictionary<string, double> OutFund { get; set; } = new Dictionary<string, double>();
|
|
public Dictionary<string, double> VmOutFund { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> NetFund { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> InFundOther { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> OutFundOther { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> OtherFund { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> InFundSum { get; set; } = new Dictionary<string, double>();
|
|
public Dictionary<string, double> VmInFundSum { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> OutFundSum { get; set; } = new Dictionary<string, double>();
|
|
public Dictionary<string, double> VmOutFundSum { get; set; } = new Dictionary<string, double>();
|
|
|
|
|
|
public Dictionary<string, double> NetFundSum { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> OtherFundSum { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> TodayRemainFund { get; set; } = new Dictionary<string, double>();
|
|
|
|
public Dictionary<string, double> LastDayRemainFund { get; set; } = new Dictionary<string, double>();
|
|
}
|
|
|
|
[NotMapped]
|
|
public class clientbalanceStatistics : ClientBalanceDaily
|
|
{
|
|
public double? CreditRatio { get; set; }
|
|
|
|
public double? AvailableFund { get; set; }
|
|
|
|
public static clientbalanceStatistics TransferFromClientbalancedaily(ClientBalanceDaily clientbalancedaily)
|
|
{
|
|
var clientbalanceStatistics = new clientbalanceStatistics
|
|
{
|
|
Amount = clientbalancedaily.Amount ?? 0,
|
|
CashDeposit = clientbalancedaily.CashDeposit ?? 0,
|
|
DayGainLoss = clientbalancedaily.DayGainLoss ?? 0,
|
|
LastDayRemainFund = clientbalancedaily.LastDayRemainFund ?? 0,
|
|
ToDayRemainFund = clientbalancedaily.ToDayRemainFund ?? 0,
|
|
InFund = clientbalancedaily.InFund ?? 0,
|
|
OutFund = clientbalancedaily.OutFund ?? 0,
|
|
OptionPremium = clientbalancedaily.OptionPremium ?? 0,
|
|
OptionPremiumSwap = clientbalancedaily.OptionPremiumSwap ?? 0,
|
|
SettlementBalance = clientbalancedaily.SettlementBalance ?? 0,
|
|
UnwindBalance = clientbalancedaily.UnwindBalance ?? 0,
|
|
ExerciseBalance = clientbalancedaily.ExerciseBalance ?? 0,
|
|
Coupon = clientbalancedaily.Coupon ?? 0,
|
|
SwapBalance = clientbalancedaily.SwapBalance ?? 0,
|
|
|
|
MarginBalance = clientbalancedaily.MarginBalance,
|
|
Pv = clientbalancedaily.Pv,
|
|
Credit = clientbalancedaily.Credit,
|
|
CreditRatio = 0,
|
|
Margin = clientbalancedaily.Margin,
|
|
TodayRemianFundProduct = clientbalancedaily.TodayRemianFundProduct,
|
|
CashInCashOutProductChange = clientbalancedaily.CashInCashOutProductChange
|
|
};
|
|
return clientbalanceStatistics;
|
|
}
|
|
}
|
|
}
|