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 15:56Josu San MartinJosu San MartinScore: 3,705Success
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 06:243,12366,667,47136,535,0004,059,0002,338,816
2Dec 29, 2025 14:533,15969,335,91336,058,0005,008,0002,408,448
3Dec 29, 2025 06:243,21069,999,98937,660,0004,071,0002,355,200
4Dec 29, 2025 15:003,22268,139,17338,890,0002,991,0002,424,832
5Dec 29, 2025 15:583,23466,740,96941,043,0001,001,0002,424,832
6Dec 29, 2025 14:583,24369,125,64640,149,0002,007,0002,424,832
7Dec 29, 2025 06:233,25267,488,85840,263,0002,013,0002,281,472
8Dec 29, 2025 14:583,27267,130,45241,526,0001,012,0002,420,736
9Dec 29, 2025 15:253,29767,335,82841,863,000996,0002,482,176
10Dec 29, 2025 15:363,30768,056,35738,992,0003,999,0002,396,160
11Dec 29, 2025 15:093,33066,782,35540,267,0003,020,0002,297,856
12Dec 29, 2025 06:223,34071,331,76039,378,0004,038,0002,334,720
13Dec 29, 2025 06:273,34370,648,64237,399,0006,064,0002,523,136
14Dec 29, 2025 15:123,35371,448,13942,574,0001,013,0002,465,792
15Dec 29, 2025 16:103,37568,142,49242,883,000997,0002,453,504
16Dec 29, 2025 15:453,37772,924,58639,915,0003,991,0002,400,256
17Dec 29, 2025 15:143,38271,536,66339,970,0003,997,0002,396,160
18Dec 29, 2025 15:003,38874,835,29542,042,0002,002,0002,437,120
19Dec 29, 2025 15:453,38870,449,55541,047,0003,003,0002,375,680
20Dec 29, 2025 06:233,39467,618,76242,120,0002,005,0002,269,184
21Dec 29, 2025 15:143,39769,608,19140,141,0004,014,0002,461,696
22Dec 29, 2025 06:253,39970,462,85441,170,0003,012,0002,424,832
23Dec 29, 2025 16:103,40377,698,07640,215,0004,021,0002,326,528
24Dec 29, 2025 15:343,40473,222,83641,239,0003,017,0002,408,448
25Dec 29, 2025 16:043,40971,184,46142,307,0002,014,0002,445,312
26Dec 29, 2025 15:293,43382,126,79542,605,0002,028,0002,416,640
27Dec 29, 2025 15:593,43872,945,52544,690,00002,420,736
28Dec 29, 2025 14:503,45275,222,68741,885,0002,991,0002,314,240
29Dec 29, 2025 15:173,45267,262,55539,892,0004,986,0002,273,280
30Dec 29, 2025 15:223,45574,415,01743,891,0001,020,0002,396,160
31Dec 29, 2025 14:553,46274,775,58243,001,0002,000,0002,355,200
32Dec 29, 2025 15:483,48574,345,67342,280,0003,020,0002,420,736
33Dec 29, 2025 06:253,49169,219,47142,354,0003,025,0002,273,280
34Dec 29, 2025 15:193,49167,130,89543,362,0002,016,0002,387,968
35Dec 29, 2025 06:263,49269,228,47641,359,0004,035,0002,306,048
36Dec 29, 2025 14:553,49274,057,48142,370,0003,026,0002,420,736
37Dec 29, 2025 15:443,49875,733,64740,426,0005,053,0002,478,080
38Dec 29, 2025 15:113,50473,190,20842,518,0003,037,0002,330,624
39Dec 29, 2025 15:113,51170,293,10242,600,0003,042,0002,387,968
40Dec 29, 2025 06:233,51273,025,53741,594,0004,057,0002,441,216
41Dec 29, 2025 15:123,51270,756,71743,627,0002,029,0002,523,136
42Dec 29, 2025 15:033,51471,565,90942,642,0003,045,0002,502,656
43Dec 29, 2025 15:453,51473,086,67242,636,0003,045,0002,457,600
44Dec 29, 2025 16:013,51570,257,31344,677,0001,015,0002,297,856
45Dec 29, 2025 15:013,52973,240,06341,885,0003,989,0002,404,352
46Dec 29, 2025 15:483,52971,656,79543,878,0001,994,0002,351,104
47Dec 29, 2025 15:033,53371,609,13841,932,0003,993,0002,392,064
48Dec 29, 2025 15:283,53372,256,58941,932,0003,993,0002,379,776
49Dec 29, 2025 15:293,53475,589,86442,941,0002,995,0002,506,752
50Dec 29, 2025 06:283,53570,974,45638,964,0006,993,0002,387,968
51Dec 29, 2025 06:243,53671,705,76142,975,0002,998,0002,396,160
52Dec 29, 2025 15:153,53771,874,87142,982,0002,998,0002,461,696
53Dec 29, 2025 15:263,54470,937,56242,072,0004,006,0002,383,872
54Dec 29, 2025 15:093,54872,912,12340,104,0006,015,0002,359,296
55Dec 29, 2025 16:103,55673,120,63445,225,0001,005,0002,273,280
56Dec 29, 2025 06:263,56074,676,35040,240,0006,036,0002,412,544
57Dec 29, 2025 15:003,56569,581,85341,311,0005,037,0002,301,952
58Dec 29, 2025 06:263,57172,104,38645,419,0001,009,0002,301,952
59Dec 29, 2025 06:263,57269,198,18743,411,0003,028,0002,387,968
60Dec 29, 2025 06:213,57369,214,86743,424,0003,029,0002,502,656
61Dec 29, 2025 15:263,57867,457,34544,495,0002,022,0002,469,888
62Dec 29, 2025 16:063,58571,595,54044,574,0002,026,0002,330,624
63Dec 29, 2025 06:273,58972,971,03042,601,0004,057,0002,445,312
64Dec 29, 2025 15:253,58975,774,17943,614,0003,042,0002,301,952
65Dec 29, 2025 14:583,60674,831,63542,885,0003,989,0002,269,184
66Dec 29, 2025 15:173,60684,026,69641,886,0004,986,0002,392,064
67Dec 29, 2025 15:343,60775,966,59144,895,0001,995,0002,453,504
68Dec 29, 2025 15:483,60778,180,51643,894,0002,992,0002,342,912
69Dec 29, 2025 15:473,61181,126,31842,953,0003,995,0002,445,312
70Dec 29, 2025 06:203,61972,113,79642,047,0005,005,0002,502,656
71Dec 29, 2025 16:093,62172,627,47444,069,0003,004,0002,420,736
72Dec 29, 2025 06:203,62675,688,06140,117,0007,020,0002,318,336
73Dec 29, 2025 16:073,62873,320,32944,148,0003,010,0002,371,584
74Dec 29, 2025 15:173,62972,015,09041,153,0006,022,0002,306,048
75Dec 29, 2025 06:203,63574,854,17944,243,0003,016,0002,404,352
76Dec 29, 2025 15:323,63777,517,14943,257,0004,023,0002,338,816
77Dec 29, 2025 06:203,64370,069,39144,333,0003,022,0002,478,080
78Dec 29, 2025 06:253,64473,749,15742,328,0005,039,0002,465,792
79Dec 29, 2025 16:013,64474,743,54744,350,0003,023,0002,355,200
80Dec 29, 2025 06:293,64773,117,95641,354,0006,051,0002,482,176
81Dec 29, 2025 06:203,64870,006,91245,401,0002,017,0002,281,472
82Dec 29, 2025 15:323,65072,433,13343,410,0004,038,0002,392,064
83Dec 29, 2025 06:243,65171,024,69044,439,0003,029,0002,273,280
84Dec 29, 2025 15:223,65175,529,97144,432,0003,029,0002,285,568
85Dec 29, 2025 15:033,65371,560,37442,442,0005,052,0002,465,792
86Dec 29, 2025 15:233,65873,606,93645,526,0002,023,0002,437,120
87Dec 29, 2025 15:203,65972,586,46645,543,0002,024,0002,334,720
88Dec 29, 2025 16:023,66575,604,48744,604,0003,041,0002,371,584
89Dec 29, 2025 14:523,66775,735,98045,642,0002,028,0002,260,992
90Dec 29, 2025 06:213,66875,761,22646,673,0001,014,0002,465,792
91Dec 29, 2025 15:343,68374,960,34443,895,0003,990,0002,265,088
92Dec 29, 2025 15:593,68377,620,84744,883,0002,992,0002,363,392
93Dec 29, 2025 06:253,68480,173,51943,906,0003,991,0002,437,120
94Dec 29, 2025 14:503,69373,666,91744,012,0004,001,0002,285,568
95Dec 29, 2025 06:203,70178,648,28043,105,0005,012,0002,375,680
96Dec 29, 2025 15:313,70277,074,81046,119,0002,005,0002,379,776
97Dec 29, 2025 06:233,70375,092,61745,125,0003,008,0002,306,048
98Dec 29, 2025 16:043,70572,223,02746,161,0002,007,0002,408,448
99Dec 29, 2025 06:273,71279,787,73044,233,0004,021,0002,326,528
100Dec 29, 2025 15:443,71578,003,52644,275,0004,025,0002,510,848
101Dec 29, 2025 15:003,72381,626,01843,359,0005,041,0002,465,792
102Dec 29, 2025 14:523,72470,809,01145,383,0003,025,0002,400,256
103Dec 29, 2025 15:013,72469,018,96543,375,0005,043,0002,449,408
104Dec 29, 2025 15:293,72669,779,47546,425,0002,018,0002,330,624
105Dec 29, 2025 15:593,73874,186,57544,546,0004,049,0002,420,736
106Dec 29, 2025 06:263,74274,648,51247,631,0001,013,0002,473,984
107Dec 29, 2025 06:283,74683,617,27744,646,0004,058,0002,293,760
108Dec 29, 2025 06:213,75973,645,23846,870,0001,994,0002,363,392
109Dec 29, 2025 15:003,76080,536,30446,880,0001,994,0002,498,560
110Dec 29, 2025 15:283,76176,553,15146,852,0002,037,0002,510,848
111Dec 29, 2025 16:023,76773,787,39547,970,000999,0002,355,200
112Dec 29, 2025 06:213,77780,271,52045,093,0004,008,0002,338,816
113Dec 29, 2025 15:523,77781,217,95345,098,0004,008,0002,396,160
114Dec 29, 2025 15:083,78983,855,95746,239,0003,015,0002,330,624
115Dec 29, 2025 15:263,79076,077,10244,240,0005,027,0002,322,432
116Dec 29, 2025 15:323,79174,736,72146,266,0003,017,0002,322,432
117Dec 29, 2025 16:043,79275,807,14047,280,0002,011,0002,461,696
118Dec 29, 2025 15:313,79573,047,62946,310,0003,020,0002,387,968
119Dec 29, 2025 15:083,79979,963,22845,361,0004,032,0002,359,296
120Dec 29, 2025 15:313,80280,679,65645,387,0004,034,0002,433,024
121Dec 29, 2025 06:293,80375,234,46545,409,0004,036,0002,424,832
122Dec 29, 2025 06:243,80473,674,71247,437,0002,018,0002,396,160
123Dec 29, 2025 15:003,80472,792,60246,426,0003,027,0002,416,640
124Dec 29, 2025 06:213,80674,001,68746,448,0003,029,0002,387,968
125Dec 29, 2025 15:193,81782,324,49345,570,0004,050,0002,437,120
126Dec 29, 2025 06:283,82480,471,02248,702,0001,014,0002,428,928
127Dec 29, 2025 15:363,82475,506,26148,694,0001,014,0002,330,624
128Dec 29, 2025 15:533,84385,756,44247,965,0001,998,0002,289,664
129Dec 29, 2025 15:473,84476,800,53145,969,0003,997,0002,342,912
130Dec 29, 2025 15:193,84776,461,58747,016,0003,001,0002,408,448
131Dec 29, 2025 15:233,84784,041,95742,009,0008,001,0002,285,568
132Dec 29, 2025 15:013,85176,384,05248,056,0002,002,0002,428,928
133Dec 29, 2025 15:143,85377,030,94848,088,0002,003,0002,265,088
134Dec 29, 2025 15:153,85780,197,39146,133,0004,011,0002,326,528
135Dec 29, 2025 06:263,86078,954,29846,166,0004,014,0002,445,312
136Dec 29, 2025 14:563,86481,151,79647,219,0003,014,0002,396,160
137Dec 29, 2025 15:533,86776,933,08846,251,0004,021,0002,371,584
138Dec 29, 2025 14:563,87474,109,10648,347,0002,014,0002,379,776
139Dec 29, 2025 15:253,87974,669,22746,395,0004,034,0002,412,544
140Dec 29, 2025 15:203,89371,309,17148,583,0002,024,0002,273,280
141Dec 29, 2025 15:123,91283,966,82547,871,0002,991,0002,428,928
142Dec 29, 2025 16:093,91577,229,51348,897,0001,995,0002,416,640
143Dec 29, 2025 15:233,92774,780,47148,043,0003,002,0002,453,504
144Dec 29, 2025 06:283,92979,436,74147,072,0004,006,0002,437,120
145Dec 29, 2025 15:093,93378,900,63748,120,0003,007,0002,273,280
146Dec 29, 2025 06:233,94077,344,36549,211,0002,008,0002,297,856
147Dec 29, 2025 06:213,94177,877,48349,228,0002,009,0002,469,888
148Dec 29, 2025 06:283,94782,219,71548,298,0003,018,0002,355,200
149Dec 29, 2025 15:003,94980,064,75946,310,0005,033,0002,281,472
150Dec 29, 2025 15:443,95073,879,37248,325,0003,020,0002,482,176
151Dec 29, 2025 14:523,95977,746,13747,426,0004,036,0002,453,504
152Dec 29, 2025 06:253,96083,073,47348,447,0003,027,0002,461,696
153Dec 29, 2025 16:023,99678,890,85648,947,0002,996,0002,285,568
154Dec 29, 2025 06:294,00581,967,23850,068,0002,002,0002,265,088
155Dec 29, 2025 15:204,01285,480,58049,145,0003,008,0002,445,312
156Dec 29, 2025 15:154,01482,652,56049,171,0003,010,0002,306,048
157Dec 29, 2025 15:524,02380,242,47450,286,0002,011,0002,473,984
158Dec 29, 2025 14:564,03580,789,14551,451,0001,008,0002,428,928
159Dec 29, 2025 16:064,04879,455,00848,574,0004,047,0002,301,952
160Dec 29, 2025 15:114,06779,227,47447,881,0004,987,0002,359,296
161Dec 29, 2025 15:284,06784,566,99847,883,0004,987,0002,293,760
162Dec 29, 2025 14:534,06880,808,11949,885,0002,993,0002,273,280
163Dec 29, 2025 14:554,07485,358,86148,963,0003,997,0002,490,368
164Dec 29, 2025 15:004,09584,410,04750,226,0003,013,0002,502,656
165Dec 29, 2025 06:254,10183,072,38051,304,0002,011,0002,371,584
166Dec 29, 2025 06:224,12582,665,78951,603,0002,023,0002,285,568
167Dec 29, 2025 16:074,15388,269,64549,989,0003,999,0002,510,848
168Dec 29, 2025 15:584,16680,787,38053,154,0001,002,0002,502,656
169Dec 29, 2025 16:074,17279,678,83350,224,0004,017,0002,449,408
170Dec 29, 2025 15:364,18983,021,30050,419,0004,033,0002,285,568
171Dec 29, 2025 15:474,22181,300,13449,881,0004,988,0002,347,008
172Dec 29, 2025 15:534,22678,680,01549,943,0004,994,0002,424,832
173Dec 29, 2025 06:244,23183,076,18148,998,0005,999,0002,367,488
174Dec 29, 2025 15:504,24485,492,93950,154,0005,015,0002,351,104
175Dec 29, 2025 15:564,25381,958,33750,265,0005,026,0002,342,912
176Dec 29, 2025 15:084,27281,189,13951,493,0004,038,0002,465,792
177Dec 29, 2025 15:584,27578,374,72852,543,0003,031,0002,338,816
178Dec 29, 2025 15:224,28185,688,99852,616,0003,035,0002,510,848
179Dec 29, 2025 14:534,32980,339,29152,252,0004,019,0002,301,952
180Dec 29, 2025 06:284,33683,645,01354,354,0002,013,0002,482,176
181Dec 29, 2025 15:004,37885,278,48954,917,0001,996,0002,494,464
182Dec 29, 2025 06:224,39983,074,40454,174,0003,009,0002,502,656
183Dec 29, 2025 06:234,46490,108,25953,027,0005,002,0002,519,040
184Dec 29, 2025 14:504,52190,482,34053,792,0004,980,0002,338,816
185Dec 29, 2025 15:524,57883,611,78656,492,0003,026,0002,510,848
186Dec 29, 2025 15:504,58480,821,47956,559,0003,029,0002,375,680
187Dec 29, 2025 15:554,77093,512,59359,004,0003,000,0002,269,184
188Dec 29, 2025 16:014,77790,686,13155,091,0007,011,0002,506,752
189Dec 29, 2025 16:064,81589,749,29059,565,0003,028,0002,510,848
190Dec 29, 2025 15:504,91790,719,47360,931,0002,996,0002,363,392
191Dec 29, 2025 15:554,96189,689,92061,517,0002,976,0002,494,464
192Dec 29, 2025 15:564,973118,558,71654,546,00010,101,0002,506,752
193Dec 29, 2025 15:565,07293,405,96360,938,0004,994,0002,506,752
194Dec 29, 2025 16:095,25692,331,65263,309,0005,024,0002,424,832
195Dec 29, 2025 15:555,414101,821,64768,367,0002,010,0002,301,952