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
Apr 28, 2026 09:50Victor MerckléVictor MerckléCPPg++14.2.0Success41,420+141.72 RP
Apr 28, 2026 09:19Victor MerckléVictor MerckléCPPg++14.2.0Success108,087
Apr 28, 2026 09:06Victor MerckléVictor MerckléCPPg++14.2.0Success100,293+33.50 RP
Apr 28, 2026 08:58Victor MerckléVictor MerckléCPPg++14.2.0Success389,437
Apr 28, 2026 08:41Victor MerckléVictor MerckléCPPg++14.2.0Success385,529
Apr 28, 2026 08:34Victor MerckléVictor MerckléCPPg++14.2.0Success390,444
Apr 28, 2026 08:25Victor MerckléVictor MerckléCPPg++14.2.0Success400,897
Apr 28, 2026 08:17Victor MerckléVictor MerckléCPPg++14.2.0Success394,675
Apr 28, 2026 08:05Victor MerckléVictor MerckléCPPg++14.2.0Success403,952
Apr 28, 2026 07:44Victor MerckléVictor MerckléCPPg++14.2.0Success371,748
Apr 28, 2026 07:24Victor MerckléVictor MerckléCPPg++14.2.0Success388,866
Apr 28, 2026 01:21Victor MerckléVictor MerckléCPPg++14.2.0Success151,033+41.16 RP
Apr 28, 2026 01:09Victor MerckléVictor MerckléCPPg++14.2.0Success399,194+25.05 RP
Apr 28, 2026 01:02Victor MerckléVictor MerckléCPPg++14.2.0Error
Apr 28, 2026 00:50Victor MerckléVictor MerckléCPPg++14.2.0Error
Apr 28, 2026 00:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Apr 27, 2026 23:10TudyMTudyMCPPg++14.2.0Success409,504
Apr 27, 2026 23:07TudyMTudyMCPPclang++18.1.3Success175,013
Apr 27, 2026 23:03TudyMTudyMCPPclang++20.1.2Success172,602
Apr 27, 2026 23:00TudyMTudyMCPPclang++20.1.2Success185,803
Apr 27, 2026 22:57TudyMTudyMCPPclang++20.1.2Success189,944
Apr 27, 2026 22:53TudyMTudyMCPPclang++20.1.2Success315,863
Apr 27, 2026 22:51TudyMTudyMCPPclang++20.1.2Success279,549
Apr 27, 2026 22:47TudyMTudyMCPPclang++20.1.2Success319,769
Apr 27, 2026 22:43TudyMTudyMCPPclang++20.1.2Success293,088
Apr 27, 2026 22:38TudyMTudyMCPPclang++20.1.2Success195,940
Apr 27, 2026 22:10TudyMTudyMCPPclang++20.1.2Success243,296
Apr 27, 2026 22:08TudyMTudyMCPPg++14.2.0Success267,288
Apr 27, 2026 22:04TudyMTudyMCPPclang++20.1.2Success172,930
Apr 27, 2026 22:00TudyMTudyMCPPclang++20.1.2Success168,151+20.85 RP
Apr 27, 2026 21:56TudyMTudyMCPPclang++20.1.2Error
Apr 27, 2026 21:52TudyMTudyMCPPg++14.2.0Error
Apr 27, 2026 12:49Charles CabergsCharles CabergsCPPg++13.3.0Success63,340
Apr 27, 2026 08:12olliecrowolliecrowGOgo1.26.2Success6,426
Apr 27, 2026 07:02olliecrowolliecrowRUSTrust-1.95.0Success5,297
Apr 27, 2026 06:34olliecrowolliecrowCPPg++13.3.0Success5,396
Apr 27, 2026 01:03Charles CabergsCharles CabergsCPPg++13.3.0Success60,070
Apr 26, 2026 22:23Charles CabergsCharles CabergsCPPg++13.3.0Success60,837
Apr 26, 2026 20:56TudyMTudyMCPPclang++20.1.2Success263,148
Apr 26, 2026 20:53TudyMTudyMCPPclang++20.1.2Success258,933+3.78 RP
Apr 26, 2026 20:40TudyMTudyMCPPclang++20.1.2Success297,048
Apr 26, 2026 20:38TudyMTudyMCPPclang++20.1.2Success290,860
Apr 26, 2026 20:36TudyMTudyMCPPg++14.2.0Success370,805
Apr 26, 2026 20:34TudyMTudyMCPPg++14.2.0Success356,563
Apr 26, 2026 17:51TudyMTudyMCPPg++10.5.0Success372,257
Apr 26, 2026 17:26TudyMTudyMCPPg++10.5.0Success287,008+34.84 RP
Apr 26, 2026 14:34olliecrowolliecrowGOgo1.26.2Success5,957
Apr 26, 2026 12:13olliecrowolliecrowCPPg++10.5.0Success5,940
Apr 26, 2026 12:03olliecrowolliecrowCPPg++10.5.0Success5,703
Apr 26, 2026 07:40olliecrowolliecrowRUSTrust-1.95.0Success5,405
Apr 25, 2026 10:05olliecrowolliecrowGOgo1.26.2Success6,222
Apr 24, 2026 08:17Dominique GarmierDominique GarmierCPPclang++18.1.3Success15,169
Apr 24, 2026 07:48Dominique GarmierDominique GarmierCPPclang++18.1.3Success13,918
Apr 24, 2026 07:46Dominique GarmierDominique GarmierCPPclang++18.1.3Success14,464
Apr 24, 2026 07:45Dominique GarmierDominique GarmierCPPclang++18.1.3Success15,809
Apr 24, 2026 07:44Dominique GarmierDominique GarmierCPPclang++18.1.3Success14,812
Apr 24, 2026 07:43Dominique GarmierDominique GarmierCPPclang++18.1.3Success13,500+55.72 RP
Apr 24, 2026 04:26olliecrowolliecrowRUSTrust-1.95.0Success5,047
Apr 23, 2026 20:25Donald LeeDonald LeeRUSTrust-1.95.0Success30,266+0.95 RP
Apr 23, 2026 19:07Donald LeeDonald LeeRUSTrust-1.95.0Success181,832
Apr 23, 2026 10:05Dominique GarmierDominique GarmierCPPclang++18.1.3Success16,987
Apr 23, 2026 10:03Dominique GarmierDominique GarmierCPPclang++18.1.3Success15,657
Apr 23, 2026 10:01Dominique GarmierDominique GarmierCPPclang++18.1.3Success16,057
Apr 23, 2026 09:15Dominique GarmierDominique GarmierCPPclang++18.1.3Success14,894
Apr 23, 2026 09:02Dominique GarmierDominique GarmierCPPclang++20.1.2Success15,625
Apr 23, 2026 09:01Dominique GarmierDominique GarmierCPPclang++18.1.3Success22,464
Apr 23, 2026 08:58Dominique GarmierDominique GarmierCPPclang++18.1.3Success24,457
Apr 23, 2026 08:55Dominique GarmierDominique GarmierCPPclang++18.1.3Success23,392
Apr 23, 2026 08:28Dominique GarmierDominique GarmierCPPclang++18.1.3Success78,017
Apr 23, 2026 08:26Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Apr 23, 2026 08:06Dominique GarmierDominique GarmierCPPclang++18.1.3Success15,320
Apr 23, 2026 08:00Dominique GarmierDominique GarmierCPPg++10.5.0Success16,812
Apr 23, 2026 07:58Dominique GarmierDominique GarmierCPPclang++18.1.3Success14,946
Apr 23, 2026 06:19olliecrowolliecrowGOgo1.26.2Success6,289
Apr 22, 2026 23:36Charles CabergsCharles CabergsCPPg++13.3.0Success59,874
Apr 22, 2026 22:03olliecrowolliecrowCPPg++10.5.0Success5,582
Apr 22, 2026 22:01olliecrowolliecrowRUSTrust-1.95.0Success5,299
Apr 22, 2026 20:47Dominique GarmierDominique GarmierCPPg++10.5.0Success18,366
Apr 22, 2026 20:25Dominique GarmierDominique GarmierCPPclang++18.1.3Success17,282
Apr 22, 2026 20:04Charles CabergsCharles CabergsCPPg++13.3.0Success58,998+6.67 RP
Apr 22, 2026 16:48olliecrowolliecrowCPPg++10.5.0Success5,550
Apr 22, 2026 14:53Dominique GarmierDominique GarmierCPPclang++18.1.3Success429,766
Apr 22, 2026 13:41BenBenCPPg++14.2.0Success116,810
Apr 22, 2026 12:02Dominique GarmierDominique GarmierCPPclang++18.1.3Success22,366
Apr 22, 2026 08:27olliecrowolliecrowCSHARP9.0.15Success7,342
Apr 22, 2026 08:02olliecrowolliecrowCPPg++10.5.0Success5,500
Apr 21, 2026 20:23olliecrowolliecrowCPPg++10.5.0Success6,172
Apr 21, 2026 18:50olliecrowolliecrowCPPg++10.5.0Success5,980
Apr 21, 2026 18:31olliecrowolliecrowCPPg++10.5.0Success6,244
Apr 21, 2026 17:39Charles CabergsCharles CabergsCPPg++13.3.0Success67,813
Apr 21, 2026 10:04Dominique GarmierDominique GarmierCPPclang++18.1.3Success25,900
Apr 21, 2026 09:54Dominique GarmierDominique GarmierCPPg++13.3.0Error
Apr 21, 2026 09:40Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Apr 21, 2026 09:07Charles CabergsCharles CabergsCPPg++13.3.0Success66,492
Apr 21, 2026 04:04olliecrowolliecrowCPPg++10.5.0Success6,252
Apr 21, 2026 03:23Charles CabergsCharles CabergsCPPg++13.3.0Success68,190
Apr 21, 2026 01:30Taylor DettlingTaylor DettlingRUSTrust-1.95.0Success268,197+37.29 RP
Apr 20, 2026 21:15Charles CabergsCharles CabergsCPPg++13.3.0Success63,184
Apr 20, 2026 20:22Charles CabergsCharles CabergsCPPg++13.3.0Error
Apr 20, 2026 19:09BenBenCPPg++14.2.0Success115,528+23.72 RP