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 20, 2026 19:02BenBenCPPclang++18.1.3Success159,132+31.82 RP
Apr 20, 2026 18:45BenBenCPPclang++18.1.3Success322,385+31.02 RP
Apr 20, 2026 18:45BenBenCPPclang++18.1.3Success367,901
Apr 20, 2026 18:45BenBenCPPg++14.2.0Success417,450
Apr 20, 2026 16:52BenBenCPPclang++18.1.3Error
Apr 20, 2026 16:52BenBenCPPg++13.3.0Error
Apr 20, 2026 16:51BenBenCPPclang++18.1.3Error
Apr 20, 2026 16:17Dominique GarmierDominique GarmierCPPg++13.3.0Error
Apr 20, 2026 15:41olliecrowolliecrowRUSTrust-1.94.0Success4,888+82.35 RP
Apr 20, 2026 15:38olliecrowolliecrowGOgo1.26.1Success7,023
Apr 20, 2026 15:36olliecrowolliecrowCPPg++13.3.0Success6,375
Apr 20, 2026 14:14Dominique GarmierDominique GarmierCPPg++13.3.0Error
Apr 20, 2026 12:53Dominique GarmierDominique GarmierCPPclang++18.1.3Success18,546
Apr 20, 2026 12:42Dominique GarmierDominique GarmierCPPclang++18.1.3Success16,658
Apr 19, 2026 09:41Charles CabergsCharles CabergsCPPg++13.3.0Success61,414+15.22 RP
Apr 19, 2026 05:47Charles CabergsCharles CabergsCPPg++13.3.0Success71,122
Apr 19, 2026 05:39Donald LeeDonald LeeRUSTrust-1.95.0Success30,353+312.11 RP
Apr 18, 2026 20:50Charles CabergsCharles CabergsCPPg++13.3.0Success70,283
Apr 18, 2026 16:50Charles CabergsCharles CabergsCPPg++13.3.0Success67,747+41.85 RP
Apr 18, 2026 16:04Donald LeeDonald LeeRUSTrust-1.95.0Success576,417+17.35 RP
Apr 18, 2026 14:37Charles CabergsCharles CabergsCPPg++13.3.0Success94,555+50.44 RP
Apr 18, 2026 01:28Charles CabergsCharles CabergsCPPg++13.3.0Success180,762+34.82 RP
Apr 18, 2026 00:02olliecrowolliecrowGOgo1.26.1Success7,028
Apr 17, 2026 20:53Charles CabergsCharles CabergsCPPg++13.3.0Success487,675+20.51 RP
Apr 17, 2026 20:12olliecrowolliecrowGOgo1.26.1Success7,529
Apr 17, 2026 20:09olliecrowolliecrowGOgo1.26.1Success6,910
Apr 17, 2026 20:06olliecrowolliecrowGOgo1.26.1Error
Apr 17, 2026 19:38Charles CabergsCharles CabergsCPPg++13.3.0Error
Apr 17, 2026 19:11olliecrowolliecrowGOgo1.26.1Success7,651
Apr 17, 2026 18:20olliecrowolliecrowRUSTrust-1.94.0Success5,274
Apr 17, 2026 18:08olliecrowolliecrowGOgo1.26.1Success6,431
Apr 17, 2026 18:00olliecrowolliecrowGOgo1.26.1Success7,070
Apr 17, 2026 16:36olliecrowolliecrowGOgo1.26.1Success6,590
Apr 17, 2026 03:33olliecrowolliecrowCSHARP9.0.14Success7,696
Apr 17, 2026 03:29olliecrowolliecrowCSHARP9.0.14Success8,691
Apr 17, 2026 03:15olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 02:53olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 02:47olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 02:43olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 02:42olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 02:37olliecrowolliecrowCSHARP9.0.15Success9,851
Apr 17, 2026 02:33olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 02:26olliecrowolliecrowZIG0.14.0Success5,880
Apr 17, 2026 02:15olliecrowolliecrowZIG0.14.0Success6,231
Apr 17, 2026 02:08olliecrowolliecrowCSHARP9.0.15Success10,089
Apr 17, 2026 02:01olliecrowolliecrowZIG0.14.0Success21,879
Apr 17, 2026 01:59olliecrowolliecrowCSHARP9.0.15Success7,297
Apr 17, 2026 01:55olliecrowolliecrowCSHARP9.0.15Success7,049+281.76 RP
Apr 17, 2026 01:44olliecrowolliecrowZIG0.14.0Success6,010
Apr 17, 2026 01:40olliecrowolliecrowCSHARP9.0.15Success8,796+148.54 RP
Apr 17, 2026 01:37olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 01:36olliecrowolliecrowZIG0.14.0Error
Apr 17, 2026 01:35olliecrowolliecrowZIG0.14.0Success6,946
Apr 17, 2026 01:33olliecrowolliecrowCSHARP9.0.15Success10,118+968.72 RP
Apr 17, 2026 01:30olliecrowolliecrowZIG0.14.0Success5,603+1'134.06 RP
Apr 17, 2026 00:17olliecrowolliecrowCPPclang++18.1.3Success5,513
Apr 17, 2026 00:07olliecrowolliecrowGOgo1.26.1Success7,014
Apr 17, 2026 00:04olliecrowolliecrowRUSTrust-1.94.0Success5,450
Apr 16, 2026 07:40olliecrowolliecrowRUSTrust-1.94.0Success5,351
Apr 14, 2026 21:22olliecrowolliecrowGOgo1.26.1Success6,765
Apr 9, 2026 06:05olliecrowolliecrowGOgo1.26.2Success6,837
Apr 9, 2026 05:59olliecrowolliecrowGOgo1.26.2Success6,939
Apr 8, 2026 09:45olliecrowolliecrowCPPclang++18.1.3Success5,947
Apr 8, 2026 09:42olliecrowolliecrowCPPg++13.3.0Success7,168
Apr 8, 2026 08:57olliecrowolliecrowCPPg++13.3.0Success17,724
Apr 8, 2026 06:36olliecrowolliecrowRUSTrust-1.94.1Success5,282
Apr 7, 2026 07:46olliecrowolliecrowCPPclang++18.1.3Success5,918
Apr 7, 2026 06:42olliecrowolliecrowCPPg++13.3.0Success19,836
Apr 7, 2026 06:39Josu San MartinJosu San MartinCPPg++13.3.0Error
Apr 7, 2026 06:36olliecrowolliecrowCPPg++13.3.0Success19,089
Apr 7, 2026 06:32olliecrowolliecrowCPPg++13.3.0Success19,657
Apr 7, 2026 06:17olliecrowolliecrowCPPclang++18.1.3Success5,989
Apr 1, 2026 01:34olliecrowolliecrowGOgo1.26.1Success18,659
Apr 1, 2026 01:27olliecrowolliecrowGOgo1.26.1Success21,005
Apr 1, 2026 01:27olliecrowolliecrowGOgo1.26.1Success18,245
Apr 1, 2026 01:26olliecrowolliecrowGOgo1.26.1Success20,108
Apr 1, 2026 01:06olliecrowolliecrowGOgo1.26.1Success22,366
Mar 31, 2026 13:16Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 13:12Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 13:00olliecrowolliecrowCPPclang++18.1.3Success5,811
Mar 31, 2026 12:26Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 12:23Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 12:05Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 12:01Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 12:00Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:56Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:51Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:47Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:42Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:39Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:32Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:30Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:21Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:19Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:14Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:10Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:07Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 11:02Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 10:58Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 31, 2026 10:55Dominique GarmierDominique GarmierCPPg++13.3.0Error