Docs

Loyalty Score v3.1

A cross-collection ranking for the CyberKongz ecosystem — weighted holdings, retention, and hold-time bonus.

What is the Loyalty Score?

A single number per wallet that rewards three things across all CyberKongz collections at once: how much you hold, how long you have held it, and which collections it sits in. Heavily weighted toward original collections (Genesis, Babies, Genkai), with a sqrt-smoothed penalty for selling.

The formula

score(wallet) = Σ  weight[c] × held[c] × retention[c] × holdBonus[c]
                c

retention[c]  = sqrt( held[c] / (held[c] + sold[c]) )
holdBonus[c]  = piecewise on avg days held (see table)
  • held[c] — distinct tokenIds the wallet currently owns in collection c.
  • sold[c] — distinct tokenIds the wallet has sent away (mint sources excluded).
  • retention[c] — the sqrt smooths sell penalty: selling half drops retention to ~0.71, not 0.5.
  • holdBonus[c] — multiplier based on the average days held of currently-owned tokens in c.

Collection weights

CollectionWeightWhy
Genesis5Founder set, capped at 1,000 supply. Highest pedigree.
Babies3Second wave OG drop, paired with Genesis lineage.
Evo Babies2Evolution mechanic — proven Babies holders that committed further.
VX ETH1VX on ETH — large supply, broad community on-ramp.
VX Ronin1VX on Ronin — broadest distribution of the ecosystem.
Genkai ETH3Premium ETH-side companion. Tight supply, high collector overlap with Genesis.
Genkai Ronin2Ronin-side Genkai. Lower friction to acquire than ETH side.

Hold-time bonus

Average days heldMultiplierTier
< 90 days×0.70Fresh hands
90 – 365 days×1.00Baseline
1 – 2 years×1.15Committed
2 – 3 years×1.30Veteran
3+ years×1.50Diamond hands

Badges

Badges are independent of the numeric score — they highlight qualitative wallet profiles.

  • OG
    Earliest acquisition in any collection happened within 30 days of that collection’s first mint.
  • Diamond Hands
    Average hold time of currently-held tokens is 3 years or more.
  • Ecosystem Maxi
    Currently holds tokens from 4 or more of the 7 collections.
  • Whale
    Top 1% by total tokens held across all collections.
  • Active Trader
    Sold count exceeds held count. Informational — does not affect rank.

Worked examples

OG Pure
Holds 5 Genesis since mint (4y) + 5 Babies since mint (4y). Sold nothing.
  • Genesis: 5 × 5 × √(5/5) × 1.5 = 37.5
  • Babies: 3 × 5 × √(5/5) × 1.5 = 22.5
Total: 60.0
Diluted
Bought 10 Genesis 4y ago, sold 5 → holds 5. avg hold ~4y.
  • Genesis: 5 × 5 × √(5/10) × 1.5 ≈ 26.5
Total: ≈ 26.5
Solo OG
Holds 1 Genesis since mint, nothing else.
  • Genesis: 5 × 1 × 1 × 1.5 = 7.5
Total: 7.5
Ecosystem Maxi
Holds 1 Genesis (4y) + 2 Babies (3y) + 2 Evo Babies (2y) + 3 VX (1.5y).
  • Genesis: 5 × 1 × 1 × 1.5 = 7.5
  • Babies: 3 × 2 × 1 × 1.5 = 9.0
  • Evo Babies: 2 × 2 × 1 × 1.3 = 5.2
  • VX: 1 × 3 × 1 × 1.15 = 3.45
Total: ≈ 25.2 + Ecosystem Maxi badge
Flipper
Bought 30 VX, sold 25 → holds 5, avg hold 60 days.
  • VX: 1 × 5 × √(5/30) × 0.7 ≈ 1.43
Total: ≈ 1.4 + Active Trader badge

FAQ

