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
Aug 3, 2026 11:00Victor MerckléVictor MerckléCPPclang++18.1.3Success1,327
Aug 3, 2026 10:50Victor MerckléVictor MerckléCPPclang++18.1.3Success1,385
Aug 3, 2026 10:39Victor MerckléVictor MerckléCPPg++14.2.0Success1,569
Aug 3, 2026 10:32Victor MerckléVictor MerckléCPPg++14.2.0Success1,552
Aug 3, 2026 03:40Victor MerckléVictor MerckléCPPg++14.2.0Success1,571
Aug 3, 2026 03:35Victor MerckléVictor MerckléCPPclang++18.1.3Success1,461
Aug 3, 2026 03:30Victor MerckléVictor MerckléCPPg++14.2.0Success1,567
Aug 3, 2026 03:20Victor MerckléVictor MerckléCPPg++14.2.0Success1,534
Aug 3, 2026 03:15Victor MerckléVictor MerckléCPPg++14.2.0Success1,498
Aug 3, 2026 03:10Victor MerckléVictor MerckléCPPg++14.2.0Success1,439
Aug 3, 2026 03:02Victor MerckléVictor MerckléCPPg++14.2.0Success1,719+5.00 RP
Aug 2, 2026 20:31Victor MerckléVictor MerckléCPPg++14.2.0Success1,436
Aug 2, 2026 20:26Victor MerckléVictor MerckléCPPg++14.2.0Success1,626
Aug 2, 2026 20:18Victor MerckléVictor MerckléCPPg++14.2.0Success1,408
Jul 31, 2026 06:16TonyTonyCPPg++10.5.0Success279,162+35.82 RP
Jul 14, 2026 11:46Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success1,709+1'736.15 RP
Jul 14, 2026 10:49Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success2,430+3'947.23 RP
Jul 14, 2026 01:18Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success59,524+168.00 RP
Jul 13, 2026 22:34Victor MerckléVictor MerckléCPPclang++18.1.3Success1,251
Jul 13, 2026 22:30Victor MerckléVictor MerckléCPPg++14.2.0Success1,422
Jul 13, 2026 22:23Victor MerckléVictor MerckléCPPg++14.2.0Success1,402
Jul 11, 2026 04:09RayRayCPPg++10.5.0Success276,287+36.19 RP
Jul 10, 2026 18:40Genos0Genos0CPPg++10.5.0Success309,155+32.35 RP
Jul 9, 2026 19:12Victor MerckléVictor MerckléCPPclang++18.1.3Error
Jul 9, 2026 19:03Victor MerckléVictor MerckléCPPclang++18.1.3Success4,959
Jul 9, 2026 18:50Victor MerckléVictor MerckléCPPclang++18.1.3Success1,239
Jul 9, 2026 18:45Victor MerckléVictor MerckléCPPclang++18.1.3Success1,272
Jul 9, 2026 18:40Victor MerckléVictor MerckléCPPclang++18.1.3Success2,336
Jul 9, 2026 18:21Victor MerckléVictor MerckléCPPclang++18.1.3Success1,244
Jul 9, 2026 18:15Victor MerckléVictor MerckléCPPclang++18.1.3Success4,573
Jul 7, 2026 22:46Victor MerckléVictor MerckléZIG0.16.0Success1,321+90.59 RP
Jul 7, 2026 17:58Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,257+509.43 RP
Jul 7, 2026 15:40Victor MerckléVictor MerckléZIG0.16.0Success1,337+722.67 RP
Jul 7, 2026 06:04Victor MerckléVictor MerckléCSHARP10.0.7Success1,341+980.44 RP
Jul 7, 2026 05:01Victor MerckléVictor MerckléZIG0.16.0Success1,582
Jul 7, 2026 04:25Victor MerckléVictor MerckléZIG0.16.0Success1,565
Jul 7, 2026 03:59Victor MerckléVictor MerckléGOgo1.26.2Success1,326+848.04 RP
Jul 7, 2026 03:52Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,343+428.47 RP
Jul 7, 2026 02:07Victor MerckléVictor MerckléCPPclang++18.1.3Success2,435
Jul 7, 2026 01:59Victor MerckléVictor MerckléCPPclang++18.1.3Success1,845
Jul 6, 2026 23:05Victor MerckléVictor MerckléCPPclang++18.1.3Success1,235+78.30 RP
Jul 6, 2026 22:57Victor MerckléVictor MerckléCPPclang++18.1.3Success1,336
Jul 6, 2026 22:50Victor MerckléVictor MerckléCPPclang++18.1.3Success1,310
Jul 6, 2026 22:45Victor MerckléVictor MerckléCPPclang++18.1.3Success1,285
Jul 6, 2026 22:40Victor MerckléVictor MerckléCPPclang++18.1.3Success1,328
Jul 6, 2026 22:31Victor MerckléVictor MerckléCPPclang++18.1.3Success1,241+77.54 RP
Jul 6, 2026 22:26Victor MerckléVictor MerckléCPPclang++18.1.3Success1,247+1'234.64 RP
Jul 6, 2026 22:14Victor MerckléVictor MerckléCPPclang++18.1.3Success1,839+5.00 RP
Jul 5, 2026 23:32Victor MerckléVictor MerckléCPPclang++18.1.3Success1,408
Jul 3, 2026 13:46Victor MerckléVictor MerckléCPPclang++18.1.3Success1,424
Jul 3, 2026 13:41Victor MerckléVictor MerckléCPPclang++18.1.3Success1,413
Jul 3, 2026 13:36Victor MerckléVictor MerckléCPPclang++18.1.3Success1,426
Jul 3, 2026 13:31Victor MerckléVictor MerckléCPPclang++18.1.3Success1,433
Jul 3, 2026 13:26Victor MerckléVictor MerckléCPPclang++18.1.3Success1,452
Jul 3, 2026 13:20Victor MerckléVictor MerckléCPPclang++18.1.3Success1,351+321.58 RP
Jul 3, 2026 13:13Victor MerckléVictor MerckléCPPclang++18.1.3Success1,429
Jul 3, 2026 13:08Victor MerckléVictor MerckléCPPclang++18.1.3Success1,475
Jul 2, 2026 05:49A_ShamanA_ShamanCPPg++10.5.0Error
Jul 2, 2026 05:34A_ShamanA_ShamanCPPg++10.5.0Success270,675
Jul 2, 2026 05:23A_ShamanA_ShamanCPPg++10.5.0Success106,658
Jul 2, 2026 05:15A_ShamanA_ShamanCPPg++10.5.0Error
Jul 2, 2026 05:05A_ShamanA_ShamanCPPg++10.5.0Success257,595
Jul 2, 2026 04:48A_ShamanA_ShamanCPPg++10.5.0Success141,432
Jul 2, 2026 04:20A_ShamanA_ShamanCPPg++10.5.0Success112,038
Jun 30, 2026 16:02Victor MerckléVictor MerckléCPPclang++18.1.3Success1,381+20.94 RP
Jun 30, 2026 15:57Victor MerckléVictor MerckléCPPclang++18.1.3Success1,408
Jun 30, 2026 15:49Victor MerckléVictor MerckléCPPg++14.2.0Success7,121
Jun 30, 2026 03:31Victor MerckléVictor MerckléGOgo1.26.2Success1,516
Jun 29, 2026 01:12Victor MerckléVictor MerckléGOgo1.26.2Success1,494+199.93 RP
Jun 28, 2026 01:57Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,425+87.54 RP
Jun 28, 2026 01:41Victor MerckléVictor MerckléGOgo1.26.2Success1,556
Jun 27, 2026 10:17Victor MerckléVictor MerckléGOgo1.26.2Success1,540+62.64 RP
Jun 27, 2026 05:49Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,451
Jun 27, 2026 05:44Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,443+90.06 RP
Jun 27, 2026 05:39Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,462+213.04 RP
Jun 26, 2026 18:51A_ShamanA_ShamanCPPg++10.5.0Success115,277
Jun 26, 2026 18:47A_ShamanA_ShamanCPPg++10.5.0Success113,495
Jun 26, 2026 18:42A_ShamanA_ShamanCPPg++10.5.0Success106,876
Jun 26, 2026 18:35A_ShamanA_ShamanCPPg++10.5.0Success119,562
Jun 26, 2026 18:32A_ShamanA_ShamanCPPg++10.5.0Success103,299
Jun 21, 2026 13:31Zhou180Zhou180CPPclang++20.1.2Success1,971+1'468.66 RP
Jun 21, 2026 10:26Zhou180Zhou180CPPclang++20.1.2Success2,774+25.80 RP
Jun 21, 2026 10:26Zhou180Zhou180CPPg++14.2.0Success3,042
Jun 21, 2026 10:24Zhou180Zhou180CPPg++10.5.0Success2,851
Jun 21, 2026 10:22Zhou180Zhou180CPPg++10.5.0Success2,794+136.76 RP
Jun 21, 2026 10:18Zhou180Zhou180CPPg++10.5.0Success2,905+10.63 RP
Jun 21, 2026 10:15Zhou180Zhou180CPPg++10.5.0Success2,914+40.73 RP
Jun 21, 2026 10:12Zhou180Zhou180CPPg++10.5.0Success3,055
Jun 21, 2026 10:08Zhou180Zhou180CPPg++10.5.0Success3,094
Jun 21, 2026 10:03Zhou180Zhou180CPPg++10.5.0Success3,133
Jun 21, 2026 10:00Zhou180Zhou180CPPg++10.5.0Success3,026
Jun 21, 2026 08:25Zhou180Zhou180CPPg++10.5.0Success2,949+63.19 RP
Jun 21, 2026 08:23Zhou180Zhou180CPPg++10.5.0Success3,011
Jun 21, 2026 08:21Zhou180Zhou180CPPg++10.5.0Success3,129
Jun 21, 2026 08:19Zhou180Zhou180CPPg++10.5.0Success3,005+66.21 RP
Jun 21, 2026 08:17Zhou180Zhou180CPPg++14.2.0Success3,066+175.16 RP
Jun 21, 2026 08:16Zhou180Zhou180CPPclang++18.1.3Success3,240+1'850.17 RP
Jun 21, 2026 08:12Zhou180Zhou180CPPclang++18.1.3Success8,089+138.07 RP
Jun 21, 2026 08:07Zhou180Zhou180CPPclang++18.1.3Error
Jun 21, 2026 08:02Zhou180Zhou180CPPclang++18.1.3Success9,106+1'023.26 RP