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 listDec 29, 2025 04:29Josu San MartinJosu San MartinScore: 4,158Success
Source Code

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

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Dec 29, 2025 04:183,30870,993,03641,002,0002,000,0002,404,352
2Dec 29, 2025 04:083,33671,227,73338,327,0005,043,0002,306,048
3Dec 29, 2025 04:323,47472,924,75442,146,0003,010,0002,494,464
4Dec 29, 2025 04:053,56270,246,47343,284,0003,019,0002,347,008
5Dec 29, 2025 04:183,58174,104,41944,534,0002,024,0002,506,752
6Dec 29, 2025 04:193,59574,246,59244,752,0001,988,0002,310,144
7Dec 29, 2025 04:193,60575,017,62043,877,0002,991,0002,371,584
8Dec 29, 2025 04:073,63274,851,34141,191,0006,027,0002,478,080
9Dec 29, 2025 04:153,64170,761,04444,318,0003,021,0002,297,856
10Dec 29, 2025 04:083,64270,620,26046,340,0001,007,0002,392,064
11Dec 29, 2025 04:173,64470,073,97443,345,0004,032,0002,314,240
12Dec 29, 2025 04:233,64475,603,60145,351,0002,015,0002,269,184
13Dec 29, 2025 04:123,64971,188,12347,435,00002,363,392
14Dec 29, 2025 04:083,70274,687,01245,119,0003,007,0002,400,256
15Dec 29, 2025 04:193,72075,726,62747,350,0001,007,0002,527,232
16Dec 29, 2025 04:023,74580,104,44245,641,0003,042,0002,486,272
17Dec 29, 2025 04:303,75973,782,87346,873,0001,994,0002,490,368
18Dec 29, 2025 04:273,76673,307,85142,967,0005,995,0002,424,832
19Dec 29, 2025 04:233,78372,394,08544,161,0005,018,0002,445,312
20Dec 29, 2025 04:063,79076,393,38248,268,0001,005,0002,478,080
21Dec 29, 2025 03:553,79776,157,69148,360,0001,007,0002,334,720
22Dec 29, 2025 04:003,80474,907,48046,421,0003,027,0002,510,848
23Dec 29, 2025 04:083,80779,786,10647,467,0002,019,0002,375,680
24Dec 29, 2025 03:593,81573,577,72048,584,0001,012,0002,502,656
25Dec 29, 2025 04:253,82272,360,19249,690,00002,301,952
26Dec 30, 2025 02:323,83675,835,40846,882,0002,992,0002,342,912
27Dec 29, 2025 04:213,84376,609,37546,962,0002,997,0002,527,232
28Dec 30, 2025 02:313,84480,806,30044,970,0004,996,0002,375,680
29Dec 29, 2025 04:193,84680,310,78346,004,0004,000,0002,334,720
30Dec 29, 2025 04:293,84680,951,85743,003,0007,000,0002,449,408
31Dec 29, 2025 04:103,86980,378,41750,297,00002,453,504
32Dec 29, 2025 04:253,87078,515,41049,304,0001,006,0002,523,136
33Dec 29, 2025 03:583,88575,376,65647,476,0003,030,0002,277,376
34Dec 29, 2025 04:183,89477,562,44249,611,0001,012,0002,306,048
35Dec 29, 2025 04:253,91576,649,36445,908,0004,990,0002,281,472
36Dec 30, 2025 02:363,91780,406,15744,935,0005,991,0002,404,352
37Dec 29, 2025 04:213,93280,987,23150,120,0001,002,0002,482,176
38Dec 29, 2025 04:063,94176,074,87750,229,0001,004,0002,408,448
39Dec 29, 2025 04:063,94675,999,12749,287,0002,011,0002,355,200
40Dec 29, 2025 04:003,94982,543,57048,315,0003,019,0002,338,816
41Dec 29, 2025 04:243,96176,975,20547,449,0004,038,0002,338,816
42Dec 29, 2025 04:073,97488,084,02050,646,0001,012,0002,400,256
43Dec 29, 2025 04:043,99080,613,45648,883,0002,992,0002,437,120
44Dec 29, 2025 04:193,99076,835,61347,883,0003,990,0002,367,488
45Dec 29, 2025 04:203,99681,793,86249,954,0001,998,0002,502,656
46Dec 29, 2025 04:314,00279,224,31447,026,0005,002,0002,314,240
47Dec 29, 2025 03:554,00377,712,11348,039,0004,003,0002,293,760
48Dec 29, 2025 04:024,01574,844,39951,194,0001,003,0002,396,160
49Dec 29, 2025 04:274,02381,029,97549,283,0003,017,0002,482,176
50Dec 29, 2025 03:554,02476,509,39849,298,0003,018,0002,478,080
51Dec 29, 2025 04:014,02776,660,73049,328,0003,020,0002,314,240
52Dec 29, 2025 04:194,03883,631,06350,477,0002,019,0002,510,848
53Dec 30, 2025 02:364,06573,348,19946,867,0005,983,0002,433,024
54Dec 29, 2025 04:134,07380,201,28446,958,0005,994,0002,347,008
55Dec 29, 2025 04:284,07578,512,17447,972,0004,997,0002,445,312
56Dec 29, 2025 04:044,07782,781,05550,997,0001,999,0002,506,752
57Dec 29, 2025 04:104,09878,029,47452,264,0001,005,0002,318,336
58Dec 29, 2025 04:204,10574,824,94850,350,0003,021,0002,527,232
59Dec 29, 2025 03:594,10879,793,09853,410,00002,322,432
60Dec 31, 2025 02:114,11080,806,96151,410,0002,016,0002,338,816
61Dec 29, 2025 04:284,12282,491,16952,581,0001,011,0002,486,272
62Dec 29, 2025 04:304,12379,357,49350,563,0003,033,0002,306,048
63Dec 29, 2025 04:134,12585,351,19753,625,00002,322,432
64Dec 29, 2025 03:584,12687,792,92352,626,0001,012,0002,330,624
65Dec 29, 2025 04:144,14178,684,47548,852,0004,984,0002,457,600
66Dec 29, 2025 04:324,14183,884,14149,846,0003,987,0002,416,640
67Dec 30, 2025 02:314,14577,467,40551,893,0001,995,0002,375,680
68Dec 29, 2025 04:014,14682,029,74650,903,0002,994,0002,428,928
69Dec 29, 2025 04:164,14778,091,20351,916,0001,996,0002,498,560
70Dec 29, 2025 04:224,15182,950,69351,959,0001,998,0002,527,232
71Dec 29, 2025 04:084,15879,291,95651,049,0003,002,0002,510,848
72Dec 29, 2025 03:564,15978,446,28147,062,0007,009,0002,347,008
73Dec 29, 2025 04:084,17080,926,18351,197,0003,011,0002,355,200
74Dec 29, 2025 03:564,17678,821,65350,263,0004,021,0002,502,656
75Dec 29, 2025 04:034,17975,345,62252,317,0002,012,0002,392,064
76Dec 29, 2025 04:174,19278,496,62352,484,0002,018,0002,367,488
77Dec 30, 2025 02:324,19578,723,08353,521,0001,009,0002,363,392
78Dec 29, 2025 04:004,19678,654,80553,535,0001,010,0002,273,280
79Dec 29, 2025 04:054,20484,212,15653,639,0001,012,0002,510,848
80Dec 29, 2025 04:164,20491,225,04652,634,0002,024,0002,281,472
81Dec 29, 2025 04:314,20982,805,88051,676,0003,039,0002,314,240
82Dec 29, 2025 04:164,21780,900,81248,846,0005,981,0002,310,144
83Dec 29, 2025 04:074,22884,106,66450,965,0003,997,0002,449,408
84Dec 29, 2025 04:094,23284,191,85051,018,0004,001,0002,502,656
85Dec 29, 2025 04:214,23879,217,01350,089,0005,008,0002,527,232
86Dec 29, 2025 03:584,24379,893,54951,146,0004,011,0002,445,312
87Dec 29, 2025 04:104,24484,122,85354,174,0001,003,0002,301,952
88Dec 29, 2025 04:184,24982,539,55653,233,0002,008,0002,498,560
89Dec 29, 2025 04:284,24981,504,52251,219,0004,017,0002,334,720
90Dec 29, 2025 04:314,26585,830,42853,427,0002,016,0002,281,472
91Dec 29, 2025 03:574,29683,246,11851,856,0003,988,0002,334,720
92Dec 29, 2025 03:564,30480,486,51050,955,0004,995,0002,523,136
93Dec 29, 2025 03:594,30485,202,50050,955,0004,995,0002,400,256
94Dec 29, 2025 04:234,30481,270,39153,954,0001,998,0002,371,584
95Dec 29, 2025 04:324,30685,701,23251,979,0003,998,0002,359,296
96Dec 29, 2025 04:194,31280,508,30853,054,0003,003,0002,387,968
97Dec 29, 2025 04:274,31879,814,71253,132,0003,007,0002,293,760
98Dec 29, 2025 04:184,31980,487,18351,140,0005,013,0002,322,432
99Dec 29, 2025 04:194,31980,500,96852,131,0004,010,0002,449,408
100Dec 29, 2025 04:084,32681,157,03853,227,0003,012,0002,322,432
101Dec 30, 2025 02:314,34682,971,21353,475,0003,026,0002,318,336
102Dec 29, 2025 04:054,34884,903,76955,512,0001,009,0002,441,216
103Dec 29, 2025 04:334,35585,570,28354,593,0002,021,0002,347,008
104Dec 29, 2025 04:334,36282,045,96354,681,0002,025,0002,396,160
105Dec 29, 2025 04:014,36383,955,87956,713,00002,273,280
106Dec 29, 2025 04:144,37483,848,36853,866,0002,992,0002,269,184
107Dec 29, 2025 04:034,38185,497,74054,954,0001,998,0002,281,472
108Dec 29, 2025 04:184,38484,165,41753,996,0002,999,0002,469,888
109Dec 29, 2025 04:304,39879,520,67255,170,0002,006,0002,514,944
110Dec 29, 2025 04:094,40384,230,08351,211,0006,024,0002,437,120
111Dec 29, 2025 04:084,40882,317,07752,280,0005,026,0002,428,928
112Dec 29, 2025 03:574,43683,399,99453,624,0004,047,0002,326,528
113Dec 29, 2025 04:044,45387,416,94654,896,0002,994,0002,465,792
114Dec 29, 2025 04:334,46087,849,72853,983,0003,998,0002,490,368
115Dec 29, 2025 04:154,50083,342,12055,476,0003,026,0002,428,928
116Dec 29, 2025 04:184,50585,565,33156,541,0002,019,0002,334,720
117Dec 29, 2025 04:224,50682,239,14557,569,0001,009,0002,510,848
118Dec 29, 2025 04:244,51687,729,55356,684,0002,024,0002,351,104
119Dec 30, 2025 02:324,52886,106,61657,865,000997,0002,379,776
120Dec 29, 2025 04:154,56887,477,41056,365,0003,019,0002,342,912
121Dec 29, 2025 04:194,57687,655,67658,486,0001,008,0002,453,504
122Dec 31, 2025 02:114,60683,401,74655,890,0003,992,0002,314,240
123Dec 31, 2025 02:114,63784,816,95458,272,0002,009,0002,330,624
124Dec 29, 2025 04:174,68189,480,93355,865,0004,988,0002,330,624
125Dec 29, 2025 04:184,68291,255,50157,867,0002,993,0002,408,448
126Dec 29, 2025 04:094,68386,150,71057,890,0002,994,0002,416,640
127Dec 29, 2025 04:244,68889,995,87055,953,0004,995,0002,297,856
128Dec 29, 2025 04:124,69684,906,41958,045,0003,002,0002,498,560
129Dec 29, 2025 04:204,69882,203,94957,073,0004,005,0002,510,848
130Dec 29, 2025 04:184,75989,692,14356,880,0004,989,0002,293,760
131Dec 29, 2025 04:134,77590,940,52659,078,0003,003,0002,473,984
132Dec 30, 2025 02:364,83390,312,34957,844,0004,986,0002,510,848
133Dec 29, 2025 04:294,86187,578,10559,181,0004,012,0002,437,120
134Dec 29, 2025 03:574,92489,688,03360,014,0004,000,0002,510,848
135Dec 29, 2025 04:084,94494,043,63063,271,0001,004,0002,334,720
136Dec 29, 2025 04:034,99393,594,65560,916,0003,994,0002,510,848
137Dec 29, 2025 04:125,04389,020,38761,525,0004,034,0002,441,216
138Dec 29, 2025 04:025,05192,201,45162,634,0003,030,0002,514,944
139Dec 29, 2025 04:225,14295,100,86063,858,0002,993,0002,330,624
140Dec 29, 2025 04:295,37594,677,33765,882,0003,992,0002,351,104
141Dec 29, 2025 04:145,56499,956,89471,331,0001,004,0002,514,944