Why did I lose points after selling?
Selling reduces both held count and the retention factor. But retention uses sqrt — so if you held 10 and sold 5, retention drops only to ~0.71 (not 0.5). The penalty is real but smoothed.
Can I farm cross-collection by buying 1 of each?
Quantity still matters. 1 of each across 4 collections is roughly 12 points. Holding 10 Genesis since mint is ~75. Diversity earns the Ecosystem Maxi badge but not the score on its own.
Will the weights change?
Possibly — informed by community input. We will announce changes in advance and avoid retroactive surprises.
What about Bitcoin Ordinals (Untitled)?
Currently on stand-by — hidden from the UI while we hunt for a trustworthy sales/transfer feed (Magic Eden's Ordinals API is down, BIS Pro is paywalled). The 222 inscriptions and their owners are already indexed; once we land a data source, kongz_untitled_btc flows back in at weight 2 and counts toward your score like the EVM collections.
Is the score live?
Cached for 5 minutes per request. Heavy SQL aggregation runs server-side — no per-wallet polling.

Calculator

Coming soon — punch in held / sold counts per collection and see your projected score.

V3 — Why floor price matters

V3 introduces a per-token diamondFactor that rewards wallets who held through high-floor periods. The factor is the ratio of the peak floor while the wallet held the token to the current floor (clamped between 1× and 10×). It multiplies the base per-token score:

score(token) = collection_weight × hold_bonus(days) × diamondFactor
diamondFactor = clamp(peak_floor_while_holding / current_floor, 1, 10)
wallet_total  = sqrt(held / (held + sold)) × Σ score(token)
Wallet A — diamond
  • Bought Genesis at 1 ETH (Apr 2021)
  • Saw 52 ETH peak (Jun 2022)
  • Current floor 1.5 ETH, still holds
  • diamondFactor = clamp(52/1.5, 1, 10) = 10×
Wallet B — yesterday's buyer
  • Bought Genesis at 1.5 ETH yesterday
  • Peak while holding ≈ current floor
  • diamondFactor = 1.0×
  • Earns base score only — no volatility credit

The multiplier rewards diamond hands through volatility — buying at the bottom doesn't give you the same credit as holding through the top.

V3.1 — Anti-extraction fix

V3.1 fixes a flaw in v3 where wallets that minted in volume and dumped most of their inventory near the top still ranked highly because the surviving tokens absorbed the full diamondFactor. Three changes:

  1. retention is now linear (held / (held + sold)) — not the smoothing sqrt. Selling half drops retention to 0.5, not 0.71.
  2. The diamondFactor uplift is itself scaled by retention: effectiveDiamond = 1 + (rawDiamond − 1) × retention. A wallet with 23% retention can never claim a 10× diamond.
  3. New extractionFactor: tokens sold during a peak window (collection floor ≥ 90% of lifetime ATH) trigger up to a −50% penalty: 1 − min(0.5, soldDuringPeak / 20).
retention            = held / (held + sold)
effectiveDiamond     = 1 + (rawDiamond − 1) × retention
extractionFactor     = 1 − min(0.5, soldDuringPeak / 20)
score(token)         = weight × holdBonus × effectiveDiamond
wallet_total         = retention × extractionFactor × Σ score(token)
Worked example — Why Nate Rivers isn’t #1
  • Minted 36 Genesis. Sold 33 (mostly at the 2022 peak). Holds 3.
  • retention = 3 / (3 + 33) = 0.083
  • rawDiamond ≈ 10 (peak/current). effectiveDiamond = 1 + 9 × 0.083 ≈ 1.75
  • soldDuringPeak ≈ 18. extractionFactor = 1 − min(0.5, 18/20) = 0.10 (clamped at 0.5)
  • Σ token score (3 × weight 5 × bonus ~1.5 × effectiveDiamond 1.75) ≈ 39.4
  • wallet_total = 0.083 × 0.5 × 39.4 ≈ 1.6— instead of v3’s ~265.

Real diamond holders with 100% retention are unaffected: their retention multiplier is 1.0 and effectiveDiamond equals rawDiamond.

Trophies

Trophies are awarded to wallets that hit specific holding milestones. They show up on each wallet profile and are recomputed by the indexer on every run.

Top Refusal
Held a token through a period where the floor reached the top 5% of all-time.
Bear Survivor
Held through a >70% drawdown from a previous all-time peak.
Diamond Hands
Currently holds a token with peak/current floor ratio ≥ 10×.
Day Zero
Acquired within 30 days of collection mint and still holds.
Bottom Buyer
Acquired when floor was < 30% of the collection's all-time peak.
Through ATH
Held a token across the all-time-high event without selling.
Generations
Held Genesis before Babies launch (Apr 2022) and still holds.
Ecosystem Maxi
Currently holds tokens from 4+ collections.
OG
Acquired any token within 30 days of that collection's first mint.
Whale
Top 1% by total tokens held across all collections.