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 listOct 13, 2025 16:28imotw2imotw2Score: 15,043Success
Source Code

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

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Oct 13, 2025 15:5311,734182,141,730148,528,0004,014,0002,498,560
2Oct 13, 2025 15:5712,117189,377,795148,491,0009,029,0002,408,448
3Oct 13, 2025 16:2512,755192,283,217160,823,0004,994,0002,457,600
4Oct 13, 2025 15:5512,776196,001,891159,088,0007,003,0002,306,048
5Oct 13, 2025 16:2212,874190,585,090163,349,0004,008,0002,482,176
6Oct 13, 2025 16:2212,935200,089,332165,147,0003,002,0002,269,184
7Oct 13, 2025 16:2513,110201,148,525167,417,0003,007,0002,461,696
8Oct 13, 2025 01:1813,135203,580,681166,763,0003,994,0002,310,144
9Oct 13, 2025 15:5313,213198,433,168166,775,0004,993,0002,510,848
10Oct 13, 2025 15:5313,320199,373,356171,162,0002,001,0002,420,736
11Oct 13, 2025 15:5613,371209,695,715168,824,0004,994,0002,478,080
12Oct 13, 2025 15:5613,405205,457,584169,252,0005,007,0002,437,120
13Oct 13, 2025 01:3813,411204,734,054164,319,00010,019,0002,498,560
14Oct 13, 2025 15:5613,412203,184,251171,344,0003,006,0002,486,272
15Oct 13, 2025 16:2813,417207,618,746169,409,0005,012,0002,510,848
16Oct 13, 2025 16:2213,526199,964,221169,839,0005,994,0002,351,104
17Oct 13, 2025 16:2213,572204,932,319167,413,0009,022,0002,392,064
18Oct 13, 2025 16:2513,585210,345,084171,620,0004,988,0002,306,048
19Oct 13, 2025 16:2513,661205,520,846172,581,0005,016,0002,453,504
20Oct 13, 2025 15:5713,675204,680,872172,785,0004,993,0002,404,352
21Oct 17, 2025 03:0413,683205,742,558173,882,0003,997,0002,453,504
22Oct 13, 2025 16:2913,706210,012,087172,174,0006,006,0002,338,816
23Oct 13, 2025 01:1613,724203,513,796172,398,0006,013,0002,523,136
24Oct 13, 2025 15:5713,773206,979,486173,053,0006,001,0002,523,136
25Oct 13, 2025 16:2513,810205,870,242175,515,0004,011,0002,478,080
26Oct 13, 2025 16:2113,827210,221,898171,763,0007,989,0002,473,984
27Oct 13, 2025 16:2213,828210,620,546173,769,0005,992,0002,351,104
28Oct 13, 2025 16:2913,828207,247,628175,766,0003,994,0002,469,888
29Oct 13, 2025 01:3513,830212,040,307173,800,0005,993,0002,338,816
30Oct 13, 2025 16:2213,859203,803,113175,167,0005,004,0002,379,776
31Oct 13, 2025 15:5713,955212,131,533178,405,0003,006,0002,457,600
32Oct 17, 2025 03:0414,003212,427,604176,041,0006,001,0002,363,392
33Oct 13, 2025 15:5714,035211,805,375177,438,0005,012,0002,400,256
34Oct 13, 2025 16:2514,063210,278,497179,828,0002,997,0002,400,256
35Oct 13, 2025 15:5614,076212,173,809178,986,0003,999,0002,482,176
36Oct 17, 2025 03:0314,076206,859,103175,988,0006,999,0002,433,024
37Oct 13, 2025 16:2914,088214,437,507175,132,0008,006,0002,269,184
38Oct 13, 2025 16:2814,160210,239,146182,085,0002,000,0002,473,984
39Oct 13, 2025 16:2514,177219,972,153180,298,0004,006,0002,469,888
40Oct 13, 2025 16:2914,184216,323,088182,385,0002,004,0002,486,272
41Oct 13, 2025 15:5314,198216,296,887179,553,0005,015,0002,301,952
42Oct 13, 2025 01:3814,241206,912,078181,132,0004,002,0002,457,600
43Oct 13, 2025 01:3814,244217,661,081180,165,0005,004,0002,277,376
44Oct 13, 2025 16:2914,277213,148,943179,581,0006,019,0002,375,680
45Oct 13, 2025 01:3814,289219,963,772180,769,0004,993,0002,506,752
46Oct 13, 2025 16:2514,290215,127,656180,782,0004,993,0002,379,776
47Oct 13, 2025 16:2514,292216,726,452183,805,0001,997,0002,453,504
48Oct 13, 2025 16:2814,302211,861,304180,926,0004,997,0002,482,176
49Oct 13, 2025 16:0414,303216,154,821178,944,0006,997,0002,478,080
50Oct 13, 2025 15:5314,307217,179,581183,987,0001,999,0002,510,848
51Oct 13, 2025 15:5714,308213,498,581184,004,0002,000,0002,469,888
52Oct 13, 2025 15:5514,342210,672,282180,436,0006,014,0002,404,352
53Oct 13, 2025 15:5514,363212,621,958180,733,0005,991,0002,334,720
54Oct 17, 2025 03:0314,365213,566,799183,748,0002,995,0002,277,376
55Oct 13, 2025 01:3514,368219,024,836182,769,0004,016,0002,396,160
56Oct 13, 2025 16:2514,368219,952,005179,788,0006,991,0002,363,392
57Oct 13, 2025 15:5414,399214,709,083183,182,0004,003,0002,404,352
58Oct 13, 2025 01:3514,470212,080,801182,113,0006,003,0002,449,408
59Oct 13, 2025 16:2814,480221,249,807184,235,0004,005,0002,392,064
60Oct 13, 2025 01:1614,490220,514,842182,354,0006,011,0002,420,736
61Oct 13, 2025 16:3514,529215,140,702183,885,0004,996,0002,310,144
62Oct 13, 2025 01:3514,539215,637,200185,002,0004,000,0002,510,848
63Oct 17, 2025 03:0314,549213,392,837186,140,0003,002,0002,301,952
64Oct 13, 2025 01:1614,566219,781,379185,345,0004,007,0002,412,544
65Oct 17, 2025 03:0414,585216,131,028183,614,0005,987,0002,375,680
66Oct 13, 2025 16:2514,596222,449,640183,754,0005,991,0002,445,312
67Oct 13, 2025 16:2514,601218,626,928185,819,0003,996,0002,465,792
68Oct 13, 2025 16:2914,621213,927,988185,075,0005,002,0002,412,544
69Oct 13, 2025 16:2514,660218,484,505187,568,0003,009,0002,490,368
70Oct 13, 2025 16:2914,672219,181,649186,745,0003,994,0002,297,856
71Oct 13, 2025 16:2514,695219,704,930187,031,0004,000,0002,408,448
72Oct 13, 2025 01:3514,709226,808,064187,212,0004,004,0002,375,680
73Oct 13, 2025 15:5714,712216,388,250188,249,0003,003,0002,502,656
74Oct 13, 2025 16:2514,713224,112,964188,265,0003,004,0002,437,120
75Oct 13, 2025 16:2514,809225,618,349186,528,0005,984,0002,428,928
76Oct 13, 2025 16:2214,857219,506,528189,141,0004,003,0002,445,312
77Oct 17, 2025 03:0414,909225,391,655188,824,0004,995,0002,473,984
78Oct 13, 2025 16:2514,934223,813,846190,141,0004,002,0002,506,752
79Oct 13, 2025 16:0414,940223,068,193188,214,0006,006,0002,441,216
80Oct 13, 2025 16:2514,957223,965,137191,435,0003,006,0002,392,064
81Oct 13, 2025 01:3414,961227,578,216188,483,0006,015,0002,433,024
82Oct 13, 2025 15:5614,979223,631,792191,737,0002,995,0002,424,832
83Oct 13, 2025 15:5415,026226,735,670191,326,0004,006,0002,482,176
84Oct 13, 2025 15:5015,032222,360,366191,411,0004,008,0002,334,720
85Oct 13, 2025 16:2915,042222,638,255190,538,0005,014,0002,494,464
86Oct 13, 2025 16:2515,043218,489,487190,549,0005,014,0002,416,640
87Oct 17, 2025 03:0415,051222,195,654190,668,0004,991,0002,326,528
88Oct 13, 2025 16:2515,055224,931,644191,725,0003,994,0002,273,280
89Oct 13, 2025 15:5315,056226,942,860190,741,0004,993,0002,465,792
90Oct 13, 2025 15:5615,060224,067,208188,784,0006,992,0002,478,080
91Oct 13, 2025 15:5315,065225,953,297192,848,0002,997,0002,387,968
92Oct 13, 2025 15:5015,118223,721,778190,512,0006,016,0002,396,160
93Oct 13, 2025 01:3815,133225,552,564192,732,0003,994,0002,322,432
94Oct 13, 2025 16:2815,161233,886,082193,089,0004,001,0002,387,968
95Oct 13, 2025 16:2915,168232,854,274194,177,0003,002,0002,297,856
96Oct 17, 2025 03:0315,245226,636,561192,178,0006,005,0002,490,368
97Oct 13, 2025 16:2915,253230,603,249195,288,0003,004,0002,400,256
98Oct 13, 2025 15:5615,258228,593,826193,349,0005,009,0002,367,488
99Oct 13, 2025 16:2215,286229,889,111194,719,0003,994,0002,392,064
100Oct 17, 2025 03:0415,299226,318,965193,892,0004,997,0002,437,120
101Oct 13, 2025 16:2115,321227,021,264194,171,0005,004,0002,482,176
102Oct 13, 2025 16:2515,333226,815,625194,317,0005,008,0002,416,640
103Oct 13, 2025 16:2815,385228,372,650194,006,0006,000,0002,408,448
104Oct 13, 2025 15:5415,404235,720,413195,240,0005,006,0002,400,256
105Oct 13, 2025 16:2215,405222,754,108194,252,0006,007,0002,416,640
106Oct 13, 2025 16:2815,420229,368,255196,446,0004,009,0002,330,624
107Oct 13, 2025 15:5515,421232,482,111194,458,0006,014,0002,400,256
108Oct 13, 2025 16:2515,426231,999,732195,530,0005,013,0002,437,120
109Oct 13, 2025 01:1615,450234,191,481194,858,0005,995,0002,347,008
110Oct 13, 2025 16:3515,461224,826,502197,988,0002,999,0002,355,200
111Oct 13, 2025 16:2915,484230,522,436198,283,0003,004,0002,437,120
112Oct 13, 2025 15:5315,528234,099,116195,867,0005,995,0002,445,312
113Oct 13, 2025 16:2915,534233,826,922197,949,0003,998,0002,453,504
114Oct 13, 2025 16:2915,539227,708,815198,011,0004,000,0002,338,816
115Oct 17, 2025 03:0315,577231,889,998197,493,0005,012,0002,301,952
116Oct 13, 2025 16:2915,585238,943,603195,587,0007,021,0002,392,064
117Oct 13, 2025 16:2215,607233,777,802197,899,0004,997,0002,383,872
118Oct 13, 2025 16:2915,615231,088,047199,995,0002,999,0002,506,752
119Oct 13, 2025 01:1815,631231,124,657200,204,0003,003,0002,523,136
120Oct 13, 2025 15:5515,636234,753,767200,268,0003,004,0002,506,752
121Oct 13, 2025 16:2915,650229,588,356199,439,0004,008,0002,490,368
122Oct 13, 2025 16:2515,677235,469,370199,800,0003,996,0002,494,464
123Oct 13, 2025 01:3415,707232,062,687200,191,0004,003,0002,301,952
124Oct 13, 2025 15:5615,755234,425,944199,822,0004,995,0002,359,296
125Oct 13, 2025 16:2915,773228,810,129200,054,0005,001,0002,400,256
126Oct 13, 2025 15:5715,786231,479,180204,219,0001,001,0002,387,968
127Oct 13, 2025 15:5615,800235,843,381201,394,0004,007,0002,408,448
128Oct 13, 2025 16:2515,832232,803,670199,822,0005,994,0002,293,760
129Oct 13, 2025 15:5715,860234,390,732198,168,0008,006,0002,469,888
130Oct 13, 2025 01:3415,863236,456,406202,217,0004,004,0002,416,640
131Oct 13, 2025 16:2215,868238,351,683200,276,0006,008,0002,502,656
132Oct 13, 2025 16:2515,874231,081,100202,354,0004,007,0002,400,256
133Oct 13, 2025 15:5015,905233,505,193203,766,0002,996,0002,510,848
134Oct 13, 2025 16:2215,916230,956,469202,915,0003,998,0002,482,176
135Oct 13, 2025 01:3815,946233,712,079204,292,0003,004,0002,342,912
136Oct 17, 2025 03:0415,947239,947,025203,301,0004,005,0002,424,832
137Oct 13, 2025 01:1615,967236,144,668203,557,0004,010,0002,330,624
138Oct 13, 2025 01:3515,989232,471,871204,861,0002,997,0002,445,312
139Oct 13, 2025 15:5316,009234,454,615205,117,0003,001,0002,433,024
140Oct 13, 2025 16:2816,082241,057,626206,066,0003,000,0002,527,232
141Oct 13, 2025 01:1616,136238,586,030205,776,0003,995,0002,306,048
142Oct 13, 2025 01:3516,159238,591,538203,068,0007,002,0002,473,984
143Oct 13, 2025 01:3816,179238,009,917205,319,0005,007,0002,289,664
144Oct 17, 2025 03:0316,184242,333,581206,382,0004,007,0002,420,736
145Oct 13, 2025 16:2816,199239,375,618202,609,0007,984,0002,404,352
146Oct 13, 2025 16:2116,210243,513,175206,732,0003,994,0002,297,856
147Oct 13, 2025 16:2516,215235,757,696206,805,0003,996,0002,441,216
148Oct 17, 2025 03:0416,295237,183,439208,832,0002,997,0002,334,720
149Oct 13, 2025 16:2516,443246,125,635208,766,0004,994,0002,392,064
150Oct 13, 2025 16:2216,518246,209,838210,736,0003,995,0002,428,928
151Oct 13, 2025 16:2816,584242,491,196210,581,0005,013,0002,322,432
152Oct 17, 2025 03:0416,662246,428,782209,616,0006,987,0002,478,080
153Oct 13, 2025 15:5516,697242,166,352210,060,0007,002,0002,338,816
154Oct 13, 2025 01:3816,729244,239,149214,465,0003,006,0002,301,952
155Oct 13, 2025 16:2216,825255,338,377212,729,0005,992,0002,428,928
156Oct 13, 2025 01:1616,838242,851,742213,897,0004,997,0002,277,376
157Oct 13, 2025 01:1616,841247,955,502213,936,0004,998,0002,318,336
158Oct 13, 2025 16:3516,857242,873,494216,140,0003,001,0002,318,336
159Oct 13, 2025 16:2516,967247,245,209212,548,0008,020,0002,297,856
160Oct 13, 2025 01:1816,987246,375,967216,833,0003,996,0002,506,752
161Oct 13, 2025 16:2817,018246,583,089218,236,0003,003,0002,371,584
162Oct 13, 2025 01:3517,070248,503,292215,917,0005,997,0002,367,488
163Oct 13, 2025 16:2517,132253,949,206217,725,0004,993,0002,363,392
164Oct 13, 2025 01:3517,185258,476,107217,398,0006,011,0002,330,624
165Oct 13, 2025 01:1617,530257,426,653219,897,0007,996,0002,359,296
166Oct 13, 2025 16:2517,558256,057,581224,256,0004,004,0002,273,280
167Oct 13, 2025 16:2217,664256,500,656225,641,0003,993,0002,506,752
168Oct 13, 2025 01:3817,980262,348,500230,749,0002,996,0002,392,064
169Oct 13, 2025 16:2818,077256,646,765231,001,0004,000,0002,351,104
170Oct 13, 2025 16:0418,625264,721,209235,128,0007,003,0002,510,848
171Oct 13, 2025 16:2918,876270,050,813241,385,0004,006,0002,318,336