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
May 5, 2026 09:25Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 5, 2026 09:16Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 5, 2026 09:12Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 5, 2026 09:09Victor MerckléVictor MerckléRUSTrust-1.95.0Error
May 5, 2026 09:07Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 5, 2026 09:00Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,909+43.54 RP
May 5, 2026 08:50Victor MerckléVictor MerckléZIG0.16.0Error
May 5, 2026 08:41Victor MerckléVictor MerckléRUSTrust-1.95.0Error
May 5, 2026 08:35Victor MerckléVictor MerckléGOgo1.26.2Error
May 5, 2026 08:27Victor MerckléVictor MerckléCSHARP10.0.7Error
May 5, 2026 08:21Victor MerckléVictor MerckléZIG0.16.0Error
May 5, 2026 08:17Victor MerckléVictor MerckléRUSTrust-1.95.0Error
May 5, 2026 08:14olliecrowolliecrowCPPclang++18.1.3Success5,195
May 5, 2026 08:14Victor MerckléVictor MerckléZIG0.16.0Error
May 5, 2026 05:32olliecrowolliecrowRUSTrust-1.94.0Success5,081
May 5, 2026 04:28olliecrowolliecrowGOgo1.26.2Success6,166
May 5, 2026 02:20olliecrowolliecrowGOgo1.26.2Success5,969
May 5, 2026 02:09olliecrowolliecrowGOgo1.26.2Success6,386
May 5, 2026 01:59olliecrowolliecrowZIG0.14.0Success5,427
May 5, 2026 01:51olliecrowolliecrowZIG0.14.0Success5,485
May 5, 2026 01:45olliecrowolliecrowCPPclang++18.1.3Success5,151
May 4, 2026 22:00olliecrowolliecrowCPPclang++18.1.3Success5,236
May 4, 2026 13:01Victor MerckléVictor MerckléCPPg++14.2.0Success124,281
May 4, 2026 12:16Victor MerckléVictor MerckléCPPg++14.2.0Error
May 4, 2026 11:57Victor MerckléVictor MerckléCPPclang++18.1.3Error+978.03 RP
May 4, 2026 11:51Victor MerckléVictor MerckléCPPg++14.2.0Success389,178
May 4, 2026 11:45Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 4, 2026 11:21Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 4, 2026 11:14Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 1, 2026 09:35Dominique GarmierDominique GarmierCPPg++14.2.0Success16,943
May 1, 2026 09:34Dominique GarmierDominique GarmierCPPclang++20.1.2Success13,849
May 1, 2026 09:32Dominique GarmierDominique GarmierCPPg++10.5.0Success17,429
May 1, 2026 05:16olliecrowolliecrowGOgo1.26.2Success5,956
May 1, 2026 04:45olliecrowolliecrowCPPg++10.5.0Success5,564
May 1, 2026 00:13olliecrowolliecrowCPPg++10.5.0Success5,786
Apr 30, 2026 15:12Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,925+940.92 RP
Apr 30, 2026 15:05Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Apr 30, 2026 14:48Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Apr 30, 2026 14:06Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Apr 30, 2026 13:59Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Apr 30, 2026 13:52Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Apr 30, 2026 13:38Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Apr 30, 2026 13:11Victor MerckléVictor MerckléGOgo1.26.2Success1,970+3'973.99 RP
Apr 30, 2026 12:14Charles CabergsCharles CabergsCPPg++13.3.0Success35,220+16.08 RP
Apr 30, 2026 11:57Victor MerckléVictor MerckléCSHARP10.0.7Success3,120+1'786.49 RP
Apr 30, 2026 11:40Victor MerckléVictor MerckléZIG0.16.0Success2,834+1'998.01 RP
Apr 30, 2026 11:27Victor MerckléVictor MerckléCPPg++14.2.0Success3,054+3'032.96 RP
Apr 30, 2026 10:45Victor MerckléVictor MerckléCPPg++14.2.0Success112,054
Apr 30, 2026 10:30Victor MerckléVictor MerckléCPPg++14.2.0Success116,948
Apr 30, 2026 10:23Victor MerckléVictor MerckléCPPg++14.2.0Success112,090
Apr 30, 2026 10:00Victor MerckléVictor MerckléCPPg++14.2.0Success112,880
Apr 30, 2026 09:39Victor MerckléVictor MerckléCPPg++14.2.0Success126,704
Apr 29, 2026 23:20olliecrowolliecrowGOgo1.26.2Success6,148
Apr 29, 2026 23:15Charles CabergsCharles CabergsCPPg++13.3.0Success37,335+98.35 RP
Apr 29, 2026 12:21olliecrowolliecrowCPPg++13.3.0Success5,284
Apr 29, 2026 11:35Dominique GarmierDominique GarmierCPPclang++18.1.3Success15,301
Apr 29, 2026 07:20olliecrowolliecrowRUSTrust-1.95.0Success5,104
Apr 29, 2026 07:01olliecrowolliecrowGOgo1.26.2Success5,989
Apr 28, 2026 23:26Charles CabergsCharles CabergsCPPg++13.3.0Success61,101
Apr 28, 2026 23:26olliecrowolliecrowCPPg++10.5.0Success5,661
Apr 28, 2026 13:43Dominique GarmierDominique GarmierCPPclang++18.1.3Success100,775
Apr 28, 2026 12:46Dominique GarmierDominique GarmierCPPclang++20.1.2Success63,778
Apr 28, 2026 12:42Dominique GarmierDominique GarmierCPPclang++18.1.3Success15,371
Apr 28, 2026 12:41Dominique GarmierDominique GarmierCPPclang++20.1.2Success14,379
Apr 28, 2026 12:34Dominique GarmierDominique GarmierCPPg++13.3.0Success19,329
Apr 28, 2026 10:46Victor MerckléVictor MerckléCPPg++14.2.0Success129,856
Apr 28, 2026 10:39Victor MerckléVictor MerckléCPPg++14.2.0Success128,201
Apr 28, 2026 10:10Victor MerckléVictor MerckléCPPg++14.2.0Success118,942
Apr 28, 2026 09:58Victor MerckléVictor MerckléCPPg++14.2.0Success120,357
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