保证金算法&资金计算

This commit is contained in:
吴方海
2025-04-16 15:15:59 +08:00
parent 6e644083df
commit 8e61f23e18
47 changed files with 695 additions and 1194 deletions
+15 -69
View File
@@ -625,7 +625,7 @@ namespace YLErp.Web.Controllers
x.HoldingDepositB = -clientBalance.PayableMarginB;
x.SwapPayableMargin = -clientBalance.SwapPayableMargin;
x.AvailableAmount = clientBalance.AvailableAmount;
x.InsuredAmount = clientBalance.MarginByPayableMargin;
x.InsuredAmount = clientBalance.PositionTradePayableFundTotal;
x.MarginMonitoringTime = clientBalance.UpdateDate ?? DateTime.Now;
x.FreezePremium = clientBalance.FreezePremium;
x.ReceivablesPremium = clientBalance.ReceivablesPremium;
@@ -643,7 +643,8 @@ namespace YLErp.Web.Controllers
Math.Min(Math.Abs(Math.Min((x.AvailableAmount ?? 0) - (x.GuaranteesTotalAmount ?? 0), 0)), x.GuaranteesTotalAmount ?? 0);
x.AmountFund = clientBalance.AmountFund;
x.AmountFundWithProduct = clientBalance.AmountFundWithProduct;
x.TotalAmount = clientBalance.TotalAmount;
x.TotalAmount = clientBalance.SwapMarketAmount;
x.RoundedTotalAmount = clientBalance.RoundedTotalAmount;
x.TotalTradeCount = clientBalance.TotalTradeCount;
x.BuyCount = clientBalance.BuyCount;
x.SellCount = clientBalance.SellCount;
@@ -661,13 +662,15 @@ namespace YLErp.Web.Controllers
x.PrepaymentAmount = clientBalance.PrepaymentAmount;
x.FrozenMarginMoney = clientBalance.FrozenMarginMoney;
x.NetFund = clientBalance.NetFund;
x.NetFundAll = clientBalance.NetFundAll;
x.VmFundSum = clientBalance.VmFundSum;
x.OtherFund = clientBalance.OtherFund;
x.Coupon = clientBalance.Coupon;
x.SwapBalance = clientBalance.SwapBalance;
x.PayableMargin = clientBalance.PayableMargin;
x.TwoSideMargin = clientBalance.TwoSideMargin;
x.OtherSideMargin = -clientBalance.OtherSideMargin;
x.MySideMargin = -clientBalance.MySideMargin;
x.MySideMargin = clientBalance.MySideMargin;
x.DeltaMargin = -clientBalance.DeltaMargin;
x.IsPayableMarginManual = clientBalance?.IsPayableMarginManual;
x.AvailableAmount = clientBalance.AvailableAmount;
@@ -683,6 +686,10 @@ namespace YLErp.Web.Controllers
x.AvailableStockEqvNotional = clientBalance.AvailableStockEqvNotional.Normalize();
x.PFE = clientBalance.PFE;
x.EndDesirableFund = x.NetFund + x.SettlementBalance + clientBalance.EndPremiumSum;
x.SwapMarketAmount= clientBalance.SwapMarketAmount;
x.SwapMarketAmountPercent=clientBalance.SwapMarketAmountPercent;
x.MaintenanceMargin=clientBalance.MaintenanceMargin;
x.NeedAddMargin=clientBalance.NeedAddMargin;
if (clientBalance.MarginOccupation == 0)
{
x.WorstCastClientPayableRatio = 10000;
@@ -718,31 +725,6 @@ namespace YLErp.Web.Controllers
x.LastHTSettlemetTime = clientBalance.LastHTSettlemetTime;
x.LastSettlemetTime = clientBalance.LastSettlemetTime;
if (PS.Config.Is润和)
{
x.AvailableAmount = clientBalance.AvailableAmount + clientBalance.TotalCredit;
x.DesirableFund = Math.Max(clientBalance.AvailableAmount, 0);
switch ((MarginOptionEnum)client.MarginOptionType)
{
case MarginOptionEnum.:
x.HoldingDeposit = Math.Max(x.HoldingDeposit ?? 0, 0);
x.OtherSideMargin = 0;
break;
case MarginOptionEnum.:
x.HoldingDeposit = 0;
x.OtherSideMargin = Math.Max(x.OtherSideMargin, 0);
break;
case MarginOptionEnum.:
x.HoldingDeposit = Math.Max(x.HoldingDeposit ?? 0, 0);
x.OtherSideMargin = Math.Max(x.OtherSideMargin, 0);
break;
case MarginOptionEnum.:
default:
break;
}
x.SpanValue = x.HoldingDeposit;
}
//拼装标签值
if (clientTagList.ContainsKey(x.id))
@@ -829,11 +811,7 @@ namespace YLErp.Web.Controllers
var sourceFileName = OtcAppContext.MapPath("~/App_Docs/导出模板/");
if (req.StartDate == null || req.StartDate == req.ValueDate)
{
var temp = Path.Combine(sourceFileName, $"资金监控模板1-{PS.Config.Company}.xlsx");
if (!System.IO.File.Exists(temp))
{
temp = Path.Combine(sourceFileName, $"资金监控模板1.xlsx");
}
var temp = Path.Combine(sourceFileName, $"资金监控模板1.xlsx");
sourceFileName = temp;
var searchList = ClientBanlanceQuery(req).Value as SearchListResult<ClientLinq>;
//模板绑定值,处理四舍五入配置
@@ -853,57 +831,25 @@ namespace YLErp.Web.Controllers
{
TotalTradeCountSum = pairs["TotalTradeCountSum"],
TotalNotionalPrincipalSum = pairs["TotalNotionalPrincipalSum"],
BuyCountSum = pairs["BuyCountSum"],
BuyNominalPrincipalOfTransactionSum = pairs["BuyNominalPrincipalOfTransactionSum"],
SellCountSum = pairs["SellCountSum"],
SellNominalPrincipalOfTransactionSum = pairs["SellNominalPrincipalOfTransactionSum"],
TransactionPenNumberSum = pairs["TransactionPenNumberSum"],
TodayNotionalPrincipalSum = pairs["TodayNotionalPrincipalSum"],
PositionNotionalPrincipalSum = pairs["PositionNotionalPrincipalSum"],
CurrentHoldingPenNumberSum = pairs["CurrentHoldingPenNumberSum"],
FreezePremiumSum = pairs["FreezePremiumSum"],
ReceivablesPremiumSum = pairs["ReceivablesPremiumSum"],
FrozenMarginMoneySum = pairs["FrozenMarginMoneySum"],
WinLossSum = pairs["WinLossSum"],
PositionPremiumNetCashSum = pairs["PositionPremiumNetCashSum"],
PositionPvSum = PS.Config.IsPVRounded ? pairs["RoundedPositionPvSum"] : pairs["PositionPvSum"],
PositionPnlSum = PS.Config.IsPVRounded ? pairs["RoundedPositionPnlSum"] : pairs["PositionPnlSum"],
TotalAmountSum = PS.Config.IsPVRounded ? pairs["RoundedTotalAmountSum"] : pairs["TotalAmountSum"],
NetFundSum = pairs["NetFundSum"],
OptionPremiumSum = pairs["OptionPremiumSum"],
SettlementBalanceSum = pairs["SettlementBalanceSum"],
CouponSum = pairs["CouponSum"],
OptionPremiumSwapSum = pairs["OptionPremiumSwapSum"],
SwapBalanceSum = pairs["SwapBalanceSum"],
NetFundAllSum = pairs["NetFundAllSum"],
OtherFundSum = pairs["OtherFundSum"],
AmountFundSum = pairs["AmountFundSum"],
GuaranteesTotalAmountSum = pairs["GuaranteesTotalAmountSum"],
HoldingDepositSum = pairs["HoldingDepositSum"],
HoldingDepositASum = pairs["HoldingDepositASum"],
HoldingDepositBSum = pairs["HoldingDepositBSum"],
AvailableAmountSum = pairs["AvailableAmountSum"],
CreditUsedSum = pairs["CreditUsedSum"],
InsuredAmountSum = pairs["InsuredAmountSum"],
ClosedTradePayableFundSum = pairs["ClosedTradePayableFundSum"],
PositionTradePayableFundSum = pairs["PositionTradePayableFundSum"],
PayableFundSum = pairs["PayableFundSum"],
DesirableFundSum = pairs["DesirableFundSum"],
OtherSideMarginSum = pairs["OtherSideMarginSum"],
MySideMarginSum = pairs["MySideMarginSum"],
CreditRiskLossSum = pairs["CreditRiskLossSum"],
ExposureSum = pairs["ExposureSum"],
CreditUsedValueSum = pairs["CreditUsedValueSum"],
BuyerPositionMarginSum = pairs["BuyerPositionMarginSum"],
SellerPositionPremiumSum = pairs["SellerPositionPremiumSum"],
ShouldChargedSum = pairs["ShouldChargedSum"],
PFESum = pairs["PFESum"],
EndDesirableFundSum = pairs["EndDesirableFundSum"],
clientEquitySum = pairs["clientEquitySum"],
LastDayPositionPremiumNetCashsSum = pairs["LastDayPositionPremiumNetCashsSum"],
NetFundSumSum = pairs["NetFundSumSum"],
EADSum = pairs["EADSum"],
DaliyPnlSum = PS.Config.IsPVRounded ? pairs["RoundedDaliyPnlSum"] : pairs["DaliyPnlSum"],
AvailableStockEqvNotionalSum= pairs["AvailableStockEqvNotionalSum"],
VmFundSumSum = pairs["VmFundSumSum"],
MarginBalanceSum = pairs["MarginBalanceSum"],
SwapMarketAmountSum = pairs["SwapMarketAmountSum"],
InfoList = searchList.rows
};