Skip to content

Commit

Permalink
Merge pull request #197 from LykkeBusiness/LT-4839-change-Disposable-…
Browse files Browse the repository at this point in the history
…formula

LT-4839: [AccountsManagement] Exclude UnconfirmedMargin from Disposable
  • Loading branch information
tarurar committed Jan 18, 2024
2 parents e892611 + f46d774 commit f2ad8fe
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ namespace MarginTrading.AccountsManagement.InternalModels
decimal dividends,
string assetId,
decimal usedMargin,
decimal unconfirmedMargin,
Percent disposableCapitalWithholdPercent)
{
if (string.IsNullOrWhiteSpace(assetId))
Expand All @@ -87,7 +88,7 @@ namespace MarginTrading.AccountsManagement.InternalModels
)
);

Disposable = Math.Max(0, balanceProtected - usedMargin);
Disposable = Math.Max(0, balanceProtected - usedMargin - (unconfirmedMargin > 0 ? unconfirmedMargin : 0));

CanRevokeAmount = Math.Max(0,
TotalCapital - (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<PackageReference Include="JetBrains.Annotations" Version="2022.3.1" />
<PackageReference Include="JsonDiffPatch.Net" Version="2.3.0" />
<PackageReference Include="Lykke.MarginTrading.AssetService.Contracts" Version="11.6.0" />
<PackageReference Include="Lykke.MarginTrading.BackendSnow.Contracts" Version="1.46.0" />
<PackageReference Include="Lykke.MarginTrading.BackendSnow.Contracts" Version="1.52.0" />
<PackageReference Include="Lykke.MarginTrading.BookKeeper.Contracts" Version="1.1.2" />
<PackageReference Include="Lykke.Middlewares" Version="3.6.0" />
<PackageReference Include="Lykke.Snow.Common.Startup" Version="3.10.0" />
Expand All @@ -57,18 +57,23 @@
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.9" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables"
Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions"
Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions"
Version="6.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="5.4.1" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.4.1" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\MarginTrading.AccountsManagement.Common\MarginTrading.AccountsManagement.Common.csproj" />
<ProjectReference Include="..\MarginTrading.AccountsManagement.Contracts\MarginTrading.AccountsManagement.Contracts.csproj" />
<ProjectReference
Include="..\..\MarginTrading.AccountsManagement.Common\MarginTrading.AccountsManagement.Common.csproj" />
<ProjectReference
Include="..\MarginTrading.AccountsManagement.Contracts\MarginTrading.AccountsManagement.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<None Include=".\Scripts\**" CopyToOutputDirectory="PreserveNewest" LinkBase="Scripts" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ public async ValueTask<AccountStat> GetCachedAccountStatistics(string accountId)
mtCoreAccountStats.Balance,
mtCoreAccountStats.TotalCapital,
mtCoreAccountStats.UsedMargin,
mtCoreAccountStats.UnconfirmedMargin,
useCache: true);

var result = new AccountStat(
Expand Down Expand Up @@ -346,6 +347,7 @@ public async Task<AccountCapital> GetAccountCapitalAsync(string accountId, bool
mtCoreAccountStats.Balance,
mtCoreAccountStats.TotalCapital,
mtCoreAccountStats.UsedMargin,
mtCoreAccountStats.UnconfirmedMargin,
useCache);
}

Expand Down Expand Up @@ -373,7 +375,7 @@ public Task<IClient> GetClient(string clientId)
}

private async Task<AccountCapital> GetAccountCapitalAsync(string accountId,
string baseAssetId, decimal temporaryCapital, decimal balance, decimal totalCapital, decimal usedMargin, bool useCache)
string baseAssetId, decimal temporaryCapital, decimal balance, decimal totalCapital, decimal usedMargin, decimal unconfirmedMargin, bool useCache)
{
if (string.IsNullOrWhiteSpace((accountId)))
throw new ArgumentNullException(nameof(accountId));
Expand Down Expand Up @@ -408,6 +410,7 @@ public Task<IClient> GetClient(string clientId)
realizedProfit.dividends,
baseAssetId,
usedMargin,
unconfirmedMargin,
disposableCapitalWithholdPercent);

return result;
Expand Down
32 changes: 18 additions & 14 deletions tests/MarginTrading.AccountsManagement.Tests/AccountCapitalTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,22 @@ public class AccountCapitalTests
{
static object[] DisposableCapitalCases =
{
new object[] { 0m, 0m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 0m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 100m },
new object[] { 100m, 50m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 50m, 0m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 50m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 50m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 0m, 50m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 50m, new Percent(100), 50m },
new object[] { 100m, 50m, 0m, 0m, 0m, 0m, 0m, new Percent(50), 50m },
new object[] { 100m, 0m, 50m, 0m, 0m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 50m, 0m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 0m, 50m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 0m, 0m, 50m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 50m, new Percent(50), 50m },
new object[] { 0m, 0m, 0m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 0m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 100m },
new object[] { 100m, 50m, 0m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 50m, 0m, 0m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 50m, 0m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 50m, 0m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 0m, 50m, 0m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 50m, 0m, new Percent(100), 50m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 0m, 50m, new Percent(100), 50m },
new object[] { 100m, 50m, 0m, 0m, 0m, 0m, 0m, 0m, new Percent(50), 50m },
new object[] { 100m, 0m, 50m, 0m, 0m, 0m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 50m, 0m, 0m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 0m, 50m, 0m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 0m, 0m, 50m, 0m, 0m, new Percent(50), 75m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 50m, 0m, new Percent(50), 50m },
new object[] { 100m, 0m, 0m, 0m, 0m, 0m, 0m, 50m, new Percent(50), 50m },
};

[TestCaseSource(nameof(DisposableCapitalCases))]
Expand All @@ -35,6 +37,7 @@ public class AccountCapitalTests
decimal dividends,
decimal totalUnRealisedPnl,
decimal usedMargin,
decimal unconfirmedMargin,
Percent disposableCapitalWithholdPercent,
decimal disposable)
{
Expand All @@ -47,6 +50,7 @@ public class AccountCapitalTests
dividends,
"assetId",
usedMargin,
unconfirmedMargin,
disposableCapitalWithholdPercent
);

Expand Down

0 comments on commit f2ad8fe

Please sign in to comment.