[Theory] How a whale can optimally allocate cubes across projects
1. Setup: what are we optimizing?
We have several projects, indexed by j.
For each project j:
-
Tj = number of tokens in the airdrop pool
-
Pj = price of that token in USD
-
Sj = Tj * Pj = total USD value of the airdrop pool for project j
-
Oj = cubes already allocated there by other users
-
xj = cubes the whale allocates to project j
The airdrop is pro-rata in cubes, so the whaleās share of project j is:
share_j = xj / (Oj + xj)
So the expected USD value the whale gets from project j is:
Vj(xj) = Sj * xj / (Oj + xj)
Total value over all projects:
V_total = sum over j of Vj(xj)
= sum over j of [ Sj * xj / (Oj + xj) ]
The whale has a fixed total number of cubes C, so:
sum over j of xj = C
xj >= 0 for all j
So the mathematical problem is:
Maximize
V_total = Σ Sj * xj / (Oj + xj)
subject to
Ī£ xj = C and xj >= 0.
2. Why a whale doesnāt just go āall inā one project
For a single project, the payoff function is:
fj(x) = Sj * x / (Oj + x)
Important properties:
In math terms, fj(x) is concave.
When you maximize a sum of concave functions under a budget constraint (sum xj = C), the standard result is:
In the optimum, the marginal value of the last cube
is the same across all projects where you actually invest.
If project A gives more extra value from the next cube than project B, you can improve total value by moving cubes from B to A. So, at the optimum, those marginal values are equalized for all projects with xj > 0.
This is what you get if you write down the first-order conditions (Lagrange multipliers / KKT, etc.) and solve them.
3. The closed-form solution
If you actually solve those conditions, you get a very simple formula for the optimal allocation:
xj* = max( 0, k * sqrt(Sj * Oj) - Oj )
where:
-
Sj = Tj * Pj is the USD size of the pool
-
Oj is the cubes already there from other users
-
k is a single positive constant, the same for all projects
The constant k is chosen so that the whale uses exactly all its cubes:
sum over j of xj* = C
So the algorithm for a whale is:
-
Compute Sj = Tj * Pj and Oj for each project.
-
Find k such that:
sum over j of max( 0, k * sqrt(Sj * Oj) - Oj ) = C
-
Then the optimal allocation is:
xj* = max( 0, k * sqrt(Sj * Oj) - Oj )
Intuition:
-
Bigger pools (Sj large) and pools with more existing cubes (Oj large) can absorb more whale cubes efficiently.
-
The square root (sqrt(Sj * Oj)) encodes diminishing returns: doubling Sj or Oj doesnāt just double the allocation.
-
Some projects will get xj* = 0 if they are not attractive enough under this rule.
4. Why small investors and whales behave differently
If youāre small compared to everyone else, i.e. xj << Oj, then:
xj / (Oj + xj) ā xj / Oj
So the value per cube in project j is approximately:
value_per_cube_j ā Sj / Oj
Your own cubes barely change the denominator. For you, each project has a fixed value per cube.
So for a small investor, the almost-optimal strategy is simply:
Send all your cubes to the project with the highest Sj / Oj
(i.e. the highest value per cube).
For a whale, xj is not negligible. Adding cubes significantly changes Oj + xj, and therefore the value per cube. The whale must balance allocations across projects so that the marginal value of the last cube is the same everywhere ā thatās exactly what the xj* formula does.
5. Liquidity and why you might exclude some tokens
The model above implicitly assumes:
In reality:
-
Some tokens are extremely illiquid: even if the formula says they are attractive, a big whale position there may be impossible to exit without huge slippage.
-
For those, it doesnāt matter that āon paperā the airdrop looks good if you canāt realistically sell your tokens.
The clean way to deal with that in the model is:
-
For any token you donāt want exposure to (too illiquid, no depth, tiny volume), force:
xj = 0
-
Then solve the same optimization problem only over the remaining projects.
The solution becomes:
xj* = 0 for excluded / ultra-illiquid tokens
xj* = max(0, k * sqrt(Sj*Oj) - Oj) for the rest
with k recalculated so that the sum over the remaining projects still equals the whaleās total cubes C.
You can also add softer rules, like:
But the simplest and safest rule is:
Use the theoretical optimum only over tokens with decent liquidity,
and explicitly set xj = 0 for stuff thatās too illiquid.