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
Oct 9, 2025 14:57Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success8,409
Oct 9, 2025 14:56Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success8,385+2'074.06 RP
Oct 8, 2025 20:11Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success225,271
Oct 8, 2025 18:41Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 18:17Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 17:49Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success82,282
Oct 8, 2025 17:47Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 17:24Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 17:13Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 16:43Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 16:42Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 14:50Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 14:35Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 11:52Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 8, 2025 11:00Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 7, 2025 21:38Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 7, 2025 21:22Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 7, 2025 21:02Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 7, 2025 10:02Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success82,979
Oct 7, 2025 09:50Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success75,572
Oct 7, 2025 09:41Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 7, 2025 09:28Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success64,277+11.18 RP
Oct 7, 2025 00:17yenw0dyenw0dRUSTrust-1.90.0Success6,640+1'262.26 RP
Oct 7, 2025 00:09KeefeKeefeCPPg++13.3.0Error
Oct 7, 2025 00:06KeefeKeefeCPPg++13.3.0Error
Oct 7, 2025 00:04KeefeKeefeCPPg++13.3.0Error
Oct 7, 2025 00:03yenw0dyenw0dRUSTrust-1.90.0Success11,430+190.70 RP
Oct 7, 2025 00:02KeefeKeefeCPPg++13.3.0Error
Oct 6, 2025 17:47Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success71,976
Oct 6, 2025 17:41Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success71,408
Oct 6, 2025 17:22Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 17:16Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 17:11Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 17:08Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 17:05Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 17:02Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:58Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:55Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:52Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:49Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:45Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:39Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success79,982
Oct 6, 2025 16:33Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:28Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 16:23Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success73,896
Oct 6, 2025 11:44Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success72,291
Oct 6, 2025 11:39Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success69,305
Oct 6, 2025 11:38Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success69,912
Oct 6, 2025 11:37Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success66,674+7.66 RP
Oct 6, 2025 11:35Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 11:33Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 11:32Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 11:30Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Oct 6, 2025 11:26Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success68,423+6.48 RP
Oct 6, 2025 11:19Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success72,686
Oct 6, 2025 11:13Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success69,976+7.54 RP
Oct 6, 2025 11:09Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success73,419
Oct 6, 2025 11:08Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success72,112
Oct 6, 2025 10:59Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success71,870+1.12 RP
Oct 6, 2025 10:58Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success72,158+120.42 RP
Oct 6, 2025 10:35Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 10:34Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success442,436
Oct 6, 2025 10:33Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 10:30Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 10:25Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 10:25Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 10:23Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 10:17Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success162,346
Oct 6, 2025 10:11Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 6, 2025 09:44Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success147,265
Oct 6, 2025 09:37Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success160,703
Oct 5, 2025 23:29Daniel HarrisDaniel HarrisRUSTrust-1.90.0Error
Oct 5, 2025 23:19Daniel HarrisDaniel HarrisRUSTrust-1.90.0Error
Oct 5, 2025 20:56Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success138,888+0.02 RP
Oct 5, 2025 20:33Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success156,455
Oct 5, 2025 20:30Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success143,926
Oct 5, 2025 20:27Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success138,926+0.56 RP
Oct 5, 2025 20:22Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success410,838
Oct 5, 2025 20:21Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success247,332
Oct 5, 2025 20:18Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success140,023+11.15 RP
Oct 5, 2025 20:16Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success181,529
Oct 5, 2025 20:13Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success176,419
Oct 5, 2025 20:10Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success195,103
Oct 5, 2025 20:05Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success165,940+3.88 RP
Oct 5, 2025 20:03Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success443,509
Oct 5, 2025 20:01Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 5, 2025 19:41Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success180,773
Oct 5, 2025 19:39Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 5, 2025 19:34Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success458,079
Oct 5, 2025 19:32Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 5, 2025 19:26Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success184,498
Oct 5, 2025 19:20Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success307,788
Oct 5, 2025 19:07Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Error
Oct 5, 2025 19:07KeefeKeefeCPPg++13.3.0Error
Oct 5, 2025 19:04Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success192,313
Oct 5, 2025 19:00Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success223,866
Oct 5, 2025 18:54Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success177,354+17.97 RP
Oct 5, 2025 18:52KeefeKeefeCPPclang++18.1.3Success122,344
Oct 5, 2025 18:50Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success260,316+21.67 RP
Oct 5, 2025 18:44Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success597,281+16.74 RP