Cross-Margin Liquidation Engine yenw0d

Simulate a cross-margin derivatives engine: process trades, track account equity, and liquidate undercollateralized accounts as fast as possible.

Accounts are funded with a USD deposit and trade instruments whose prices change over time. When a price update causes an account’s equity to fall below 1% of its total position notional, the account must be liquidated.

Definitions

  • Account equity = balance + Σ(size_i * price_i) - Σ(total_paid_i)
  • Total position notional = Σ(|size_i| * price_i)
  • Total paid for instrument i = signed sum of trade_size * price_at_trade_time across all trades
  • Margin rule: liquidate if equity < total_notional / 100 after any price update

Input

One command per line on STDIN:

  • a <balance> – create account with USD balance (IDs start at 0, incrementing)
  • p <instrument_idx> <price> – set/update instrument price (0-indexed)
  • t <account_idx> <instrument_idx> <size> – trade size (signed) at current price
  • Final line: <account_idx> – query this account and terminate

Output

On each price update, liquidate all accounts violating the margin rule. For each liquidation, print:

liquidate <account_id> <equity> <position_notional>

Liquidation order: largest total position notional first, then account ID descending as tie-breaker. Liquidated accounts have their balance and positions cleared.

For the final query, print <equity> <notional> for the requested account.

Constraints

  • Accounts: <= 100,000
  • Instruments: <= 1,000
  • Price range: 100 to 1,000,000
  • Trade size range: 1 to 10,000

Example

a 100
p 0 100
t 0 0 10
p 0 90
0

Output:

