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 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
May 18, 2026 00:33M-RochatM-RochatCPPclang++18.1.3Success7,377
May 18, 2026 00:33M-RochatM-RochatCPPclang++20.1.2Success7,180
May 18, 2026 00:33M-RochatM-RochatCPPclang++17.0.6Success6,977+27.60 RP
May 18, 2026 00:31M-RochatM-RochatCPPclang++18.1.3Success7,114+142.41 RP
May 18, 2026 00:31M-RochatM-RochatCPPg++13.3.0Success7,867
May 18, 2026 00:31M-RochatM-RochatCPPg++14.2.0Success7,931
May 18, 2026 00:28M-RochatM-RochatCPPg++13.3.0Success10,746
May 18, 2026 00:28M-RochatM-RochatCPPg++13.3.0Success23,424
May 18, 2026 00:28M-RochatM-RochatCPPg++13.3.0Success14,694
May 18, 2026 00:26M-RochatM-RochatCPPg++13.3.0Success7,916+619.06 RP
May 18, 2026 00:24M-RochatM-RochatCPPg++13.3.0Success15,523+168.83 RP
May 18, 2026 00:22M-RochatM-RochatCPPg++13.3.0Success21,036+15.82 RP
May 18, 2026 00:20M-RochatM-RochatCPPg++13.3.0Success21,760+79.16 RP
May 18, 2026 00:18M-RochatM-RochatCPPg++13.3.0Success27,871
May 18, 2026 00:18M-RochatM-RochatCPPg++13.3.0Success30,016
May 18, 2026 00:16M-RochatM-RochatCPPg++13.3.0Success31,893+30.06 RP
May 18, 2026 00:16M-RochatM-RochatCPPg++13.3.0Success26,288+66.85 RP
May 18, 2026 00:14M-RochatM-RochatCPPg++13.3.0Success35,275+219.02 RP
May 17, 2026 13:24Victor MerckléVictor MerckléZIG0.16.0Success1,673+3'187.64 RP
May 17, 2026 09:29olliecrowolliecrowRUSTrust-1.94.0Success5,161
May 17, 2026 08:11M-RochatM-RochatCPPg++13.3.0Success158,850
May 17, 2026 08:03M-RochatM-RochatCPPg++13.3.0Success155,289
May 17, 2026 07:21M-RochatM-RochatCPPg++14.2.0Success201,684
May 17, 2026 06:31M-RochatM-RochatCPPg++14.2.0Success231,592
May 17, 2026 06:30M-RochatM-RochatCPPg++14.2.0Success224,454
May 17, 2026 06:30M-RochatM-RochatCPPg++14.2.0Success222,967
May 16, 2026 23:56M-RochatM-RochatCPPg++13.3.0Error
May 16, 2026 23:56M-RochatM-RochatCPPg++13.3.0Error
May 16, 2026 23:56M-RochatM-RochatCPPg++13.3.0Success156,019
May 16, 2026 20:34M-RochatM-RochatCPPg++13.3.0Success202,033
May 16, 2026 19:45M-RochatM-RochatCPPg++13.3.0Success155,130+4.02 RP
May 16, 2026 19:41M-RochatM-RochatCPPg++13.3.0Error
May 16, 2026 19:40M-RochatM-RochatCPPg++13.3.0Error
May 16, 2026 19:09M-RochatM-RochatCPPg++13.3.0Success222,088
May 16, 2026 19:06M-RochatM-RochatCPPg++13.3.0Error
May 16, 2026 19:03M-RochatM-RochatCPPg++13.3.0Error
May 16, 2026 18:12olliecrowolliecrowZIG0.14.0Success5,503
May 16, 2026 16:40M-RochatM-RochatCPPg++13.3.0Success169,176
May 16, 2026 16:37M-RochatM-RochatCPPg++13.3.0Success175,859
May 16, 2026 16:35M-RochatM-RochatCPPg++13.3.0Success165,452+16.87 RP
May 16, 2026 16:16M-RochatM-RochatCPPg++13.3.0Success229,506+9.47 RP
May 16, 2026 15:50M-RochatM-RochatCPPg++13.3.0Success555,882
May 16, 2026 13:19M-RochatM-RochatCPPg++13.3.0Success293,272+0.16 RP
May 16, 2026 13:16M-RochatM-RochatCPPg++13.3.0Success308,398
May 16, 2026 13:13M-RochatM-RochatCPPg++14.2.0Success294,632+0.15 RP
May 16, 2026 13:11M-RochatM-RochatCPPg++13.3.0Success304,807
May 16, 2026 13:08M-RochatM-RochatCPPg++13.3.0Success310,409
May 16, 2026 13:06M-RochatM-RochatCPPg++13.3.0Success299,283
May 16, 2026 13:02M-RochatM-RochatCPPg++13.3.0Success296,117
May 16, 2026 13:01M-RochatM-RochatCPPg++13.3.0Success295,981+13.21 RP
May 16, 2026 10:42olliecrowolliecrowZIG0.14.0Success5,538
May 16, 2026 00:37olliecrowolliecrowRUSTrust-1.94.0Success5,690+5.00 RP
May 15, 2026 22:32olliecrowolliecrowGOgo1.26.2Success6,312
May 15, 2026 19:28M-RochatM-RochatCPPg++13.3.0Success390,945+25.58 RP
May 15, 2026 19:27M-RochatM-RochatCPPg++13.3.0Error
May 15, 2026 19:23M-RochatM-RochatCPPg++13.3.0Error
May 14, 2026 17:11Josu San MartinJosu San MartinCSHARP9.0.13Error
May 7, 2026 14:07Victor MerckléVictor MerckléCPPclang++18.1.3Success5,829
May 7, 2026 11:36Victor MerckléVictor MerckléCPPg++14.2.0Success3,631,248
May 7, 2026 11:20Victor MerckléVictor MerckléCPPclang++18.1.3Success5,844
May 7, 2026 11:16Victor MerckléVictor MerckléCPPclang++18.1.3Success6,551
May 7, 2026 11:09Victor MerckléVictor MerckléCPPclang++18.1.3Success12,653
May 7, 2026 09:36Victor MerckléVictor MerckléCPPclang++18.1.3Success5,398
May 7, 2026 09:33Victor MerckléVictor MerckléCPPclang++18.1.3Success1,992
May 7, 2026 09:13Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 7, 2026 09:11Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 7, 2026 09:04Victor MerckléVictor MerckléCPPclang++18.1.3Error
May 7, 2026 08:57Victor MerckléVictor MerckléCPPclang++18.1.3Error