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 14, 2026 16:55Dominique GarmierDominique GarmierScore: 31,207Success
Source Code

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

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Mar 14, 2026 18:4524,288343,959,941307,753,0007,993,0002,465,792
2Mar 14, 2026 18:0024,590351,774,236309,678,0009,989,0002,404,352
3Mar 15, 2026 09:5724,695345,043,577314,030,0007,000,0002,449,408
4Mar 14, 2026 18:0425,035360,717,818315,442,00010,014,0002,428,928
5Mar 14, 2026 18:3326,212373,102,949332,765,0007,994,0002,441,216
6Mar 14, 2026 15:0226,243373,867,952331,160,00010,004,0002,412,544
7Mar 15, 2026 09:5726,325366,240,022338,224,0004,002,0002,301,952
8Mar 15, 2026 11:0126,376368,966,880338,894,0003,998,0002,494,464
9Mar 14, 2026 18:0026,424374,979,050337,522,0005,991,0002,506,752
10Mar 14, 2026 16:3726,520373,262,892336,762,0007,994,0002,342,912
11Mar 14, 2026 17:1526,599372,928,565336,787,0008,994,0002,293,760
12Mar 14, 2026 17:4926,728372,070,576343,458,0004,005,0002,424,832
13Mar 14, 2026 17:4026,984379,129,750340,796,0009,994,0002,506,752
14Mar 14, 2026 18:2927,164383,565,537345,127,0008,002,0002,437,120
15Mar 14, 2026 18:3627,515390,032,513349,698,0007,993,0002,285,568
16Mar 14, 2026 17:0327,526389,704,863349,836,0007,996,0002,306,048
17Mar 14, 2026 18:2627,562385,720,346348,304,00010,008,0002,260,992
18Mar 14, 2026 17:1527,564385,915,065352,329,0006,005,0002,342,912
19Mar 14, 2026 16:3627,608384,398,814350,903,0007,997,0002,416,640
20Mar 14, 2026 17:0327,751384,196,537355,767,0004,996,0002,445,312
21Mar 14, 2026 18:4727,826391,203,026354,739,0006,994,0002,326,528
22Mar 14, 2026 17:4927,863393,423,481354,211,0008,004,0002,269,184
23Mar 14, 2026 19:0427,899392,500,046353,689,0008,992,0002,371,584
24Mar 14, 2026 18:3328,052401,094,969355,680,0008,991,0002,310,144
25Mar 14, 2026 18:2628,057393,974,606356,753,0007,994,0002,453,504
26Mar 14, 2026 17:1928,130389,474,596361,688,0003,996,0002,490,368
27Mar 14, 2026 17:1928,167392,878,406357,173,0009,004,0002,416,640
28Mar 14, 2026 18:2628,233393,054,657361,035,0006,000,0002,334,720
29Mar 14, 2026 17:3028,338396,350,193363,395,0005,005,0002,351,104
30Mar 14, 2026 18:2928,446401,635,071362,808,0006,996,0002,269,184
31Mar 14, 2026 17:5328,536401,398,342363,974,0006,999,0002,322,432
32Mar 14, 2026 18:5028,546398,922,782356,091,00015,003,0002,334,720
33Mar 14, 2026 17:4928,587399,952,975363,635,0007,991,0002,326,528
34Mar 14, 2026 18:4528,604400,191,361364,860,0006,997,0002,433,024
35Mar 14, 2026 18:2628,635399,691,071368,255,0004,002,0002,338,816
36Mar 14, 2026 17:1528,818408,065,975365,639,0008,991,0002,371,584
37Mar 14, 2026 17:4228,836401,534,075364,874,0009,996,0002,273,280
38Mar 14, 2026 16:5429,133401,997,356371,740,0006,995,0002,510,848
39Mar 14, 2026 18:4729,180415,765,828373,332,0006,005,0002,359,296
40Mar 14, 2026 17:0229,204405,450,348370,667,0008,991,0002,433,024
41Mar 14, 2026 15:0229,217403,515,358371,830,0007,996,0002,433,024
42Mar 14, 2026 15:0229,357411,020,955375,642,0005,994,0002,482,176
43Mar 14, 2026 16:4129,360405,194,266374,687,0006,994,0002,420,736
44Mar 14, 2026 18:3329,363405,340,592373,730,0007,994,0002,375,680
45Mar 14, 2026 17:4929,366404,287,908373,765,0007,994,0002,449,408
46Mar 14, 2026 18:5829,431408,954,153373,608,0008,990,0002,273,280
47Mar 14, 2026 18:5729,510415,086,967368,642,00014,985,0002,478,080
48Mar 14, 2026 17:4229,523411,332,727375,801,0007,995,0002,506,752
49Mar 15, 2026 14:2729,563411,735,940378,309,0006,004,0002,445,312
50Mar 14, 2026 18:3329,610410,622,056372,930,00011,997,0002,383,872
51Mar 14, 2026 17:0329,622411,406,082377,088,0008,001,0002,498,560
52Mar 14, 2026 18:3329,638411,299,648379,287,0006,004,0002,260,992
53Mar 15, 2026 11:4029,726420,789,506379,426,0007,007,0002,494,464
54Mar 14, 2026 17:1929,740417,062,335379,630,0006,993,0002,453,504
55Mar 14, 2026 16:5429,799420,812,905383,379,0004,003,0002,301,952
56Mar 14, 2026 18:2629,802414,018,901378,419,0009,009,0002,461,696
57Mar 15, 2026 11:0129,847414,755,900380,010,0008,000,0002,265,088
58Mar 14, 2026 18:3629,896413,767,175379,659,0008,991,0002,400,256
59Mar 14, 2026 18:5729,932420,741,208383,114,0006,001,0002,297,856
60Mar 14, 2026 18:3629,976420,689,630383,676,0006,010,0002,457,600
61Mar 14, 2026 17:5530,087418,606,874382,133,0009,003,0002,277,376
62Mar 14, 2026 17:5530,147418,253,335386,911,0004,998,0002,445,312
63Mar 14, 2026 16:3630,203421,939,316384,643,0007,992,0002,342,912
64Mar 14, 2026 18:1830,234423,675,778384,037,0009,000,0002,359,296
65Mar 14, 2026 15:0230,262418,392,369384,397,0009,009,0002,506,752
66Mar 14, 2026 18:3630,297423,812,975384,869,0008,996,0002,322,432
67Mar 14, 2026 19:0430,310419,539,136384,029,00010,000,0002,404,352
68Mar 14, 2026 15:0230,338424,076,325389,390,0005,005,0002,441,216
69Mar 14, 2026 15:0230,342421,265,582385,435,0009,010,0002,351,104
70Mar 14, 2026 18:0030,364420,512,556384,736,0009,993,0002,486,272
71Mar 14, 2026 18:0430,386420,339,442388,024,0007,000,0002,297,856
72Mar 14, 2026 17:5330,491427,254,481390,376,0006,005,0002,416,640
73Mar 14, 2026 17:0330,513428,185,325387,681,0008,992,0002,506,752
74Mar 15, 2026 14:0830,569428,273,478389,385,0008,007,0002,269,184
75Mar 14, 2026 18:3130,616425,977,232392,009,0006,000,0002,314,240
76Mar 15, 2026 14:1430,691427,936,671393,981,0004,999,0002,519,040
77Mar 14, 2026 16:3730,715433,051,643394,295,0005,003,0002,392,064
78Mar 14, 2026 18:5730,807423,804,201391,479,0009,011,0002,473,984
79Mar 14, 2026 17:1930,814428,424,655395,594,0004,994,0002,375,680
80Mar 15, 2026 09:5730,938423,800,821396,197,0006,002,0002,428,928
81Mar 14, 2026 18:2930,976433,051,441399,686,0002,997,0002,437,120
82Mar 14, 2026 17:3631,067430,520,746393,879,0009,996,0002,433,024
83Mar 14, 2026 18:1831,185431,841,361396,396,0009,009,0002,355,200
84Mar 14, 2026 15:0231,188434,182,259398,431,0007,007,0002,367,488
85Mar 15, 2026 23:3531,190436,830,112393,483,00011,984,0002,428,928
86Mar 14, 2026 16:4131,207434,486,064398,691,0006,994,0002,408,448
87Mar 14, 2026 17:2331,231434,565,185402,009,0004,000,0002,404,352
88Mar 14, 2026 17:1531,237440,232,338400,080,0006,001,0002,379,776
89Mar 14, 2026 19:0431,250435,090,979398,248,0008,004,0002,453,504
90Mar 14, 2026 17:4031,284435,493,428398,700,0007,994,0002,269,184
91Mar 14, 2026 17:4031,293433,954,834398,819,0007,996,0002,494,464
92Mar 14, 2026 18:3331,363434,897,365399,723,0007,994,0002,269,184
93Mar 14, 2026 18:3131,425436,938,069402,516,0006,007,0002,428,928
94Mar 14, 2026 17:4231,477439,404,000401,196,0008,003,0002,375,680
95Mar 14, 2026 17:1931,576440,467,133402,475,0008,009,0002,387,968
96Mar 15, 2026 11:4031,595439,044,081403,734,0006,995,0002,453,504
97Mar 14, 2026 17:4931,720438,409,025399,349,00013,011,0002,506,752
98Mar 14, 2026 18:4731,828444,472,454403,766,0009,994,0002,453,504
99Mar 14, 2026 17:1531,837444,997,596408,883,0004,998,0002,322,432
100Mar 14, 2026 17:4931,853445,323,151408,092,0006,001,0002,363,392
101Mar 14, 2026 17:2331,857444,239,578407,144,0007,002,0002,379,776
102Mar 14, 2026 18:2631,867440,667,686411,266,0003,001,0002,416,640
103Mar 14, 2026 17:0331,909441,052,946403,823,00010,995,0002,338,816
104Mar 14, 2026 17:2331,936444,739,477407,159,0008,003,0002,506,752
105Mar 14, 2026 17:3531,943446,518,263410,251,0005,003,0002,494,464
106Mar 14, 2026 18:3331,943441,875,563409,251,0006,003,0002,445,312
107Mar 14, 2026 17:1531,944452,259,881408,263,0007,004,0002,433,024
108Mar 14, 2026 18:0031,953441,912,635408,388,0007,006,0002,498,560
109Mar 14, 2026 18:3632,183445,451,108409,374,0009,008,0002,297,856
110Mar 14, 2026 18:2932,232444,498,020408,012,00011,000,0002,383,872
111Mar 14, 2026 18:2632,249445,331,016413,236,0006,003,0002,428,928
112Mar 14, 2026 16:5532,289454,802,664413,758,0005,996,0002,293,760
113Mar 14, 2026 17:4232,290450,881,636413,771,0005,996,0002,355,200
114Mar 14, 2026 18:2632,334447,221,627416,337,0004,003,0002,310,144
115Mar 14, 2026 17:5532,341447,102,669413,427,0007,007,0002,428,928
116Mar 14, 2026 17:3032,384441,806,447410,991,0009,999,0002,334,720
117Mar 14, 2026 18:0432,406443,324,016418,272,0003,001,0002,506,752
118Mar 14, 2026 17:4232,604451,668,571415,857,0007,997,0002,400,256
119Mar 14, 2026 17:1932,613450,427,323415,973,0007,999,0002,363,392
120Mar 15, 2026 14:0832,633451,556,215417,227,0007,003,0002,404,352
121Mar 15, 2026 14:2732,681450,539,686414,862,0009,996,0002,289,664
122Mar 14, 2026 17:1532,740453,734,657416,631,0008,992,0002,338,816
123Mar 14, 2026 17:3632,751459,631,042419,764,0005,996,0002,473,984
124Mar 14, 2026 17:1532,752454,279,267420,781,0004,997,0002,453,504
125Mar 14, 2026 17:3532,791455,170,205421,286,0005,003,0002,334,720
126Mar 14, 2026 18:3332,797454,916,128419,357,0007,005,0002,322,432
127Mar 14, 2026 17:3032,834454,451,607418,847,0007,997,0002,506,752
128Mar 14, 2026 18:3132,854454,580,538419,097,0008,001,0002,314,240
129Mar 14, 2026 18:0032,859454,731,554422,160,0005,001,0002,314,240
130Mar 14, 2026 19:0432,875454,822,862419,368,0008,007,0002,457,600
131Mar 14, 2026 17:4932,909457,167,263422,819,0004,997,0002,445,312
132Mar 14, 2026 18:1832,916455,566,920419,905,0007,998,0002,355,200
133Mar 15, 2026 14:2732,952454,679,601423,377,0005,004,0002,510,848
134Mar 14, 2026 17:5332,986456,123,574421,822,0006,997,0002,408,448
135Mar 15, 2026 11:0133,001455,275,980419,019,00010,000,0002,347,008
136Mar 14, 2026 17:3633,125459,065,166420,640,0009,991,0002,306,048
137Mar 14, 2026 17:0633,185464,398,208425,398,0006,005,0002,404,352
138Mar 14, 2026 18:5033,217459,847,349425,821,0005,997,0002,301,952
139Mar 14, 2026 18:0033,224460,415,737424,918,0006,998,0002,334,720
140Mar 15, 2026 11:2733,347460,341,549422,528,00010,987,0002,326,528
141Mar 14, 2026 18:3633,419461,720,065428,438,0006,006,0002,400,256
142Mar 14, 2026 17:4233,433460,246,482430,631,0003,996,0002,404,352
143Mar 14, 2026 17:0633,449464,336,416430,844,0003,998,0002,461,696
144Mar 14, 2026 17:0333,507463,570,461427,602,0007,992,0002,437,120
145Mar 14, 2026 18:0033,537463,059,693426,988,0008,999,0002,408,448
146Mar 14, 2026 19:0433,637468,128,051429,272,0008,005,0002,379,776
147Mar 14, 2026 15:0233,674474,068,479432,770,0004,997,0002,416,640
148Mar 14, 2026 18:0033,678463,816,659429,817,0007,996,0002,400,256
149Mar 14, 2026 18:1933,680465,136,733427,838,0009,996,0002,416,640
150Mar 14, 2026 18:5833,891471,034,787432,596,0007,992,0002,338,816
151Mar 15, 2026 11:2733,905469,903,190431,771,0008,995,0002,367,488
152Mar 14, 2026 17:1933,918469,577,893431,936,0008,998,0002,424,832
153Mar 14, 2026 16:3733,951472,782,824433,351,0008,006,0002,408,448
154Mar 14, 2026 17:3533,972465,641,677431,639,0009,991,0002,510,848
155Mar 14, 2026 17:0334,049470,825,372438,635,0003,996,0002,412,544
156Mar 14, 2026 17:4234,051465,050,376435,674,0006,994,0002,363,392
157Mar 14, 2026 17:0234,057472,257,214436,749,0005,996,0002,318,336
158Mar 14, 2026 17:4934,068472,082,209431,884,00010,997,0002,404,352
159Mar 14, 2026 16:4534,162476,877,437437,110,0007,001,0002,318,336
160Mar 15, 2026 11:2734,177478,243,853440,302,0004,002,0002,404,352
161Mar 14, 2026 18:1934,180479,073,704436,336,0008,006,0002,396,160
162Mar 14, 2026 19:0434,203472,159,273436,643,0007,993,0002,412,544
163Mar 14, 2026 17:1934,224478,342,035432,911,00011,997,0002,351,104
164Mar 14, 2026 18:3634,232477,173,763439,016,0006,000,0002,420,736
165Mar 15, 2026 23:3534,277472,006,491439,603,0005,994,0002,424,832
166Mar 14, 2026 18:2934,397472,734,276442,166,0005,001,0002,510,848
167Mar 14, 2026 19:0434,403472,605,699442,243,0005,002,0002,433,024
168Mar 14, 2026 16:4534,406473,864,664440,268,0007,004,0002,441,216
169Mar 14, 2026 18:2934,421479,428,760440,466,0007,007,0002,314,240
170Mar 14, 2026 17:1934,478474,912,983441,211,0007,003,0002,387,968
171Mar 14, 2026 18:2934,504478,068,427435,570,00012,987,0002,326,528
172Mar 15, 2026 14:1434,506476,158,759441,586,0006,993,0002,469,888
173Mar 14, 2026 18:3634,507475,192,093438,595,0009,990,0002,297,856
174Mar 14, 2026 18:3334,511482,941,923441,645,0006,994,0002,428,928
175Mar 14, 2026 19:0434,518476,320,145441,745,0006,995,0002,502,656
176Mar 14, 2026 17:0234,536478,050,638444,966,0003,999,0002,457,600
177Mar 15, 2026 11:4034,574475,894,700444,457,0005,005,0002,396,160
178Mar 14, 2026 18:2934,592482,207,080439,702,0009,993,0002,326,528
179Mar 14, 2026 17:0334,597471,955,664441,772,0007,995,0002,519,040
180Mar 15, 2026 14:0834,737477,125,849446,581,0004,995,0002,469,888
181Mar 14, 2026 18:3634,888481,523,352447,554,0005,994,0002,363,392
182Mar 14, 2026 16:4135,004482,592,279450,055,0005,000,0002,461,696
183Mar 15, 2026 23:3535,047484,331,150446,621,0008,992,0002,519,040
184Mar 14, 2026 17:4235,489487,731,664450,346,00011,008,0002,449,408
185Mar 14, 2026 16:5435,581490,416,558456,557,0005,994,0002,490,368
186Mar 14, 2026 16:5535,652495,623,228459,477,0003,995,0002,355,200
187Mar 14, 2026 17:1535,694490,971,737457,017,0007,000,0002,371,584
188Mar 14, 2026 17:4935,817491,233,281462,623,0002,997,0002,486,272
189Mar 14, 2026 18:5835,817490,143,194456,625,0008,992,0002,355,200
190Mar 14, 2026 19:0435,818489,213,609454,643,00010,991,0002,412,544
191Mar 14, 2026 18:5035,820496,545,723457,671,0007,994,0002,379,776
192Mar 14, 2026 16:4535,847493,375,180458,008,0008,000,0002,265,088
193Mar 14, 2026 17:4236,133495,253,613465,736,0003,997,0002,387,968
194Mar 15, 2026 14:1436,228497,516,329459,969,00010,999,0002,502,656
195Mar 14, 2026 16:5536,290503,607,551462,778,0008,995,0002,461,696
196Mar 14, 2026 18:4536,316497,658,609462,103,00010,002,0002,506,752
197Mar 14, 2026 18:1936,431507,529,323464,615,0008,992,0002,400,256
198Mar 14, 2026 15:0236,536501,323,595467,969,0006,999,0002,498,560
199Mar 14, 2026 18:2936,621503,836,947471,069,0005,000,0002,301,952
200Mar 14, 2026 18:2636,816500,969,194474,609,0003,996,0002,297,856
201Mar 14, 2026 18:0037,599520,893,185482,793,0005,997,0002,285,568
202Mar 14, 2026 17:0638,096520,926,128487,240,0008,003,0002,465,792
203Mar 14, 2026 16:3638,189524,556,566491,458,0005,004,0002,408,448
204Mar 14, 2026 17:0338,724532,375,362497,403,0006,004,0002,400,256