liquidate 0 0 900
0 0
Date AuthorLanguageStatus Score
Oct 14, 2026 02:30Karthik ReddyKarthik ReddyRUSTrust-1.95.0Error
Oct 14, 2026 01:23Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 01:22Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+58.27 RP
Oct 14, 2026 01:22Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 00:26Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 00:25Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 00:22Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+295.16 RP
Oct 13, 2026 23:31Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,663
Oct 13, 2026 23:31Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,633
Oct 13, 2026 23:28Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,660
Oct 10, 2026 06:40janwwwjanwwwCPPclang++20.1.2Error+4'995.87 RP
Oct 9, 2026 23:08highload-churnerhighload-churnerCPPclang++18.1.3Success2,994
Oct 9, 2026 22:57highload-churnerhighload-churnerCPPg++14.2.0Success2,975
Oct 9, 2026 22:56highload-churnerhighload-churnerCPPg++14.2.0Success3,192
Oct 9, 2026 22:39highload-churnerhighload-churnerCPPg++14.2.0Success3,094
Oct 9, 2026 22:34highload-churnerhighload-churnerCPPg++14.2.0Success3,214
Oct 9, 2026 22:28highload-churnerhighload-churnerCPPg++14.2.0Success2,962+163.76 RP
Oct 9, 2026 22:15highload-churnerhighload-churnerCPPg++14.2.0Success3,442
Oct 9, 2026 22:14highload-churnerhighload-churnerCPPg++14.2.0Success3,121
Oct 9, 2026 22:05highload-churnerhighload-churnerCPPg++14.2.0Success3,753
Oct 9, 2026 21:58highload-churnerhighload-churnerCPPg++14.2.0Success3,113+176.51 RP
Oct 9, 2026 21:34highload-churnerhighload-churnerCPPg++14.2.0Success3,294+40.02 RP
Oct 9, 2026 21:22highload-churnerhighload-churnerCPPg++14.2.0Success3,338+2'809.46 RP
Oct 9, 2026 16:17highload-churnerhighload-churnerCPPg++14.2.0Success53,663+186.35 RP
Oct 9, 2026 14:32Karthik ReddyKarthik ReddyCSHARP9.0.18Success2,010
Oct 9, 2026 14:23Karthik ReddyKarthik ReddyCSHARP9.0.18Success2,169
Oct 9, 2026 13:29Karthik ReddyKarthik ReddyGOgo1.26.2Error
Oct 9, 2026 12:40Karthik ReddyKarthik ReddyGOgo1.26.2Success1,668
Oct 9, 2026 11:36Karthik ReddyKarthik ReddyGOgo1.26.2Success1,661
Oct 9, 2026 10:40Karthik ReddyKarthik ReddyGOgo1.26.2Success1,680
Oct 9, 2026 09:16Karthik ReddyKarthik ReddyGOgo1.26.2Success1,690
Oct 9, 2026 08:14Karthik ReddyKarthik ReddyGOgo1.26.2Success1,701
Oct 9, 2026 07:51Karthik ReddyKarthik ReddyZIG0.15.1Error
Oct 9, 2026 07:09Karthik ReddyKarthik ReddyRUSTrust-1.95.0Error
Oct 7, 2026 18:31Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+614.22 RP
Oct 7, 2026 18:29Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:27Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:27Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:26Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:25Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:23Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,709
Oct 7, 2026 18:20Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:14Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+347.23 RP
Oct 7, 2026 18:07Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 7, 2026 18:04Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+486.62 RP
Oct 7, 2026 17:58Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+273.37 RP
Oct 7, 2026 17:51Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+739.45 RP
Oct 7, 2026 02:16Karthik ReddyKarthik ReddyCPPg++13.3.0Success2,436
Oct 7, 2026 02:13Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 02:12Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 02:11Karthik ReddyKarthik ReddyCPPg++13.3.0Success2,434
Oct 7, 2026 02:09Karthik ReddyKarthik ReddyCPPg++13.3.0Error+562.55 RP
Oct 7, 2026 02:08Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 02:06Karthik ReddyKarthik ReddyCPPg++13.3.0Error+309.86 RP
Oct 7, 2026 02:05Karthik ReddyKarthik ReddyCPPg++13.3.0Success3,278
Oct 7, 2026 02:04Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 02:03Karthik ReddyKarthik ReddyCPPg++13.3.0Error+129.98 RP
Oct 7, 2026 01:59Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 01:58Karthik ReddyKarthik ReddyCPPg++13.3.0Error+445.38 RP
Oct 7, 2026 01:53Karthik ReddyKarthik ReddyCPPg++13.3.0Error+2'959.46 RP
Oct 7, 2026 01:51Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 01:49Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 7, 2026 01:44Karthik ReddyKarthik ReddyCPPg++13.3.0Error
Oct 6, 2026 07:42janwwwjanwwwCPPg++14.2.0Success314,644+31.78 RP
Sep 26, 2026 17:39Kevin HeaveyKevin HeaveyCSHARP9.0.18Success1,663+1'387.88 RP
Sep 26, 2026 17:37Kevin HeaveyKevin HeaveyGOgo1.26.2Success1,611+1'800.10 RP
Sep 26, 2026 17:36Kevin HeaveyKevin HeaveyZIG0.15.1Success1,671+1'426.56 RP
Sep 26, 2026 17:35Kevin HeaveyKevin HeaveyRUSTrust-1.95.0Success1,736+1'030.00 RP
Sep 25, 2026 23:29Kevin HeaveyKevin HeaveyCPPg++13.3.0Success1,548+1'092.58 RP
Sep 25, 2026 23:25Kevin HeaveyKevin HeaveyCPPg++13.3.0Success1,721
Sep 25, 2026 23:21Kevin HeaveyKevin HeaveyCPPg++13.3.0Success1,691+1'817.32 RP
Sep 25, 2026 22:55Kevin HeaveyKevin HeaveyCPPg++13.3.0Success1,998+5'204.63 RP
Sep 23, 2026 18:32Matthias GörgensMatthias GörgensCPPclang++19.1.1Success128,157+78.03 RP
Sep 23, 2026 18:30Matthias GörgensMatthias GörgensCPPclang++19.1.1Error
Sep 23, 2026 18:23Matthias GörgensMatthias GörgensCPPclang++19.1.1Error
Sep 18, 2026 16:36Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success262,396
Sep 18, 2026 16:31Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success250,547
Sep 18, 2026 16:24Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success10,474
Sep 17, 2026 19:43Andrew EpsteinAndrew EpsteinZIG0.15.1Success2,194+1'230.10 RP
Sep 17, 2026 19:35Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success2,166
Sep 17, 2026 19:25Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success2,184
Sep 17, 2026 19:25Andrew EpsteinAndrew EpsteinZIG0.15.1Success3,046
Sep 17, 2026 19:25Andrew EpsteinAndrew EpsteinCSHARP9.0.15Success2,253
Sep 17, 2026 19:24Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success2,114+231.94 RP
Sep 17, 2026 19:16Andrew EpsteinAndrew EpsteinCSHARP9.0.15Success2,162+1'134.95 RP
Sep 17, 2026 19:15Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success2,223+133.52 RP
Sep 17, 2026 19:11Andrew EpsteinAndrew EpsteinCSHARP9.0.15Success3,721
Sep 17, 2026 19:09Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success3,042
Sep 17, 2026 19:09Andrew EpsteinAndrew EpsteinZIG0.15.1Success3,005+1'485.15 RP
Sep 17, 2026 19:09Andrew EpsteinAndrew EpsteinGOgo1.26.2Success2,269+187.82 RP
Sep 17, 2026 18:52Andrew EpsteinAndrew EpsteinZIG0.15.1Error
Sep 17, 2026 18:51Andrew EpsteinAndrew EpsteinCSHARP9.0.15Success3,778
Sep 17, 2026 18:50Andrew EpsteinAndrew EpsteinGOgo1.26.2Success4,262
Sep 17, 2026 18:46Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success3,075
Sep 17, 2026 18:35Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success2,119
Sep 15, 2026 22:10Josu San MartinJosu San MartinCPPclang++18.1.3Error
Sep 15, 2026 21:52Josu San MartinJosu San MartinCPPclang++18.1.3Error
Sep 15, 2026 21:24Josu San MartinJosu San MartinCPPclang++18.1.3Error
Sep 15, 2026 21:01Josu San MartinJosu San MartinCPPclang++18.1.3Error
Sep 15, 2026 20:16Josu San MartinJosu San MartinCPPclang++18.1.3Error