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
Nov 2, 2026 17:12Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success19,123
Nov 2, 2026 17:07Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 17:04Andrew EpsteinAndrew EpsteinCSHARP9.0.18Success1,270
Nov 2, 2026 17:03Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 16:52Andrew EpsteinAndrew EpsteinCSHARP9.0.18Success1,268+18.61 RP
Nov 2, 2026 16:51Andrew EpsteinAndrew EpsteinCSHARP9.0.18Success1,271+257.47 RP
Nov 2, 2026 16:50Andrew EpsteinAndrew EpsteinCSHARP9.0.18Success1,314+578.00 RP
Nov 2, 2026 16:47Andrew EpsteinAndrew EpsteinZIG0.15.1Success1,202+306.65 RP
Nov 2, 2026 16:47Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success1,253
Nov 2, 2026 16:46Andrew EpsteinAndrew EpsteinGOgo1.26.2Success1,195+475.54 RP
Nov 2, 2026 16:46Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 16:45Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 16:42Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 16:39Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success27,533
Nov 2, 2026 16:39Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 16:29Andrew EpsteinAndrew EpsteinCSHARP9.0.18Error
Nov 2, 2026 16:28Andrew EpsteinAndrew EpsteinZIG0.15.1Success1,248+349.99 RP
Nov 2, 2026 16:28Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success1,218+564.92 RP
Nov 2, 2026 16:28Andrew EpsteinAndrew EpsteinGOgo1.26.2Success1,267+651.53 RP
Nov 2, 2026 16:04Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success34,055
Nov 2, 2026 15:34Andrew EpsteinAndrew EpsteinZIG0.15.1Success1,305+1'678.39 RP
Nov 2, 2026 15:34Andrew EpsteinAndrew EpsteinCSHARP9.0.18Success1,422+1'019.12 RP
Nov 2, 2026 15:33Andrew EpsteinAndrew EpsteinRUSTrust-1.95.0Success1,308+1'884.89 RP
Nov 2, 2026 15:33Andrew EpsteinAndrew EpsteinGOgo1.26.2Success1,381+1'033.80 RP
Nov 2, 2026 15:12Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,187+1'482.55 RP
Nov 2, 2026 15:09Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success15,612
Nov 2, 2026 15:00Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,334
Nov 2, 2026 15:00Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,392
Nov 2, 2026 15:00Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,405
Nov 2, 2026 14:57Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,327+193.65 RP
Nov 2, 2026 14:54Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success20,956
Nov 2, 2026 14:47Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success4,041
Nov 2, 2026 14:45Andrew EpsteinAndrew EpsteinCPPclang++20.1.2Success18,286
Nov 2, 2026 14:37Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,362+378.36 RP
Nov 2, 2026 14:36Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success23,031
Nov 2, 2026 14:34Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success23,594
Nov 2, 2026 14:33Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,436+1'196.78 RP
Nov 2, 2026 14:30Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success18,917
Nov 2, 2026 14:24Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success18,896
Nov 2, 2026 14:23Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,734+607.05 RP
Nov 2, 2026 14:18Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success13,174
Nov 2, 2026 14:17Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,938+354.58 RP
Nov 2, 2026 14:12Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success30,838
Nov 2, 2026 14:10Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success17,945+5.00 RP
Oct 26, 2026 23:27janwwwjanwwwGOgo1.26.2Success3,239
Oct 24, 2026 19:51janwwwjanwwwRUSTrust-1.95.0Success2,697
Oct 24, 2026 19:42janwwwjanwwwZIG0.15.1Success2,644
Oct 20, 2026 20:47janwwwjanwwwCPPclang++20.1.2Success2,732
Oct 20, 2026 20:10janwwwjanwwwCPPclang++20.1.2Success2,375
Oct 19, 2026 12:18highload-churnerhighload-churnerCPPg++14.2.0Success1,277+590.12 RP
Oct 19, 2026 12:13highload-churnerhighload-churnerCPPg++14.2.0Success1,328
Oct 19, 2026 12:06highload-churnerhighload-churnerCPPg++14.2.0Success1,357
Oct 19, 2026 12:01highload-churnerhighload-churnerCPPg++14.2.0Success1,334
Oct 19, 2026 11:48highload-churnerhighload-churnerCPPg++14.2.0Success1,327+5'235.55 RP
Oct 19, 2026 11:07highload-churnerhighload-churnerCPPg++14.2.0Success6,331
Oct 19, 2026 11:04highload-churnerhighload-churnerCPPg++14.2.0Success4,835
Oct 19, 2026 04:10zayd-ansari-codezayd-ansari-codeCPPg++10.5.0Success288,924+34.61 RP
Oct 18, 2026 09:00KacpxerKacpxerCPPg++14.2.0Error+475.33 RP
Oct 17, 2026 01:10Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,679
Oct 17, 2026 01:05Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 17, 2026 01:04Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,870
Oct 16, 2026 22:06janwwwjanwwwZIG0.15.1Error+1'263.90 RP
Oct 16, 2026 22:00janwwwjanwwwRUSTrust-1.95.0Error+4'003.73 RP
Oct 16, 2026 21:32Karthik ReddyKarthik ReddyGOgo1.26.2Success1,718
Oct 16, 2026 21:31Karthik ReddyKarthik ReddyZIG0.15.1Success1,726
Oct 16, 2026 21:30Karthik ReddyKarthik ReddyRUSTrust-1.95.0Error+87.36 RP
Oct 16, 2026 21:28Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+132.62 RP
Oct 15, 2026 15:20izotoffizotoffGOgo1.27.2Error
Oct 14, 2026 06:33Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+67.91 RP
Oct 14, 2026 02:49Karthik ReddyKarthik ReddyGOgo1.26.2Success1,663
Oct 14, 2026 02:31Karthik ReddyKarthik ReddyZIG0.15.1Error
Oct 14, 2026 02:30Karthik ReddyKarthik ReddyRUSTrust-1.95.0Error
Oct 14, 2026 01:23Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 01:22Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+58.27 RP
Oct 14, 2026 01:22Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 00:26Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 00:25Karthik ReddyKarthik ReddyCPPclang++18.1.3Error
Oct 14, 2026 00:22Karthik ReddyKarthik ReddyCPPclang++18.1.3Error+295.16 RP
Oct 13, 2026 23:31Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,663
Oct 13, 2026 23:31Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,633
Oct 13, 2026 23:28Karthik ReddyKarthik ReddyCPPclang++18.1.3Success1,660
Oct 10, 2026 06:40janwwwjanwwwCPPclang++20.1.2Error+4'995.87 RP
Oct 9, 2026 23:08highload-churnerhighload-churnerCPPclang++18.1.3Success2,994
Oct 9, 2026 22:57highload-churnerhighload-churnerCPPg++14.2.0Success2,975
Oct 9, 2026 22:56highload-churnerhighload-churnerCPPg++14.2.0Success3,192
Oct 9, 2026 22:39highload-churnerhighload-churnerCPPg++14.2.0Success3,094
Oct 9, 2026 22:34highload-churnerhighload-churnerCPPg++14.2.0Success3,214
Oct 9, 2026 22:28highload-churnerhighload-churnerCPPg++14.2.0Success2,962+163.76 RP
Oct 9, 2026 22:15highload-churnerhighload-churnerCPPg++14.2.0Success3,442
Oct 9, 2026 22:14highload-churnerhighload-churnerCPPg++14.2.0Success3,121
Oct 9, 2026 22:05highload-churnerhighload-churnerCPPg++14.2.0Success3,753
Oct 9, 2026 21:58highload-churnerhighload-churnerCPPg++14.2.0Success3,113+176.51 RP
Oct 9, 2026 21:34highload-churnerhighload-churnerCPPg++14.2.0Success3,294+40.02 RP
Oct 9, 2026 21:22highload-churnerhighload-churnerCPPg++14.2.0Success3,338+2'809.46 RP
Oct 9, 2026 16:17highload-churnerhighload-churnerCPPg++14.2.0Success53,663+186.35 RP
Oct 9, 2026 14:32Karthik ReddyKarthik ReddyCSHARP9.0.18Success2,010
Oct 9, 2026 14:23Karthik ReddyKarthik ReddyCSHARP9.0.18Success2,169
Oct 9, 2026 13:29Karthik ReddyKarthik ReddyGOgo1.26.2Error
Oct 9, 2026 12:40Karthik ReddyKarthik ReddyGOgo1.26.2Success1,668
Oct 9, 2026 11:36Karthik ReddyKarthik ReddyGOgo1.26.2Success1,661