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 21, 2025 12:39izotoffizotoffGOgo1.25.4Error
Nov 21, 2025 12:36izotoffizotoffGOgo1.25.4Error
Nov 21, 2025 12:19izotoffizotoffGOgo1.25.4Error
Nov 21, 2025 01:17KeefeKeefeCPPg++13.3.0Success84,355
Nov 21, 2025 01:12KeefeKeefeCPPg++13.3.0Error
Nov 21, 2025 00:11KeefeKeefeCPPg++13.3.0Success60,772
Nov 21, 2025 00:08KeefeKeefeCPPclang++18.1.3Success53,023
Nov 21, 2025 00:08KeefeKeefeCPPg++13.3.0Success53,666
Nov 21, 2025 00:05KeefeKeefeCPPg++13.3.0Success58,038
Nov 21, 2025 00:03KeefeKeefeCPPclang++18.1.3Success59,357
Nov 20, 2025 23:53KeefeKeefeCPPclang++18.1.3Success52,147+67.72 RP
Nov 20, 2025 23:51KeefeKeefeCPPclang++18.1.3Success80,614+15.28 RP
Nov 20, 2025 23:47KeefeKeefeCPPg++13.3.0Success91,939+24.02 RP
Nov 20, 2025 23:43KeefeKeefeCPPg++13.3.0Error
Nov 8, 2025 15:37Aniruddha DebAniruddha DebCPPg++13.3.0Success48,500+4.13 RP
Nov 8, 2025 15:33Aniruddha DebAniruddha DebCPPg++13.3.0Success52,014
Nov 8, 2025 15:31Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 8, 2025 15:30Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 8, 2025 15:29Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 8, 2025 15:29Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 8, 2025 15:11Aniruddha DebAniruddha DebCPPg++13.3.0Success49,492+27.83 RP
Nov 8, 2025 15:08Aniruddha DebAniruddha DebCPPg++13.3.0Success63,393
Nov 8, 2025 14:26Aniruddha DebAniruddha DebCPPg++13.3.0Success76,435
Nov 8, 2025 14:24Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 8, 2025 14:20Aniruddha DebAniruddha DebCPPg++13.3.0Success67,901
Nov 8, 2025 14:14Aniruddha DebAniruddha DebCPPg++13.3.0Success59,731
Nov 8, 2025 14:12Aniruddha DebAniruddha DebCPPg++13.3.0Success57,398+26.05 RP
Nov 8, 2025 14:08Aniruddha DebAniruddha DebCPPg++13.3.0Success67,491+16.76 RP
Nov 8, 2025 12:55Aniruddha DebAniruddha DebCPPg++13.3.0Success85,081
Nov 8, 2025 12:49Aniruddha DebAniruddha DebCPPg++13.3.0Success88,845
Nov 8, 2025 12:47Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 7, 2025 22:29Aniruddha DebAniruddha DebCPPg++13.3.0Success79,125
Nov 7, 2025 22:21Aniruddha DebAniruddha DebCPPg++13.3.0Success76,100+75.15 RP
Nov 6, 2025 23:00Aniruddha DebAniruddha DebCPPg++13.3.0Success430,346
Nov 6, 2025 22:42Aniruddha DebAniruddha DebCPPg++13.3.0Error
Nov 6, 2025 22:38Aniruddha DebAniruddha DebCPPg++13.3.0Success177,757+4.54 RP
Nov 6, 2025 22:36Aniruddha DebAniruddha DebCPPg++13.3.0Success253,770
Nov 4, 2025 08:04Oleg KovalovOleg KovalovGOgo1.25.3Success392,264
Nov 4, 2025 02:35jcljclRUSTrust-1.90.0Error
Nov 4, 2025 02:31jcljclRUSTrust-1.90.0Error
Nov 1, 2025 00:02Ludvig SjöströmLudvig SjöströmCPPg++13.3.0Success16,707+538.71 RP
Oct 25, 2025 10:50Oleg KovalovOleg KovalovRUSTrust-1.90.0Success205,816+48.59 RP
Oct 18, 2025 15:39Aniruddha DebAniruddha DebCPPg++13.3.0Success193,380+2.00 RP
Oct 18, 2025 15:35Aniruddha DebAniruddha DebCPPg++13.3.0Success201,175+0.77 RP
Oct 18, 2025 15:31Aniruddha DebAniruddha DebCPPg++13.3.0Success209,984
Oct 18, 2025 15:31Aniruddha DebAniruddha DebCPPg++13.3.0Success204,354+1.87 RP
Oct 18, 2025 15:30Aniruddha DebAniruddha DebCPPg++13.3.0Success223,918
Oct 18, 2025 15:29Aniruddha DebAniruddha DebCPPg++13.3.0Success263,673
Oct 18, 2025 15:18Aniruddha DebAniruddha DebCPPg++13.3.0Success324,849
Oct 18, 2025 15:16Aniruddha DebAniruddha DebCPPg++13.3.0Success301,084
Oct 18, 2025 14:36Aniruddha DebAniruddha DebCPPg++13.3.0Success302,157
Oct 18, 2025 14:34Aniruddha DebAniruddha DebCPPg++13.3.0Success296,857
Oct 18, 2025 14:24Aniruddha DebAniruddha DebCPPg++13.3.0Success262,107
Oct 18, 2025 14:23Aniruddha DebAniruddha DebCPPg++13.3.0Success264,404
Oct 18, 2025 13:05Aniruddha DebAniruddha DebCPPg++13.3.0Success269,127
Oct 18, 2025 13:03Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 18, 2025 13:01Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 18, 2025 13:00Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 18, 2025 12:56Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 18, 2025 10:57Aniruddha DebAniruddha DebCPPg++13.3.0Success296,036
Oct 18, 2025 10:56Aniruddha DebAniruddha DebCPPg++13.3.0Success292,968
Oct 18, 2025 10:55Aniruddha DebAniruddha DebCPPg++13.3.0Success328,938
Oct 18, 2025 10:52Aniruddha DebAniruddha DebCPPg++13.3.0Success283,913
Oct 18, 2025 10:50Aniruddha DebAniruddha DebCPPg++13.3.0Success320,825
Oct 18, 2025 10:48Aniruddha DebAniruddha DebCPPg++13.3.0Success292,363
Oct 18, 2025 10:45Aniruddha DebAniruddha DebCPPg++13.3.0Success334,873
Oct 18, 2025 10:43Aniruddha DebAniruddha DebCPPg++13.3.0Success317,768
Oct 18, 2025 10:36Aniruddha DebAniruddha DebRUSTrust-1.90.0Success212,481+20.98 RP
Oct 18, 2025 10:05Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 17, 2025 22:39scrapeupwscrapeupwCPPg++13.3.0Error
Oct 17, 2025 22:37scrapeupwscrapeupwCPPg++13.3.0Error
Oct 17, 2025 22:30Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 17, 2025 21:25Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 17, 2025 11:26JarnoJarnoRUSTrust-1.90.0Success190,798+4.74 RP
Oct 17, 2025 09:32JarnoJarnoRUSTrust-1.90.0Success209,770+47.67 RP
Oct 16, 2025 10:13Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 16, 2025 10:07Aniruddha DebAniruddha DebCPPg++13.3.0Success383,325+26.09 RP
Oct 16, 2025 10:00Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 16, 2025 09:54Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 16, 2025 09:44Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 16, 2025 09:43Aniruddha DebAniruddha DebCPPg++13.3.0Error
Oct 13, 2025 22:56WilmerFinleyWilmerFinleyCPPg++13.3.0Success113,267
Oct 13, 2025 22:53WilmerFinleyWilmerFinleyCPPg++13.3.0Error
Oct 13, 2025 16:33imotw2imotw2CPPg++13.3.0Success17,148
Oct 13, 2025 16:28imotw2imotw2CPPg++13.3.0Success15,043+29.07 RP
Oct 13, 2025 16:24imotw2imotw2CPPg++13.3.0Success15,731+18.48 RP
Oct 13, 2025 16:20imotw2imotw2CPPg++13.3.0Success224,126
Oct 13, 2025 16:08imotw2imotw2CPPg++13.3.0Error
Oct 13, 2025 16:06imotw2imotw2CPPg++13.3.0Error
Oct 13, 2025 07:03WilmerFinleyWilmerFinleyCPPg++13.3.0Error
Oct 13, 2025 07:02WilmerFinleyWilmerFinleyCPPg++13.3.0Error
Oct 13, 2025 06:43WilmerFinleyWilmerFinleyCPPg++13.3.0Success98,971+49.55 RP
Oct 13, 2025 03:26Carl BergmanCarl BergmanRUSTrust-1.90.0Success464,723
Oct 13, 2025 00:58imotw2imotw2CPPg++13.3.0Success18,914
Oct 13, 2025 00:17imotw2imotw2CPPg++13.3.0Success16,299
Oct 13, 2025 00:15imotw2imotw2CPPg++13.3.0Success16,202+4.16 RP
Oct 13, 2025 00:12imotw2imotw2CPPclang++18.1.3Success17,316
Oct 13, 2025 00:11imotw2imotw2CPPg++13.3.0Success16,312+244.23 RP
Oct 12, 2025 23:11WilmerFinleyWilmerFinleyCPPg++13.3.0Success194,224+1.17 RP
Oct 12, 2025 23:08imotw2imotw2CPPg++13.3.0Success27,114+143.66 RP