Open Case My Collection Payout Equation

Holder math

Daily payout equation

How the top 50 $PUMPCASE holders split 50% of daily fees — weighted by token balance and card collection.

Step 1 — Collection score

Each card adds weight to your collection. NOTHING adds nothing. A full set of every valuable card is 100% collection potential.

Tier Cards Weight
MythicDOGE100
EpicPEPE40
GoldCHAD, SHIB, TROLL, TRIPLE T, NPC12 each
SilverLOL GUY, WOJAK5 each
NoneNOTHING0
Max collection score (all valuable cards) 210

collection_potential = your_card_score ÷ 210

Step 2 — Holder score

Your token share and collection potential multiply together. Supply share is linear: 2% of supply earns exactly double 1% when collections match.

holder_score = supply_share × collection_potential

supply_share is a decimal (0.02 = 2% of total supply).

Step 3 — Daily payout

Half of that day's fees go to holders. Every top-50 wallet gets a slice proportional to its holder score. The pool is always fully distributed.

daily_payout = (holder_score ÷ Σ all top-50 scores) × daily_fees × 0.5

Example: one whale holds 5% supply with a full collection (score 0.05 × 1.0 = 0.05). Forty-nine wallets each hold 1% with a modest collection (~8% potential, score 0.01 × 0.08 = 0.0008). The whale captures most of the holder pool because they lead on both axes.

Python calculator

Runnable script: caseopening/scripts/daily_payout.py

"""Daily $PUMPCASE holder payout calculator (top 50 wallets)."""

CARD_WEIGHTS = {
    "doge": 100,
    "pepe": 40,
    "chad": 12,
    "shib": 12,
    "troll": 12,
    "triple-t": 12,
    "npc": 12,
    "lol-guy": 5,
    "wojak": 5,
    "nothing": 0,
}

MAX_COLLECTION_SCORE = sum(
    w for cid, w in CARD_WEIGHTS.items() if cid != "nothing"
)


def collection_potential(owned_card_ids: list[str]) -> float:
    score = sum(CARD_WEIGHTS.get(cid, 0) for cid in owned_card_ids)
    return score / MAX_COLLECTION_SCORE


def holder_score(supply_share: float, owned_card_ids: list[str]) -> float:
    """supply_share is fraction of total supply (0.02 = 2%)."""
    return supply_share * collection_potential(owned_card_ids)


def daily_payouts(daily_fees: float, holders: list[dict]) -> list[dict]:
    """
    holders: [{"wallet": str, "supply_share": float, "cards": [card_ids]}, ...]
    Top 50 wallets by $PUMPCASE balance. Returns payouts sorted largest first.
    """
    holder_pool = daily_fees * 0.5
    scored = [(h, holder_score(h["supply_share"], h["cards"])) for h in holders]
    total_score = sum(s for _, s in scored)
    if total_score == 0:
        return []

    results = []
    for h, score in scored:
        share = score / total_score
        results.append({
            **h,
            "collection_potential": collection_potential(h["cards"]),
            "holder_score": score,
            "share_of_pool": share,
            "payout_usd": holder_pool * share,
        })
    return sorted(results, key=lambda x: x["payout_usd"], reverse=True)


if __name__ == "__main__":
    fees_today = 10_000.0
    full_set = [cid for cid in CARD_WEIGHTS if cid != "nothing"]
    modest_set = ["shib", "lol-guy"]  # 17 / 210 ≈ 8.1% potential

    holders = [
        {"wallet": "Whale…ABC", "supply_share": 0.05, "cards": full_set},
    ]
    for i in range(49):
        holders.append({
            "wallet": f"Holder{i + 1:02d}…",
            "supply_share": 0.01,
            "cards": modest_set,
        })

    pool = fees_today * 0.5
    print(f"Daily fees:        ${fees_today:,.0f}")
    print(f"Holder pool (50%): ${pool:,.0f}\n")

    for row in daily_payouts(fees_today, holders)[:6]:
        print(
            f"{row['wallet']:14}  "
            f"supply {row['supply_share'] * 100:4.1f}%  "
            f"collection {row['collection_potential'] * 100:5.1f}%  "
            f"→ ${row['payout_usd']:8,.2f}  ({row['share_of_pool'] * 100:.1f}% of pool)"
        )
    print("…")

Run: py caseopening/scripts/daily_payout.py

← Back to case