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
Back to listMar 21, 2026 14:11Dominique GarmierDominique GarmierScore: 23,451Success
Source Code

Source code access is restricted. Log in to request access.

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Mar 19, 2026 02:0419,189278,617,098239,444,00010,018,0002,420,736
2Mar 19, 2026 02:0419,307275,063,649240,994,0009,999,0002,269,184
3Mar 19, 2026 15:2019,782285,130,117248,156,0009,005,0002,326,528
4Mar 19, 2026 02:0420,650295,827,915256,434,00012,020,0002,269,184
5Mar 20, 2026 09:3221,313299,843,737266,065,00011,002,0002,453,504
6Mar 19, 2026 19:0821,314297,670,472265,079,00012,003,0002,404,352
7Mar 19, 2026 15:2021,382302,975,475265,963,00011,998,0002,265,088
8Mar 19, 2026 16:4221,445312,047,553267,794,00010,991,0002,265,088
9Mar 21, 2026 14:1021,452311,124,641269,885,0008,996,0002,318,336
10Mar 21, 2026 03:5521,686305,083,151272,915,0008,997,0002,289,664
11Mar 19, 2026 16:2022,230311,853,929277,993,00010,999,0002,383,872
12Mar 19, 2026 19:3322,394322,911,670279,119,00012,005,0002,482,176
13Mar 19, 2026 19:3322,443320,832,085280,770,00010,991,0002,449,408
14Mar 19, 2026 15:2022,666320,982,985282,675,00011,986,0002,301,952
15Mar 21, 2026 03:5522,726323,179,181290,425,0005,007,0002,375,680
16Mar 19, 2026 02:0422,770320,157,880283,008,00013,000,0002,428,928
17Mar 19, 2026 14:0522,883331,210,212288,466,0009,014,0002,310,144
18Mar 19, 2026 06:0223,030331,028,174287,379,00012,015,0002,260,992
19Mar 19, 2026 16:2023,114332,002,334294,467,0006,009,0002,433,024
20Mar 19, 2026 15:2623,130328,171,652291,694,0008,990,0002,347,008
21Mar 21, 2026 14:1023,199328,434,656288,610,00012,982,0002,301,952
22Mar 19, 2026 02:0423,439339,445,689291,724,00012,987,0002,433,024
23Mar 20, 2026 09:3223,451334,079,741295,868,0008,995,0002,502,656
24Mar 19, 2026 19:0823,512337,266,673294,671,00010,987,0002,469,888
25Mar 19, 2026 06:0223,697334,313,245299,055,0009,001,0002,502,656
26Mar 19, 2026 02:0423,732334,757,169297,539,00010,983,0002,502,656
27Mar 19, 2026 16:4223,819341,552,303296,660,00012,985,0002,400,256
28Mar 19, 2026 02:0423,864336,099,097304,228,0006,004,0002,400,256
29Mar 21, 2026 03:5523,957341,884,463302,428,0009,012,0002,445,312
30Mar 19, 2026 15:2624,001338,789,839304,009,0008,000,0002,437,120
31Mar 21, 2026 14:1024,405339,400,753308,262,0009,007,0002,473,984
32Mar 19, 2026 14:0524,855348,642,312315,113,0008,002,0002,469,888
33Mar 21, 2026 14:1124,947357,579,927317,301,0007,006,0002,433,024
34Mar 19, 2026 02:0425,130350,517,142315,704,00010,989,0002,424,832
35Mar 21, 2026 14:1125,296352,406,546318,855,0009,995,0002,478,080
36Mar 19, 2026 15:2625,404364,072,956321,251,0009,007,0002,379,776
37Mar 19, 2026 19:3325,437357,162,810320,685,0009,990,0002,347,008
38Mar 19, 2026 16:2025,475360,836,987320,165,00011,005,0002,293,760
39Mar 19, 2026 16:4225,982360,944,626327,768,0009,992,0002,383,872
40Mar 19, 2026 14:0526,007365,178,662330,084,0008,002,0002,510,848
41Mar 19, 2026 19:0826,019360,609,843330,247,0008,005,0002,449,408
42Mar 21, 2026 14:1126,114367,128,602326,465,00013,018,0002,379,776
43Mar 19, 2026 06:0226,751374,921,501339,770,0007,994,0002,318,336
44Mar 20, 2026 09:3227,231385,483,153345,999,0007,999,0002,322,432
45Mar 19, 2026 02:0428,206388,866,182361,681,0004,995,0002,297,856