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:39Josu San MartinJosu San MartinScore: 3,917Success
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 05:123,23173,875,57238,008,0004,000,0002,265,088
2Dec 29, 2025 05:283,24868,525,23439,204,0003,015,0002,322,432
3Dec 29, 2025 05:143,29974,465,02241,885,000997,0002,379,776
4Dec 29, 2025 04:513,31272,871,77241,053,0002,002,0002,387,968
5Dec 29, 2025 04:443,37469,392,19341,872,0001,993,0002,396,160
6Dec 29, 2025 05:273,37570,326,75840,883,0002,991,0002,449,408
7Dec 29, 2025 05:043,38277,602,67242,972,000999,0002,404,352
8Dec 29, 2025 05:073,39871,740,59039,149,0005,019,0002,383,872
9Dec 29, 2025 05:013,45275,512,81043,877,000997,0002,473,984
10Dec 29, 2025 04:393,46770,914,36942,064,0003,004,0002,396,160
11Dec 29, 2025 05:283,47069,483,20741,105,0004,010,0002,355,200
12Dec 29, 2025 05:083,47279,019,46141,126,0004,012,0002,371,584
13Dec 29, 2025 05:093,49272,638,23143,375,0002,017,0002,506,752
14Dec 29, 2025 04:553,49566,705,54443,417,0002,019,0002,400,256
15Dec 29, 2025 04:393,49670,342,05742,418,0003,029,0002,347,008
16Dec 29, 2025 05:213,49765,574,76642,425,0003,030,0002,387,968
17Dec 29, 2025 04:553,51574,931,61642,648,0003,046,0002,420,736
18Dec 29, 2025 04:433,52972,100,56143,887,0001,994,0002,494,464
19Dec 29, 2025 04:553,53070,410,29442,892,0002,992,0002,506,752
20Dec 29, 2025 05:273,53475,577,92342,943,0002,996,0002,269,184
21Dec 29, 2025 05:153,53675,867,65541,968,0003,996,0002,469,888
22Dec 29, 2025 05:113,54674,095,50343,095,0003,006,0002,400,256
23Dec 29, 2025 04:393,56275,616,46442,278,0004,026,0002,347,008
24Dec 29, 2025 04:423,56670,015,16141,315,0005,038,0002,428,928
25Dec 29, 2025 05:113,57371,858,57944,429,0002,019,0002,506,752
26Dec 29, 2025 05:233,57470,683,33044,447,0002,020,0002,269,184
27Dec 29, 2025 05:103,57669,175,01040,423,0006,063,0002,445,312
28Dec 29, 2025 05:143,57971,132,83543,495,0003,034,0002,523,136
29Dec 29, 2025 05:093,58071,304,52343,502,0003,035,0002,392,064
30Dec 29, 2025 05:283,59370,681,60643,663,0003,046,0002,310,144
31Dec 29, 2025 05:053,60671,557,31944,882,0001,994,0002,322,432
32Dec 29, 2025 04:433,61173,130,99643,950,0002,996,0002,523,136
33Dec 29, 2025 05:283,61576,166,34641,992,0004,999,0002,506,752
34Dec 29, 2025 05:103,61870,732,20045,039,0002,001,0002,310,144
35Dec 29, 2025 04:573,62677,703,26943,121,0004,011,0002,510,848
36Dec 29, 2025 05:163,62973,530,68040,153,0007,026,0002,334,720
37Dec 29, 2025 04:503,63073,112,10642,169,0005,020,0002,355,200
38Dec 29, 2025 05:123,63273,477,54945,209,0002,009,0002,371,584
39Dec 29, 2025 04:393,63581,897,95142,224,0005,026,0002,457,600
40Dec 29, 2025 05:083,63871,915,96042,261,0005,031,0002,445,312
41Dec 29, 2025 05:113,64073,613,58045,310,0002,013,0002,412,544
42Dec 29, 2025 05:073,64171,962,20944,318,0003,021,0002,392,064
43Dec 29, 2025 04:583,64572,433,75145,365,0002,016,0002,375,680
44Dec 29, 2025 05:283,64567,855,29043,356,0004,033,0002,334,720
45Dec 29, 2025 04:463,65168,870,30244,433,0003,029,0002,363,392
46Dec 29, 2025 05:283,65968,310,55644,537,0003,036,0002,396,160
47Dec 29, 2025 04:393,66678,226,61542,584,0005,069,0002,392,064
48Dec 29, 2025 04:473,68877,876,74144,942,0002,996,0002,420,736
49Dec 29, 2025 05:133,68876,325,94144,944,0002,996,0002,379,776
50Dec 29, 2025 04:493,69272,382,30845,999,0001,999,0002,371,584
51Dec 29, 2025 04:523,69273,554,10844,998,0002,999,0002,314,240
52Dec 29, 2025 05:013,69375,703,66445,004,0003,000,0002,453,504
53Dec 29, 2025 04:393,69474,445,08844,020,0004,001,0002,506,752
54Dec 29, 2025 05:033,70376,746,70845,134,0003,008,0002,359,296
55Dec 29, 2025 05:193,71381,527,72345,250,0003,016,0002,510,848
56Dec 29, 2025 05:203,71382,034,46144,251,0004,022,0002,367,488
57Dec 29, 2025 04:413,71877,127,73444,307,0004,027,0002,359,296
58Dec 29, 2025 05:113,72376,982,90146,388,0002,016,0002,379,776
59Dec 29, 2025 05:133,72773,267,99645,420,0003,028,0002,342,912
60Dec 29, 2025 05:113,74984,446,34147,725,0001,015,0002,396,160
61Dec 29, 2025 05:073,75080,111,79743,668,0005,077,0002,367,488
62Dec 29, 2025 05:243,76075,830,55845,882,0002,992,0002,347,008
63Dec 29, 2025 05:043,76374,668,76447,916,000998,0002,387,968
64Dec 29, 2025 05:043,76476,993,12643,945,0004,993,0002,396,160
65Dec 29, 2025 05:033,76875,453,37144,988,0003,998,0002,379,776
66Dec 29, 2025 04:593,77075,779,14544,008,0005,000,0002,367,488
67Dec 29, 2025 05:223,77174,702,41946,019,0003,001,0002,428,928
68Dec 29, 2025 05:133,77781,091,96447,102,0002,004,0002,289,664
69Dec 29, 2025 05:013,78274,867,50346,158,0003,010,0002,461,696
70Dec 29, 2025 05:273,78276,962,02347,163,0002,006,0002,519,040
71Dec 29, 2025 04:523,78672,653,24046,207,0003,013,0002,437,120
72Dec 29, 2025 05:013,78876,752,46644,225,0005,025,0002,322,432
73Dec 29, 2025 05:193,79575,310,45745,303,0004,027,0002,269,184
74Dec 29, 2025 05:203,79967,322,53046,362,0003,023,0002,375,680
75Dec 29, 2025 04:413,80370,996,36042,374,0007,062,0002,482,176
76Dec 29, 2025 04:433,80776,185,72045,448,0004,039,0002,461,696
77Dec 29, 2025 05:003,81472,302,97449,578,00002,359,296
78Dec 29, 2025 04:593,81775,395,69946,580,0003,037,0002,318,336
79Dec 29, 2025 05:043,81781,417,73447,594,0002,025,0002,363,392
80Dec 29, 2025 04:473,82173,945,87746,633,0003,041,0002,359,296
81Dec 29, 2025 05:043,82277,716,08345,709,0003,974,0002,338,816
82Dec 29, 2025 05:093,82273,788,08245,636,0004,056,0002,371,584
83Dec 29, 2025 05:123,82479,787,89947,683,0002,029,0002,502,656
84Dec 29, 2025 05:163,82776,652,19546,702,0003,045,0002,363,392
85Dec 29, 2025 05:183,83676,193,56146,880,0002,992,0002,351,104
86Dec 29, 2025 05:093,83775,799,44945,889,0003,990,0002,314,240
87Dec 29, 2025 04:393,84273,231,02347,949,0001,997,0002,371,584
88Dec 29, 2025 05:213,85276,954,80046,069,0004,006,0002,355,200
89Dec 29, 2025 04:513,85374,484,68747,085,0003,005,0002,523,136
90Dec 29, 2025 05:143,85574,618,46948,105,0002,004,0002,449,408
91Dec 29, 2025 04:393,86678,156,57443,225,0007,036,0002,338,816
92Dec 29, 2025 04:583,86979,628,28546,275,0004,023,0002,297,856
93Dec 29, 2025 05:043,87374,892,91048,334,0002,013,0002,379,776
94Dec 29, 2025 04:403,87972,903,74543,365,0007,059,0002,293,760
95Dec 29, 2025 04:453,88674,123,30048,503,0002,020,0002,465,792
96Dec 29, 2025 04:543,88977,207,59648,533,0002,022,0002,416,640
97Dec 29, 2025 04:393,89275,445,24549,588,0001,012,0002,428,928
98Dec 29, 2025 04:403,89679,555,40549,632,0001,012,0002,482,176
99Dec 29, 2025 04:573,90388,608,54649,719,0001,014,0002,297,856
100Dec 29, 2025 04:423,91281,666,71946,873,0003,989,0002,506,752
101Dec 29, 2025 04:543,91479,245,76744,901,0005,986,0002,363,392
102Dec 29, 2025 05:143,91579,808,62448,895,0001,995,0002,392,064
103Dec 29, 2025 05:283,91780,617,64544,926,0005,990,0002,306,048
104Dec 29, 2025 04:423,91973,582,12648,951,0001,998,0002,404,352
105Dec 29, 2025 04:493,92674,697,65550,034,0001,000,0002,408,448
106Dec 29, 2025 05:093,92682,070,76348,041,0003,002,0002,310,144
107Dec 29, 2025 05:263,92780,339,29747,052,0004,004,0002,498,560
108Dec 29, 2025 05:023,93476,526,13847,135,0004,011,0002,322,432
109Dec 29, 2025 04:543,93576,010,55947,145,0004,012,0002,396,160
110Dec 29, 2025 04:573,94278,099,39446,219,0005,023,0002,334,720
111Dec 29, 2025 05:093,94379,043,24846,236,0005,025,0002,269,184
112Dec 29, 2025 04:513,95282,155,67747,344,0004,029,0002,519,040
113Dec 29, 2025 05:063,95778,050,31446,402,0005,043,0002,519,040
114Dec 29, 2025 05:053,95973,644,57150,462,0001,009,0002,519,040
115Dec 29, 2025 05:113,96075,677,28748,449,0003,028,0002,269,184
116Dec 29, 2025 05:253,96079,184,31849,464,0002,018,0002,387,968
117Dec 29, 2025 05:153,97477,261,32351,664,00002,355,200
118Dec 29, 2025 04:463,97881,506,37149,690,0002,028,0002,387,968
119Dec 29, 2025 05:183,97977,667,97450,716,0001,014,0002,367,488
120Dec 29, 2025 05:263,99276,610,61748,897,0002,993,0002,297,856
121Dec 29, 2025 04:553,99681,916,40949,951,0001,998,0002,363,392
122Dec 29, 2025 05:273,99978,976,97848,994,0002,999,0002,375,680
123Dec 29, 2025 04:554,00079,610,78448,995,0002,999,0002,306,048
124Dec 29, 2025 05:004,00575,826,27948,062,0004,005,0002,322,432
125Dec 29, 2025 05:274,00780,458,64546,082,0006,010,0002,383,872
126Dec 29, 2025 04:494,00876,464,72847,099,0005,010,0002,400,256
127Dec 29, 2025 05:144,00977,216,45049,107,0003,006,0002,424,832
128Dec 29, 2025 05:144,01580,506,57251,197,0001,003,0002,355,200
129Dec 29, 2025 05:104,01777,799,22748,210,0004,017,0002,392,064
130Dec 29, 2025 04:454,01877,012,94450,224,0002,008,0002,420,736
131Dec 29, 2025 05:144,02176,464,52446,246,0006,032,0002,293,760
132Dec 29, 2025 05:014,02479,039,52149,295,0003,018,0002,404,352
133Dec 29, 2025 05:264,03473,507,56148,411,0004,034,0002,355,200
134Dec 29, 2025 05:154,03775,916,74947,439,0005,046,0002,297,856
135Dec 29, 2025 05:254,03872,249,50050,475,0002,019,0002,478,080
136Dec 29, 2025 05:034,04681,238,39150,572,0002,022,0002,338,816
137Dec 29, 2025 04:474,05079,529,49649,617,0003,037,0002,310,144
138Dec 29, 2025 04:504,05182,859,60251,655,0001,012,0002,498,560
139Dec 29, 2025 05:244,05481,016,47351,689,0001,013,0002,461,696
140Dec 29, 2025 04:484,06679,958,66149,872,0002,992,0002,301,952
141Dec 29, 2025 04:404,06778,666,59349,880,0002,992,0002,416,640
142Dec 29, 2025 05:064,06877,465,11848,895,0003,991,0002,412,544
143Dec 29, 2025 05:214,07076,501,35049,856,0003,052,0002,457,600
144Dec 29, 2025 05:244,07584,033,22749,975,0002,998,0002,408,448
145Dec 29, 2025 04:564,08578,740,73351,098,0002,003,0002,322,432
146Dec 29, 2025 04:464,08778,679,73649,126,0004,010,0002,363,392
147Dec 29, 2025 05:224,08879,893,30352,140,0001,002,0002,510,848
148Dec 29, 2025 04:394,09185,171,09848,168,0005,017,0002,465,792
149Dec 29, 2025 05:284,09379,321,54448,194,0005,020,0002,265,088
150Dec 29, 2025 04:524,09482,402,11951,208,0002,008,0002,355,200
151Dec 29, 2025 04:564,10977,958,38750,398,0003,023,0002,334,720
152Dec 29, 2025 05:114,11978,778,10450,521,0003,031,0002,424,832
153Dec 29, 2025 05:144,12382,693,26146,515,0007,078,0002,363,392
154Dec 29, 2025 05:064,15078,657,43749,960,0003,996,0002,371,584
155Dec 29, 2025 05:114,16282,898,70049,099,0005,010,0002,420,736
156Dec 29, 2025 05:094,16788,659,15948,149,0006,018,0002,297,856
157Dec 29, 2025 05:044,18178,249,51849,326,0005,033,0002,306,048
158Dec 29, 2025 05:284,18283,359,85250,335,0004,026,0002,281,472
159Dec 29, 2025 04:554,18881,517,42551,422,0003,024,0002,293,760
160Dec 29, 2025 05:274,18876,343,08952,424,0002,016,0002,359,296
161Dec 29, 2025 04:594,19680,870,75750,510,0004,040,0002,506,752
162Dec 29, 2025 04:484,20183,072,19951,577,0003,033,0002,445,312
163Dec 29, 2025 05:234,20580,578,51850,615,0004,049,0002,486,272
164Dec 29, 2025 05:014,20978,834,60053,710,0001,013,0002,416,640
165Dec 29, 2025 04:454,22087,001,66149,878,0004,987,0002,469,888
166Dec 29, 2025 04:554,22185,781,67050,888,0003,991,0002,265,088
167Dec 29, 2025 05:024,22185,816,64551,876,0002,992,0002,359,296
168Dec 29, 2025 04:564,22284,965,85748,895,0005,987,0002,355,200
169Dec 29, 2025 05:094,22784,626,27051,948,0002,997,0002,412,544
170Dec 29, 2025 05:094,23582,625,64648,050,0007,007,0002,285,568
171Dec 29, 2025 04:444,23880,708,78750,086,0005,008,0002,265,088
172Dec 29, 2025 05:184,24279,616,77349,128,0006,015,0002,404,352
173Dec 29, 2025 04:554,25581,630,91649,279,0006,034,0002,363,392
174Dec 29, 2025 05:084,25784,487,98151,313,0004,024,0002,469,888
175Dec 29, 2025 05:194,26282,155,90451,379,0004,029,0002,486,272
176Dec 29, 2025 04:484,26480,037,95649,385,0006,047,0002,445,312
177Dec 29, 2025 05:224,26478,643,67752,415,0003,023,0002,392,064
178Dec 29, 2025 04:394,26681,813,92454,456,0001,008,0002,310,144
179Dec 29, 2025 05:114,28683,253,56652,678,0003,039,0002,494,464
180Dec 29, 2025 05:204,29878,965,92953,873,0001,995,0002,494,464
181Dec 29, 2025 04:394,32084,891,64851,144,0005,014,0002,416,640
182Dec 29, 2025 04:584,32081,916,21651,145,0005,014,0002,433,024
183Dec 29, 2025 04:394,32687,049,92253,227,0003,012,0002,342,912
184Dec 29, 2025 05:004,32983,652,72352,261,0004,020,0002,371,584
185Dec 29, 2025 05:274,33381,935,03851,297,0005,029,0002,412,544
186Dec 29, 2025 05:234,33980,270,91451,374,0005,036,0002,314,240
187Dec 29, 2025 05:014,37486,085,14954,869,0001,995,0002,306,048
188Dec 29, 2025 05:254,37782,288,02949,915,0006,988,0002,437,120
189Dec 29, 2025 05:044,38483,840,84553,994,0002,999,0002,338,816
190Dec 29, 2025 05:054,38982,779,33054,057,0003,003,0002,404,352
191Dec 29, 2025 04:444,39587,007,16254,129,0003,007,0002,342,912
192Dec 29, 2025 05:014,41381,685,05053,349,0004,026,0002,351,104
193Dec 29, 2025 04:554,42584,173,84254,496,0003,027,0002,269,184
194Dec 29, 2025 04:394,43384,743,34156,615,0001,010,0002,465,792
195Dec 29, 2025 05:044,45282,980,72453,886,0003,991,0002,424,832
196Dec 29, 2025 05:014,47683,184,28054,174,0004,012,0002,281,472
197Dec 29, 2025 05:274,54582,379,70654,075,0005,006,0002,318,336
198Dec 29, 2025 05:164,55190,293,45357,158,0002,005,0002,445,312
199Dec 29, 2025 04:394,56284,235,87654,285,0005,026,0002,461,696
200Dec 29, 2025 04:414,56388,377,07156,299,0003,016,0002,424,832
201Dec 29, 2025 04:504,57180,172,34456,398,0003,021,0002,408,448
202Dec 29, 2025 05:024,64794,691,23857,386,0003,020,0002,297,856
203Dec 29, 2025 05:274,77091,475,72260,008,0002,000,0002,330,624
204Dec 29, 2025 05:144,86288,678,49761,200,0002,006,0002,289,664