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 05:16Josu San MartinJosu San MartinScore: 4,342Success
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 00:573,48771,849,96741,297,0004,029,0002,490,368
2Dec 29, 2025 00:573,60871,509,92042,908,0003,991,0002,502,656
3Dec 29, 2025 00:363,62775,649,84143,139,0004,013,0002,510,848
4Dec 29, 2025 05:253,68473,570,49044,901,0002,993,0002,424,832
5Dec 29, 2025 04:393,69580,869,61744,032,0004,002,0002,330,624
6Dec 29, 2025 05:243,72270,415,95845,363,0003,024,0002,412,544
7Dec 29, 2025 05:053,74982,881,98347,727,0001,015,0002,318,336
8Dec 29, 2025 05:273,79079,168,01647,256,0002,010,0002,289,664
9Dec 29, 2025 04:403,79572,790,18943,297,0006,041,0002,433,024
10Dec 29, 2025 00:553,80979,855,30047,496,0002,021,0002,506,752
11Dec 29, 2025 04:403,91376,028,40448,878,0001,995,0002,277,376
12Dec 29, 2025 00:553,93379,300,99948,118,0003,007,0002,355,200
13Dec 29, 2025 05:183,93377,426,84247,122,0004,010,0002,318,336
14Dec 29, 2025 00:543,95179,707,85948,345,0003,021,0002,379,776
15Dec 29, 2025 05:073,95176,887,58949,346,0002,014,0002,404,352
16Dec 29, 2025 05:203,95473,650,28747,376,0004,032,0002,297,856
17Dec 29, 2025 01:153,95673,632,03848,400,0003,025,0002,437,120
18Dec 29, 2025 00:353,97077,776,80347,559,0004,047,0002,371,584
19Dec 29, 2025 05:203,97079,822,45450,601,0001,012,0002,367,488
20Dec 29, 2025 05:063,98978,940,44447,865,0003,988,0002,338,816
21Dec 29, 2025 05:123,99083,634,77549,881,0001,995,0002,363,392
22Dec 29, 2025 05:263,99376,457,42048,916,0002,994,0002,342,912
23Dec 29, 2025 05:064,00879,247,87150,106,0002,004,0002,347,008
24Dec 29, 2025 00:554,02175,679,30048,254,0004,021,0002,326,528
25Dec 29, 2025 05:174,02776,277,89449,332,0003,020,0002,355,200
26Dec 29, 2025 05:214,04779,696,03848,559,0004,046,0002,387,968
27Dec 29, 2025 00:544,05178,500,81750,643,0002,025,0002,285,568
28Dec 29, 2025 05:174,06683,306,08948,870,0003,989,0002,494,464
29Dec 29, 2025 05:104,07182,486,65348,931,0003,994,0002,379,776
30Dec 29, 2025 00:574,07985,609,42250,025,0003,001,0002,342,912
31Dec 29, 2025 01:144,08681,419,94449,113,0004,009,0002,367,488
32Dec 29, 2025 05:214,09679,382,23447,219,0006,027,0002,498,560
33Dec 29, 2025 00:544,09880,600,90750,256,0003,015,0002,359,296
34Dec 29, 2025 05:114,10682,337,59450,356,0003,021,0002,326,528
35Dec 29, 2025 05:224,12384,337,67449,558,0004,045,0002,351,104
36Dec 29, 2025 00:554,13382,908,61452,716,0001,013,0002,314,240
37Dec 29, 2025 00:354,14180,450,17348,845,0004,984,0002,334,720
38Dec 29, 2025 00:544,14377,793,76650,864,0002,992,0002,469,888
39Dec 29, 2025 05:084,14385,357,49748,876,0004,987,0002,416,640
40Dec 29, 2025 00:354,14485,802,09452,875,000997,0002,437,120
41Dec 29, 2025 00:554,14681,593,94750,901,0002,994,0002,310,144
42Dec 29, 2025 00:354,15480,438,72252,004,0002,000,0002,383,872
43Dec 29, 2025 00:354,15484,236,92050,008,0004,000,0002,510,848
44Dec 29, 2025 05:104,15781,296,73552,039,0002,001,0002,461,696
45Dec 29, 2025 05:054,16180,616,77052,087,0002,003,0002,494,464
46Dec 29, 2025 00:554,16277,288,34349,092,0005,009,0002,404,352
47Dec 29, 2025 05:114,16284,304,22550,102,0004,008,0002,416,640
48Dec 29, 2025 04:384,18481,512,33552,384,0002,014,0002,355,200
49Dec 29, 2025 04:404,18482,706,72848,352,0006,044,0002,314,240
50Dec 29, 2025 01:144,19773,180,30751,533,0003,031,0002,301,952
51Dec 29, 2025 00:544,20680,250,97452,650,0002,025,0002,277,376
52Dec 29, 2025 04:384,20986,975,98751,679,0003,039,0002,473,984
53Dec 29, 2025 05:114,22381,162,68250,912,0003,993,0002,297,856
54Dec 29, 2025 05:124,24183,700,41450,118,0005,011,0002,269,184
55Dec 29, 2025 01:164,24982,726,38753,234,0002,008,0002,314,240
56Dec 29, 2025 05:054,25283,000,50050,256,0005,025,0002,396,160
57Dec 29, 2025 05:074,25479,899,13951,275,0004,021,0002,265,088
58Dec 29, 2025 00:354,25878,061,74752,335,0003,019,0002,359,296
59Dec 29, 2025 00:544,25875,829,19650,326,0005,032,0002,379,776
60Dec 29, 2025 00:564,26382,301,07551,388,0004,030,0002,453,504
61Dec 29, 2025 05:064,26577,929,55053,430,0002,016,0002,347,008
62Dec 29, 2025 00:534,27680,466,65352,551,0003,031,0002,400,256
63Dec 29, 2025 05:284,27679,597,42853,564,0002,021,0002,465,792
64Dec 29, 2025 05:234,27783,897,69153,578,0002,021,0002,371,584
65Dec 29, 2025 01:144,28686,085,52854,702,0001,013,0002,420,736
66Dec 29, 2025 04:394,28682,730,61754,700,0001,012,0002,342,912
67Dec 29, 2025 05:154,29780,465,08453,871,0001,995,0002,293,760
68Dec 29, 2025 00:534,29885,759,20250,884,0004,988,0002,273,280
69Dec 29, 2025 05:184,31280,352,65353,057,0003,003,0002,408,448
70Dec 29, 2025 00:354,32883,007,35753,250,0003,014,0002,445,312
71Dec 29, 2025 05:134,33079,275,51052,272,0004,020,0002,310,144
72Dec 29, 2025 05:254,33283,801,78753,297,0003,016,0002,498,560
73Dec 29, 2025 05:174,33381,819,25052,308,0004,023,0002,338,816
74Dec 29, 2025 00:364,34181,762,15154,418,0002,015,0002,347,008
75Dec 29, 2025 00:564,34282,327,57149,396,0007,056,0002,277,376
76Dec 29, 2025 00:554,34283,518,55854,429,0002,015,0002,506,752
77Dec 29, 2025 05:254,35783,644,95453,608,0003,034,0002,510,848
78Dec 29, 2025 00:354,36488,042,63955,717,0001,013,0002,351,104
79Dec 29, 2025 05:124,37983,200,29154,934,0001,997,0002,322,432
80Dec 29, 2025 00:534,38182,944,73751,954,0004,995,0002,383,872
81Dec 29, 2025 05:144,38386,118,39452,981,0003,998,0002,506,752
82Dec 29, 2025 00:564,38584,855,17451,005,0006,000,0002,428,928
83Dec 29, 2025 05:234,38782,714,54953,029,0004,002,0002,301,952
84Dec 29, 2025 05:264,39083,470,36054,069,0003,003,0002,326,528
85Dec 29, 2025 00:364,39983,546,93554,175,0003,009,0002,375,680
86Dec 29, 2025 01:164,45182,521,58753,867,0003,990,0002,338,816
87Dec 29, 2025 01:144,45887,188,77855,950,0001,998,0002,383,872
88Dec 29, 2025 05:084,46786,687,14154,066,0004,004,0002,310,144
89Dec 29, 2025 00:554,48680,568,49955,306,0003,016,0002,441,216
90Dec 29, 2025 00:354,48981,962,11055,334,0003,018,0002,473,984
91Dec 29, 2025 00:574,49779,130,41055,439,0003,023,0002,371,584
92Dec 29, 2025 00:574,50285,929,36754,489,0004,036,0002,277,376
93Dec 29, 2025 01:144,50585,522,21351,502,0007,069,0002,412,544
94Dec 29, 2025 01:164,51691,127,52857,692,0001,012,0002,469,888
95Dec 29, 2025 01:164,51784,025,49455,682,0003,037,0002,314,240
96Dec 29, 2025 05:194,52585,824,84756,831,0001,994,0002,342,912
97Dec 29, 2025 05:244,52783,715,30055,865,0002,992,0002,306,048
98Dec 29, 2025 05:224,52883,531,35156,866,0001,995,0002,297,856
99Dec 29, 2025 05:184,53688,218,28456,974,0001,999,0002,387,968
100Dec 29, 2025 05:204,55687,442,91455,210,0004,015,0002,383,872
101Dec 29, 2025 01:154,55889,326,17557,245,0002,008,0002,265,088
102Dec 29, 2025 04:394,56188,238,60658,290,0001,005,0002,293,760
103Dec 29, 2025 00:354,56384,433,14656,299,0003,016,0002,322,432
104Dec 29, 2025 05:044,59684,693,90857,723,0002,025,0002,420,736
105Dec 29, 2025 05:104,61587,356,29456,992,0002,999,0002,342,912
106Dec 29, 2025 00:554,62387,615,78253,090,0007,012,0002,465,792
107Dec 29, 2025 05:044,63287,114,87757,206,0003,010,0002,437,120
108Dec 29, 2025 00:544,63392,669,66755,212,0005,019,0002,473,984
109Dec 29, 2025 05:164,64288,980,37556,318,0004,022,0002,494,464
110Dec 29, 2025 00:554,65891,798,69657,530,0003,027,0002,482,176
111Dec 29, 2025 00:544,66990,995,63758,677,0002,023,0002,310,144
112Dec 29, 2025 00:554,68187,214,88858,861,0001,995,0002,301,952
113Dec 29, 2025 00:534,68285,977,78757,871,0002,993,0002,473,984
114Dec 29, 2025 05:214,68485,497,29755,899,0004,991,0002,314,240
115Dec 29, 2025 00:534,68585,070,81259,902,000998,0002,420,736
116Dec 29, 2025 05:194,68985,886,13356,956,0003,996,0002,519,040
117Dec 29, 2025 00:564,69092,675,78557,969,0002,998,0002,502,656
118Dec 29, 2025 05:084,69386,915,93660,006,0001,000,0002,371,584
119Dec 29, 2025 05:154,69784,233,00658,060,0003,003,0002,375,680
120Dec 29, 2025 05:284,70589,124,14958,156,0003,008,0002,330,624
121Dec 29, 2025 00:554,70684,808,65258,165,0003,008,0002,314,240
122Dec 29, 2025 05:134,74186,409,06657,589,0004,041,0002,379,776
123Dec 29, 2025 05:224,76084,994,83359,881,0001,996,0002,338,816
124Dec 29, 2025 05:144,77392,523,14858,049,0004,003,0002,334,720
125Dec 29, 2025 00:354,79891,279,10259,358,0003,018,0002,510,848
126Dec 29, 2025 05:264,80688,799,47161,468,0001,007,0002,289,664
127Dec 29, 2025 05:284,84190,767,61559,941,0002,997,0002,473,984
128Dec 29, 2025 05:274,86597,102,93560,231,0003,011,0002,371,584
129Dec 29, 2025 04:384,87188,216,42260,311,0003,015,0002,326,528
130Dec 29, 2025 01:164,87386,201,30560,331,0003,016,0002,482,176
131Dec 29, 2025 00:564,88587,878,95457,458,0006,048,0002,310,144
132Dec 29, 2025 05:194,92592,568,55059,018,0005,001,0002,441,216
133Dec 29, 2025 05:274,94691,231,10760,282,0004,018,0002,342,912
134Dec 29, 2025 05:044,94890,415,37360,301,0004,020,0002,371,584
135Dec 29, 2025 01:144,95190,778,23461,342,0003,016,0002,449,408
136Dec 29, 2025 01:154,97891,583,50560,671,0004,044,0002,379,776
137Dec 29, 2025 05:245,00091,399,37263,002,0002,000,0002,449,408
138Dec 29, 2025 05:145,01091,141,87763,122,0002,003,0002,273,280
139Dec 29, 2025 00:565,06596,372,53563,854,0001,995,0002,334,720
140Dec 29, 2025 05:235,10193,653,49663,295,0003,014,0002,355,200
141Dec 29, 2025 05:165,12793,262,93563,617,0003,029,0002,404,352
142Dec 29, 2025 05:135,15197,341,50464,968,0001,999,0002,289,664
143Dec 29, 2025 00:535,16791,491,87663,157,0004,009,0002,416,640
144Dec 29, 2025 05:165,22594,158,49166,926,000998,0002,273,280
145Dec 29, 2025 00:575,25692,762,45964,313,0004,019,0002,285,568
146Dec 29, 2025 05:155,30293,798,71965,933,0002,996,0002,310,144
147Dec 29, 2025 01:165,31893,761,55365,121,0004,007,0002,301,952
148Dec 29, 2025 05:075,45095,630,00668,851,0001,995,0002,449,408
149Dec 29, 2025 00:545,48796,553,10866,304,0005,023,0002,273,280
150Dec 29, 2025 00:355,684104,036,73470,898,0002,995,0002,461,696