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 20, 2026 15:04Dominique GarmierDominique GarmierScore: 16,493Success
Source Code

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

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Mar 20, 2026 22:2013,732210,772,835164,473,00014,040,0002,318,336
2Mar 20, 2026 14:1813,876218,535,978169,364,00011,023,0002,441,216
3Mar 20, 2026 13:2614,154206,473,660173,002,00011,000,0002,359,296
4Mar 20, 2026 13:4214,206212,283,284172,704,00011,979,0002,367,488
5Mar 20, 2026 21:4914,268212,015,922177,461,0008,020,0002,301,952
6Mar 20, 2026 13:4014,639219,874,878180,294,00010,016,0002,445,312
7Mar 20, 2026 13:2814,645216,886,157176,360,00014,028,0002,387,968
8Mar 20, 2026 13:4214,648216,067,043175,391,00015,033,0002,260,992
9Mar 20, 2026 14:4514,715220,104,930182,283,0009,014,0002,424,832
10Mar 20, 2026 23:3814,829213,119,771185,785,0006,991,0002,502,656
11Mar 20, 2026 14:2314,885220,209,296178,472,00015,039,0002,437,120
12Mar 20, 2026 13:4414,890224,197,278182,539,00011,032,0002,269,184
13Mar 20, 2026 23:5214,943225,348,230184,241,00010,013,0002,277,376
14Mar 20, 2026 23:5014,991219,050,271185,889,0008,994,0002,465,792
15Mar 20, 2026 13:3215,033224,397,304189,414,0006,013,0002,494,464
16Mar 20, 2026 13:2415,111226,861,482186,416,00010,022,0002,441,216
17Mar 20, 2026 23:5115,147222,817,811186,915,0009,995,0002,363,392
18Mar 20, 2026 13:5915,148221,881,350187,925,0008,996,0002,469,888
19Mar 20, 2026 13:2415,158225,450,595190,049,0007,001,0002,297,856
20Mar 20, 2026 23:5215,169228,942,019190,186,0007,006,0002,363,392
21Mar 20, 2026 13:3615,188223,983,500189,429,0008,018,0002,269,184
22Mar 20, 2026 23:3715,229219,649,042183,983,00013,998,0002,498,560
23Mar 20, 2026 23:5215,233222,742,912190,030,0008,001,0002,293,760
24Mar 20, 2026 14:3315,238219,400,222188,089,00010,004,0002,351,104
25Mar 20, 2026 13:4415,243218,253,567184,147,00014,011,0002,334,720
26Mar 20, 2026 21:4915,340229,749,787188,399,00011,023,0002,510,848
27Mar 20, 2026 23:2915,391224,550,840185,072,00015,005,0002,441,216
28Mar 20, 2026 23:5115,394228,390,608188,121,00012,007,0002,334,720
29Mar 20, 2026 13:1915,402230,609,514192,214,0008,008,0002,498,560
30Mar 20, 2026 13:4015,481229,182,948193,244,0008,010,0002,461,696
31Mar 20, 2026 17:0515,493226,469,160194,390,0007,014,0002,420,736
32Mar 20, 2026 13:2115,510231,269,803187,582,00014,043,0002,322,432
33Mar 20, 2026 13:1915,516227,516,758194,722,0006,990,0002,383,872
34Mar 20, 2026 13:3515,530221,479,417196,894,0004,997,0002,510,848
35Mar 25, 2026 01:0015,603229,192,434192,851,0009,992,0002,433,024
36Mar 20, 2026 13:2815,636228,075,042196,264,0007,009,0002,400,256
37Mar 20, 2026 13:4215,636227,464,521192,250,00011,014,0002,306,048
38Mar 20, 2026 13:2415,642229,300,103194,326,0009,015,0002,375,680
39Mar 20, 2026 23:3815,642230,072,863197,335,0006,010,0002,367,488
40Mar 20, 2026 13:2615,671231,981,298192,734,00010,984,0002,437,120
41Mar 20, 2026 23:2915,673231,823,724196,760,0006,991,0002,285,568
42Mar 20, 2026 23:5215,679230,105,473190,836,00012,988,0002,494,464
43Mar 20, 2026 13:2815,699227,107,722198,089,0006,002,0002,297,856
44Mar 20, 2026 17:0415,725236,467,646196,411,0008,016,0002,260,992
45Mar 20, 2026 22:2015,728233,128,818198,445,0006,013,0002,359,296
46Mar 20, 2026 13:2415,770228,614,713191,010,00014,000,0002,506,752
47Mar 20, 2026 22:2415,789228,954,521195,250,00010,012,0002,449,408
48Mar 20, 2026 13:2315,795233,986,669197,327,0008,013,0002,265,088
49Mar 20, 2026 23:5015,814237,881,725196,561,0009,025,0002,473,984
50Mar 20, 2026 23:5015,819239,789,038201,656,0003,993,0002,510,848
51Mar 20, 2026 14:4515,870238,683,790197,298,0009,013,0002,387,968
52Mar 20, 2026 23:3815,876234,244,544198,374,0008,015,0002,285,568
53Mar 20, 2026 13:4415,881227,238,967196,436,00010,022,0002,396,160
54Mar 20, 2026 22:2415,945242,654,525198,270,0009,012,0002,355,200
55Mar 20, 2026 23:0315,954239,094,837201,395,0006,011,0002,510,848
56Mar 20, 2026 13:3515,980233,559,217200,752,0006,991,0002,297,856
57Mar 20, 2026 21:4916,001240,708,104198,019,00010,000,0002,400,256
58Mar 20, 2026 17:1816,013239,069,823202,170,0006,005,0002,351,104
59Mar 20, 2026 14:3316,014232,114,057201,179,0007,006,0002,392,064
60Mar 20, 2026 13:3216,019230,316,625198,234,00010,011,0002,449,408
61Mar 20, 2026 13:5516,021236,044,616197,263,00011,014,0002,416,640
62Mar 20, 2026 22:1716,026238,557,867196,316,00012,019,0002,285,568
63Mar 20, 2026 13:2316,064236,298,294198,837,0009,991,0002,404,352
64Mar 20, 2026 21:5216,098243,034,776203,262,0006,007,0002,445,312
65Mar 20, 2026 13:2316,104237,743,487203,346,0006,010,0002,375,680
66Mar 20, 2026 14:4516,133234,262,552201,740,0007,989,0002,453,504
67Mar 20, 2026 22:1716,153237,530,118201,986,0007,999,0002,400,256
68Mar 20, 2026 13:4216,154237,935,384195,998,00013,999,0002,367,488
69Mar 20, 2026 22:0216,163241,089,888203,110,0007,003,0002,285,568
70Mar 20, 2026 13:3616,180248,473,812199,321,00011,017,0002,453,504
71Mar 20, 2026 21:5216,182235,048,885200,352,00010,017,0002,469,888
72Mar 20, 2026 14:3816,219236,361,488198,855,00011,991,0002,519,040
73Mar 20, 2026 23:5216,260242,991,576202,363,0009,016,0002,289,664
74Mar 20, 2026 14:0616,290243,104,030203,778,0007,991,0002,441,216
75Mar 20, 2026 17:0416,297236,040,252202,868,0008,994,0002,502,656
76Mar 20, 2026 13:2316,300239,356,479204,904,0006,996,0002,408,448
77Mar 20, 2026 23:2416,305236,904,116202,966,0008,998,0002,445,312
78Mar 20, 2026 23:5616,313239,039,992198,070,00014,004,0002,428,928
79Mar 20, 2026 13:3616,329245,151,752197,257,00015,019,0002,441,216
80Mar 20, 2026 13:3516,376236,216,703203,897,0008,995,0002,289,664
81Mar 20, 2026 13:2416,378241,935,177203,922,0008,996,0002,330,624
82Mar 20, 2026 13:2616,386236,319,680205,020,0008,000,0002,404,352
83Mar 20, 2026 16:4316,388239,337,442203,048,00010,002,0002,465,792
84Mar 20, 2026 23:5616,402245,154,376206,221,0007,007,0002,478,080
85Mar 20, 2026 13:3816,468238,164,246203,079,00011,004,0002,301,952
86Mar 20, 2026 13:2116,493242,477,629204,388,00010,019,0002,445,312
87Mar 20, 2026 17:0516,499246,145,698204,461,00010,022,0002,351,104
88Mar 20, 2026 13:4216,523243,614,536203,813,00010,989,0002,478,080
89Mar 20, 2026 22:4116,538236,410,407204,996,0009,999,0002,297,856
90Mar 20, 2026 23:2516,556238,744,180209,219,0006,006,0002,486,272
91Mar 20, 2026 13:2116,587239,882,342206,648,0008,984,0002,363,392
92Mar 20, 2026 14:3816,593247,791,051207,715,0007,989,0002,371,584
93Mar 20, 2026 14:2416,595244,120,263207,740,0007,990,0002,408,448
94Mar 20, 2026 23:2516,595245,545,187209,743,0005,992,0002,273,280
95Mar 20, 2026 13:4916,599240,198,806207,792,0007,992,0002,322,432
96Mar 20, 2026 22:3716,607242,234,632205,901,0009,995,0002,326,528
97Mar 20, 2026 23:2716,623240,889,968206,094,00010,004,0002,367,488
98Mar 20, 2026 23:2116,631240,925,283211,195,0005,004,0002,293,760
99Mar 20, 2026 13:5516,643243,332,843209,347,0007,011,0002,379,776
100Mar 20, 2026 14:4416,645238,726,571202,355,00014,024,0002,273,280
101Mar 20, 2026 23:5616,676255,007,528205,802,00010,989,0002,367,488
102Mar 20, 2026 13:1916,710244,869,993209,218,0008,008,0002,265,088
103Mar 20, 2026 13:2116,717244,317,405207,302,00010,014,0002,445,312
104Mar 20, 2026 13:4216,732250,983,672206,488,00011,026,0002,260,992
105Mar 20, 2026 21:5916,762274,797,977204,912,00012,994,0002,297,856
106Mar 20, 2026 13:2816,781245,130,266212,154,0006,004,0002,506,752
107Mar 20, 2026 13:2616,788244,524,958211,236,0007,007,0002,318,336
108Mar 20, 2026 13:4216,796244,898,822212,338,0006,009,0002,506,752
109Mar 20, 2026 23:1916,804246,546,006208,433,00010,020,0002,355,200
110Mar 20, 2026 13:2616,807242,229,617208,468,00010,022,0002,314,240
111Mar 20, 2026 23:5216,835250,358,015210,866,0007,994,0002,465,792
112Mar 20, 2026 23:4816,839246,947,767205,914,00012,994,0002,310,144
113Mar 20, 2026 14:0616,865249,133,357212,234,0007,007,0002,334,720
114Mar 20, 2026 13:2316,879247,550,573210,407,0009,017,0002,502,656
115Mar 20, 2026 19:1216,903251,877,498210,752,0008,989,0002,330,624
116Mar 20, 2026 17:1816,906246,841,910211,782,0007,991,0002,490,368
117Mar 20, 2026 14:1316,939246,537,186210,200,00010,009,0002,318,336
118Mar 20, 2026 14:1816,948242,045,895210,306,00010,014,0002,367,488
119Mar 20, 2026 14:2316,950251,020,582209,338,00011,017,0002,408,448
120Mar 25, 2026 01:0016,954246,407,370209,379,00011,019,0002,498,560
121Mar 20, 2026 13:4216,993245,938,918211,908,0008,996,0002,260,992
122Mar 20, 2026 16:4316,995241,753,350212,942,0007,997,0002,301,952
123Mar 20, 2026 13:2417,021253,901,693212,260,0009,011,0002,326,528
124Mar 20, 2026 13:4017,030249,155,655210,373,00011,019,0002,449,408
125Mar 20, 2026 23:0317,036248,139,838213,451,0008,016,0002,310,144
126Mar 20, 2026 22:4917,041253,703,853213,509,0008,019,0002,428,928
127Mar 20, 2026 13:2117,065246,245,395208,854,00012,990,0002,371,584
128Mar 20, 2026 14:4417,106248,962,487212,361,00010,017,0002,490,368
129Mar 20, 2026 14:2317,111248,723,018210,418,00012,023,0002,478,080
130Mar 20, 2026 13:4917,135255,134,241212,769,0009,989,0002,269,184
131Mar 20, 2026 23:3817,147251,226,334212,915,0009,996,0002,519,040
132Mar 20, 2026 13:2617,160256,417,515215,074,0008,002,0002,424,832
133Mar 20, 2026 13:5917,207254,949,302214,666,0009,028,0002,392,064
134Mar 20, 2026 14:0117,208251,743,285213,712,0009,986,0002,449,408
135Mar 20, 2026 13:2417,209250,415,574212,729,00010,986,0002,359,296
136Mar 20, 2026 19:1217,213249,256,283214,781,0008,990,0002,478,080
137Mar 20, 2026 13:2117,227251,571,706213,949,0009,997,0002,519,040
138Mar 20, 2026 23:5117,256243,216,735215,317,0009,013,0002,371,584
139Mar 20, 2026 13:3617,261257,054,466214,379,00010,017,0002,306,048
140Mar 20, 2026 23:4217,270250,729,418212,487,00012,027,0002,269,184
141Mar 20, 2026 22:3717,287249,051,087219,732,0004,993,0002,330,624
142Mar 20, 2026 23:3817,352249,687,163215,545,00010,025,0002,412,544
143Mar 20, 2026 13:2817,373252,672,790215,860,0009,993,0002,297,856
144Mar 20, 2026 14:2417,392253,420,634213,094,00013,005,0002,265,088
145Mar 20, 2026 17:1017,399254,975,387212,178,00014,011,0002,285,568
146Mar 20, 2026 22:4917,420259,798,508221,452,0005,010,0002,400,256
147Mar 20, 2026 13:3617,442253,664,497217,758,0008,990,0002,322,432
148Mar 20, 2026 13:4217,492252,460,878219,380,0008,013,0002,334,720
149Mar 20, 2026 22:4117,519257,797,771219,760,0007,991,0002,465,792
150Mar 20, 2026 17:0517,525258,948,761220,832,0006,994,0002,330,624
151Mar 20, 2026 14:4417,533254,372,038214,932,00012,995,0002,260,992
152Mar 20, 2026 16:5917,547255,299,652221,105,0007,003,0002,375,680
153Mar 20, 2026 13:3217,567256,871,252223,367,0005,008,0002,285,568
154Mar 20, 2026 23:2917,604262,632,251218,860,0009,993,0002,387,968
155Mar 20, 2026 14:0617,608254,898,799217,908,00010,995,0002,322,432
156Mar 20, 2026 14:2417,628254,635,923218,156,00011,007,0002,433,024
157Mar 20, 2026 14:0117,637251,432,054220,270,0009,011,0002,289,664
158Mar 20, 2026 23:4217,660260,455,096221,557,0008,020,0002,502,656
159Mar 20, 2026 22:3717,685255,493,803220,908,0008,996,0002,420,736
160Mar 20, 2026 23:2717,707257,338,254225,183,0005,004,0002,412,544
161Mar 20, 2026 13:2617,712253,089,651224,250,0006,006,0002,510,848
162Mar 20, 2026 13:2417,741262,623,470224,649,0005,990,0002,347,008
163Mar 20, 2026 23:2117,792260,608,684220,288,00011,014,0002,486,272
164Mar 20, 2026 22:0217,846254,661,196218,994,00012,999,0002,404,352
165Mar 20, 2026 13:5517,868259,944,953220,268,00012,014,0002,289,664
166Mar 20, 2026 14:3817,884261,535,491221,465,00011,023,0002,404,352
167Mar 20, 2026 13:4217,904259,689,274218,763,00013,984,0002,379,776
168Mar 25, 2026 01:0017,908260,453,239222,814,0009,991,0002,367,488
169Mar 20, 2026 23:3817,916258,769,273224,911,0007,996,0002,396,160
170Mar 20, 2026 23:3717,934260,928,661224,143,0009,005,0002,310,144
171Mar 20, 2026 13:2117,949259,642,242225,329,0008,011,0002,461,696
172Mar 20, 2026 22:4917,951262,069,921222,352,00011,017,0002,498,560
173Mar 20, 2026 23:2517,955263,591,845222,396,00011,019,0002,314,240
174Mar 20, 2026 23:3718,022257,906,706224,276,00010,012,0002,482,176
175Mar 20, 2026 17:1018,061258,856,272227,804,0006,994,0002,347,008
176Mar 20, 2026 23:2418,065261,690,921227,849,0006,995,0002,285,568
177Mar 20, 2026 23:3818,162267,443,263221,099,00015,006,0002,506,752
178Mar 20, 2026 14:1818,168262,359,220226,172,00010,007,0002,502,656
179Mar 20, 2026 13:3618,197266,440,968229,539,0007,016,0002,506,752
180Mar 20, 2026 23:2718,283264,287,312232,689,0004,993,0002,482,176
181Mar 20, 2026 13:2618,331271,230,782231,295,0007,008,0002,318,336
182Mar 20, 2026 13:2118,337267,654,140228,360,00010,015,0002,453,504
183Mar 20, 2026 14:3318,342277,856,891228,429,00010,018,0002,293,760
184Mar 20, 2026 13:2318,366269,028,248228,726,00010,031,0002,392,064
185Mar 20, 2026 21:5918,402266,360,155232,226,0007,006,0002,428,928
186Mar 20, 2026 23:2418,402260,860,619230,213,0009,008,0002,424,832
187Mar 20, 2026 16:4318,415265,360,235229,380,00010,016,0002,449,408
188Mar 20, 2026 15:0418,437267,091,470229,700,0009,986,0002,478,080
189Mar 20, 2026 21:5218,488266,248,771226,325,00014,020,0002,359,296
190Mar 20, 2026 16:5918,555269,761,472231,203,00010,008,0002,387,968
191Mar 20, 2026 19:1218,559265,825,016233,255,0008,008,0002,408,448
192Mar 20, 2026 13:2618,561272,337,528230,279,00011,013,0002,314,240
193Mar 20, 2026 17:0418,566268,636,563237,354,0004,005,0002,289,664
194Mar 20, 2026 17:1818,596265,748,111235,751,0005,993,0002,510,848
195Mar 20, 2026 13:5918,609268,327,871231,922,0009,996,0002,338,816
196Mar 20, 2026 13:4218,621266,365,983231,071,00011,003,0002,310,144
197Mar 20, 2026 13:2418,689277,703,333231,963,00010,998,0002,322,432
198Mar 20, 2026 16:5918,704273,686,313232,151,00011,007,0002,400,256
199Mar 20, 2026 17:0518,715267,190,626232,279,00011,013,0002,396,160
200Mar 20, 2026 23:1918,750269,790,807236,759,0006,992,0002,486,272
201Mar 20, 2026 21:5918,803267,154,333236,425,0008,014,0002,416,640
202Mar 20, 2026 13:4018,861271,587,681235,186,00010,007,0002,469,888
203Mar 20, 2026 22:2418,885274,964,482236,484,0009,018,0002,342,912
204Mar 20, 2026 23:5218,902271,392,452241,731,0003,995,0002,326,528
205Mar 20, 2026 23:4818,909281,650,247237,786,0008,026,0002,347,008
206Mar 20, 2026 14:1318,944273,758,658236,262,00010,011,0002,347,008
207Mar 20, 2026 14:0118,994269,199,100233,925,00012,995,0002,277,376
208Mar 20, 2026 13:2119,026272,213,974235,316,00012,016,0002,498,560
209Mar 20, 2026 14:1319,042277,055,079241,535,0006,013,0002,260,992
210Mar 20, 2026 13:4219,054273,973,701241,714,0005,992,0002,367,488
211Mar 20, 2026 13:4019,091274,636,582239,183,0009,006,0002,318,336
212Mar 20, 2026 23:2119,102270,290,556236,307,00012,015,0002,387,968
213Mar 20, 2026 22:0219,109273,056,778238,402,00010,016,0002,326,528
214Mar 20, 2026 13:4919,130281,153,868240,699,0007,990,0002,416,640
215Mar 20, 2026 23:4219,172281,204,384238,224,00011,010,0002,482,176
216Mar 20, 2026 17:0519,215277,560,486241,802,0007,993,0002,363,392
217Mar 20, 2026 13:4019,235275,461,055240,056,00010,002,0002,342,912
218Mar 20, 2026 13:3819,360284,841,264241,698,0009,987,0002,277,376
219Mar 20, 2026 23:5219,385279,695,884245,000,0007,000,0002,330,624
220Mar 20, 2026 23:0319,387276,174,578243,030,0009,001,0002,404,352
221Mar 20, 2026 17:0519,393280,981,925236,099,00016,006,0002,371,584
222Mar 20, 2026 23:3819,405274,031,880242,255,00010,010,0002,260,992
223Mar 20, 2026 15:0419,700279,149,218249,095,0007,002,0002,334,720
224Mar 20, 2026 13:2819,736282,881,687250,557,0006,013,0002,363,392
225Mar 20, 2026 23:4819,763315,030,835245,927,00010,996,0002,473,984
226Mar 20, 2026 23:1920,090287,959,467248,216,00012,959,0002,330,624
227Mar 20, 2026 22:1720,130286,264,864250,705,00010,987,0002,465,792
228Mar 20, 2026 17:1020,285289,245,058248,719,00014,983,0002,392,064
229Mar 20, 2026 23:5220,311302,960,490254,153,0009,889,0002,285,568
230Mar 20, 2026 23:3820,425287,946,582255,549,0009,982,0002,387,968
231Mar 20, 2026 15:0420,953296,119,390267,382,0005,007,0002,420,736
232Mar 20, 2026 22:2021,190303,381,038259,437,00016,027,0002,326,528
233Mar 20, 2026 22:4121,297307,569,657264,913,00011,950,0002,293,760
234Mar 20, 2026 13:3821,891312,720,961272,560,00012,024,0002,285,568