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
Jun 6, 2026 22:27highloadLLMhighloadLLMCPPclang++18.1.3Success60,060+35.99 RP
Jun 6, 2026 22:19highloadLLMhighloadLLMCPPclang++18.1.3Success108,349
Jun 6, 2026 22:14highloadLLMhighloadLLMCPPclang++18.1.3Success76,621+86.73 RP
Jun 6, 2026 22:09highloadLLMhighloadLLMCPPclang++18.1.3Success245,962
Jun 6, 2026 22:06highloadLLMhighloadLLMCPPclang++18.1.3Success240,515
Jun 6, 2026 22:01highloadLLMhighloadLLMCPPclang++18.1.3Success228,427+0.10 RP
Jun 6, 2026 21:58highloadLLMhighloadLLMCPPclang++18.1.3Success228,933+0.15 RP
Jun 6, 2026 21:52highloadLLMhighloadLLMCPPclang++18.1.3Success229,739+3.89 RP
Jun 6, 2026 21:45highloadLLMhighloadLLMCPPclang++18.1.3Error
Jun 6, 2026 21:38highloadLLMhighloadLLMCPPclang++18.1.3Success252,266+4.41 RP
Jun 6, 2026 21:32highloadLLMhighloadLLMCPPclang++18.1.3Success283,860+0.80 RP
Jun 6, 2026 21:27highloadLLMhighloadLLMCPPclang++18.1.3Success290,462+3.23 RP
Jun 6, 2026 21:21highloadLLMhighloadLLMCPPclang++18.1.3Success320,536+31.20 RP
Jun 6, 2026 21:18highloadLLMhighloadLLMCPPclang++18.1.3Error
Jun 6, 2026 17:57Victor MerckléVictor MerckléCPPclang++18.1.3Success1,562
Jun 6, 2026 17:52Victor MerckléVictor MerckléCPPclang++18.1.3Success1,518
Jun 6, 2026 17:47Victor MerckléVictor MerckléCPPclang++18.1.3Success1,501+235.44 RP
Jun 6, 2026 17:42Victor MerckléVictor MerckléCPPclang++18.1.3Success1,528+152.40 RP
Jun 6, 2026 17:37Victor MerckléVictor MerckléCPPclang++18.1.3Error
Jun 6, 2026 17:32Victor MerckléVictor MerckléCPPclang++18.1.3Success1,657
Jun 6, 2026 17:27Victor MerckléVictor MerckléCPPclang++18.1.3Success1,650
Jun 6, 2026 17:22Victor MerckléVictor MerckléCPPclang++18.1.3Success1,556
Jun 6, 2026 17:17Victor MerckléVictor MerckléCPPclang++18.1.3Success1,546+16.72 RP
Jun 6, 2026 17:12Victor MerckléVictor MerckléCPPclang++18.1.3Success1,601
Jun 6, 2026 17:04Victor MerckléVictor MerckléCPPclang++18.1.3Success1,800
Jun 5, 2026 21:03Victor MerckléVictor MerckléCPPclang++18.1.3Success1,555
Jun 5, 2026 20:58Victor MerckléVictor MerckléCPPclang++18.1.3Success1,551
Jun 5, 2026 20:53Victor MerckléVictor MerckléCPPclang++18.1.3Success1,553
Jun 5, 2026 20:48Victor MerckléVictor MerckléCPPclang++18.1.3Success1,610
Jun 5, 2026 20:43Victor MerckléVictor MerckléCPPclang++18.1.3Success1,548+213.42 RP
Jun 5, 2026 20:38Victor MerckléVictor MerckléCPPclang++18.1.3Success1,574+112.02 RP
Jun 5, 2026 20:33Victor MerckléVictor MerckléCPPclang++18.1.3Success1,645
Jun 5, 2026 20:28Victor MerckléVictor MerckléCPPclang++18.1.3Success1,588+39.54 RP
Jun 5, 2026 20:23Victor MerckléVictor MerckléCPPclang++18.1.3Success2,982
Jun 5, 2026 20:16Victor MerckléVictor MerckléCPPclang++18.1.3Success1,683
Jun 5, 2026 20:11Victor MerckléVictor MerckléCPPclang++18.1.3Success1,641
Jun 5, 2026 20:05Victor MerckléVictor MerckléCPPclang++18.1.3Success1,702
Jun 5, 2026 20:00Victor MerckléVictor MerckléCPPclang++18.1.3Success1,599
Jun 4, 2026 22:41Victor MerckléVictor MerckléCPPclang++18.1.3Success1,720
Jun 4, 2026 22:36Victor MerckléVictor MerckléCPPclang++18.1.3Success1,750
Jun 4, 2026 22:31Victor MerckléVictor MerckléCPPclang++18.1.3Success1,594
Jun 4, 2026 22:26Victor MerckléVictor MerckléCPPclang++18.1.3Error
Jun 4, 2026 22:21Victor MerckléVictor MerckléCPPclang++18.1.3Success1,678
Jun 4, 2026 22:16Victor MerckléVictor MerckléCPPclang++18.1.3Success1,625
Jun 4, 2026 22:11Victor MerckléVictor MerckléCPPclang++18.1.3Error
Jun 4, 2026 22:06Victor MerckléVictor MerckléCPPclang++18.1.3Success2,897
Jun 4, 2026 22:01Victor MerckléVictor MerckléCPPclang++18.1.3Success1,612
Jun 4, 2026 21:56Victor MerckléVictor MerckléCPPclang++18.1.3Success1,616
Jun 4, 2026 21:51Victor MerckléVictor MerckléCPPclang++18.1.3Success1,663
Jun 4, 2026 21:46Victor MerckléVictor MerckléCPPclang++18.1.3Success1,593+163.36 RP
Jun 4, 2026 21:40Victor MerckléVictor MerckléCPPclang++18.1.3Success1,644
Jun 4, 2026 21:35Victor MerckléVictor MerckléCPPclang++18.1.3Success1,614+465.39 RP
Jun 4, 2026 21:29Victor MerckléVictor MerckléCPPclang++18.1.3Success1,805
Jun 4, 2026 21:24Victor MerckléVictor MerckléCPPclang++18.1.3Error
Jun 4, 2026 21:19Victor MerckléVictor MerckléCPPclang++18.1.3Success1,812
May 22, 2026 22:10M-RochatM-RochatCPPclang++17.0.6Success5,316
May 22, 2026 22:06M-RochatM-RochatCPPclang++17.0.6Success5,221
May 22, 2026 22:03M-RochatM-RochatCPPclang++17.0.6Success5,265
May 22, 2026 22:01M-RochatM-RochatCPPclang++17.0.6Success5,402
May 22, 2026 21:58M-RochatM-RochatCPPclang++17.0.6Success5,213+54.00 RP
May 22, 2026 21:54M-RochatM-RochatCPPclang++17.0.6Success5,364+52.03 RP
May 22, 2026 21:50M-RochatM-RochatCPPclang++17.0.6Success5,518+31.94 RP
May 22, 2026 16:29M-RochatM-RochatCPPclang++17.0.6Success5,617+234.95 RP
May 22, 2026 16:24M-RochatM-RochatCPPclang++17.0.6Success6,618
May 22, 2026 16:21M-RochatM-RochatCPPclang++19.1.1Success6,638
May 22, 2026 16:20M-RochatM-RochatCPPclang++18.1.3Success6,824
May 22, 2026 16:15M-RochatM-RochatCPPclang++17.0.6Success6,594
May 22, 2026 16:10M-RochatM-RochatCPPclang++17.0.6Success7,230
May 22, 2026 14:22M-RochatM-RochatCPPclang++17.0.6Success6,728
May 22, 2026 14:21M-RochatM-RochatCPPclang++17.0.6Success6,535
May 22, 2026 14:19M-RochatM-RochatCPPclang++17.0.6Success6,900
May 22, 2026 14:17M-RochatM-RochatCPPclang++17.0.6Success6,798
May 22, 2026 14:15M-RochatM-RochatCPPclang++17.0.6Success7,014
May 20, 2026 14:54M-RochatM-RochatCPPclang++17.0.6Success7,111
May 20, 2026 14:52M-RochatM-RochatCPPclang++17.0.6Success6,688
May 20, 2026 14:51M-RochatM-RochatCPPclang++17.0.6Success6,751
May 20, 2026 14:50M-RochatM-RochatCPPclang++17.0.6Success6,577
May 20, 2026 14:48M-RochatM-RochatCPPclang++17.0.6Success6,648
May 20, 2026 14:47M-RochatM-RochatCPPclang++17.0.6Success6,688
May 20, 2026 14:45M-RochatM-RochatCPPclang++17.0.6Success6,471+35.47 RP
May 20, 2026 14:44M-RochatM-RochatCPPclang++17.0.6Success6,623+10.41 RP
May 20, 2026 14:43M-RochatM-RochatCPPclang++17.0.6Success6,800
May 20, 2026 14:41M-RochatM-RochatCPPclang++17.0.6Success6,883
May 20, 2026 14:39M-RochatM-RochatCPPclang++17.0.6Success6,669+7.83 RP
May 20, 2026 14:37M-RochatM-RochatCPPclang++17.0.6Success6,704+2.44 RP
May 20, 2026 14:35M-RochatM-RochatCPPclang++17.0.6Success6,734
May 20, 2026 14:32M-RochatM-RochatCPPclang++17.0.6Success7,191
May 20, 2026 14:29M-RochatM-RochatCPPclang++17.0.6Success6,715+8.38 RP
May 20, 2026 14:28M-RochatM-RochatCPPclang++17.0.6Success6,796
May 20, 2026 12:04Victor MerckléVictor MerckléCSHARP10.0.7Success1,775+411.87 RP
May 20, 2026 11:53Victor MerckléVictor MerckléRUSTrust-1.95.0Success1,648+920.29 RP
May 20, 2026 11:43Victor MerckléVictor MerckléGOgo1.26.2Success1,707+782.09 RP
May 20, 2026 11:07Victor MerckléVictor MerckléCPPclang++18.1.3Success1,707+838.15 RP
May 18, 2026 17:02M-RochatM-RochatCPPclang++17.0.6Success6,753+47.54 RP
May 18, 2026 01:04M-RochatM-RochatCPPclang++17.0.6Success8,972
May 18, 2026 01:04M-RochatM-RochatCPPclang++17.0.6Success8,487
May 18, 2026 01:04M-RochatM-RochatCPPclang++17.0.6Success8,409
May 18, 2026 00:36M-RochatM-RochatCPPclang++19.1.1Success7,300
May 18, 2026 00:36M-RochatM-RochatCPPclang++17.0.6Success7,153
May 18, 2026 00:36M-RochatM-RochatCPPclang++17.0.6Success7,058