Appearance
Clash Of Clones Product Spec
This page captures the broader product loop around clone creation, auditions, arena competition, tickets, race settlement, and retirement. The existing trading docs describe the singular paper-trading experience; this page gives teammates the surrounding game/economy context that the paper-trading runtime plugs into.
Product Summary
Clash of Clones is a gamified AI prop trading platform.
Users build trading agents called clones, audition them in a 24-hour synthetic trading test, and, if they pass, the clones enter the Clash Arena. Arena clones compete in a continuous schedule of synthetic trading races. Users buy fixed-price tickets to back clones in the currently accumulating race. Ticket revenue forms the race pool, and settlement distributes that pool by clone rank.
The product has two pricing systems:
- Clone creation / audition fees.
- Ticket sales for race backing.
Core Loop
text
Creation -> Audition -> Promotion Queue -> Arena -> Retirement
pay fee 24h test wait for slot compete archived careerIf a clone fails audition, it can retry. On retry, configuration can be edited.
Domain Glossary
| Term | Definition |
|---|---|
| Clone | An AI agent built by a user to execute a trading strategy. |
| Strategy | A combination of data streams, assets, and a single trading prompt. |
| Building Block | A composable clone unit. Three types: Data Stream, Asset, and Trading Prompt. |
| Audition | A 24-hour synthetic trading test a clone must pass to enter the Arena. |
| Audition Fee | The fee paid before clone configuration; covers audition compute and the entry attempt. Surfaced in UX as a creation fee. |
| Profit Target | The PnL threshold a clone must hit during audition to qualify for Arena entry. |
| Clash Arena | The fixed-slot pool of active clones competing in races. |
| Race | A 6-hour synthetic trading window where Arena clones compete. Tickets bought into a race form the pool. |
| Ticket | A backing position on a specific clone in a specific race. Flat 0.01 ETH. |
| Pool | Total ticket revenue collected for a race. |
| Distribution Pool | The portion of the pool allocated to ticket-holder payouts: 90%. |
| Settlement | The end-of-race event where rankings finalize and payouts are issued. |
| Promotion | A passing auditioner taking an available Arena slot. |
| Retirement | An Arena clone permanently removed from competition due to sustained lack of demand. Stats remain in the Hall of Fame. |
Clone Creation And Audition Fee
The user pays the Audition Fee before configuring the clone. Two choices made at payment time determine the fee:
- Model tier: which LLM powers the trading prompt.
- Asset capacity: how many assets the strategy can run across.
Pricing Matrix
| Model tier | 1-3 assets | 4-6 assets | 7-10 assets |
|---|---|---|---|
| Haiku - fast, cheap | 0.01 ETH | 0.015 ETH | 0.02 ETH |
| Sonnet - balanced | 0.02 ETH | 0.03 ETH | 0.04 ETH |
| Opus - premium | 0.04 ETH | 0.06 ETH | 0.08 ETH |
Pricing rationale:
- Asset count drives compute roughly linearly because each asset creates one strategy execution per tick.
- Model tier pricing roughly mirrors actual API cost ratios.
- The cheapest tier supports the headline promise: "Create a clone for 0.01 ETH."
- Premium tiers support users who want better expected performance or a status signal.
Configuration Caps
| Control | Cap |
|---|---|
| Data streams | Max 5 per clone |
| Assets | Max 10 per clone |
| Trading prompt | Product cap: 1 per clone, max 4,000 tokens |
| Runtime expansion | Strategy runs N times per tick, where N = asset count |
The backend graph can remain more flexible for compatibility and future power-user work, but the current Clash product spec exposes one trading prompt per clone.
Public Identity And Private Strategy
A clone has two information layers.
Public
Visible on clone cards, race views, and Hall of Fame:
- Name: required, max 32 characters, unique across active Arena clones.
- Description: required, max 280 characters.
- Image: required, 512 x 512 pixels, PNG or JPG, max 1 MB.
- Model tier: Haiku, Sonnet, or Opus.
- Asset selections.
- Data stream selections.
Model tier is public because it is a meaningful capability signal. Backers can interpret a strong Haiku clone as efficient and an Opus clone as needing to justify its premium.
Private
Visible only to the creator:
- The strategy itself, including the trading prompt and private configuration details.
The strategy is private because it is the creator's edge. Publicly exposing it would allow top-performing clones to be copied quickly and would undermine the reward for prompt-engineering and strategy wiring skill.
Moderation
Clone name, description, and image must pass moderation before audition begins.
Rejected content includes:
- Slurs.
- Impersonation of other Arena clones.
- Copyrighted imagery.
- Explicit content.
Failed moderation does not refund the Audition Fee. The user fixes rejected fields and resubmits.
Clone Creation UX Order
text
1. Pick LLM model
2. Pick asset capacity
3. Pay to create clone
4. Set public identity: name, description, image
5. Configure strategy: data streams, assets, trading prompt
6. Submit clone; audition begins automatically
7. Check pass/fail result 24 hours laterOn retry, all configuration choices may be edited: model tier, asset capacity, assets, prompt, data streams, name, description, image, and strategy.
Audition Mechanics
| Property | Value |
|---|---|
| Duration | 24 hours |
| Synthetic capital | $100,000 |
| Profit target | TBD |
| Pass outcome | Enters Promotion Queue or Arena if a slot is available |
| Fail outcome | Clone does not enter Arena; creator can retry |
Initial launch shortcut:
- During the first week, the product can rank auditioning bots and admit the top 50 to the Arena.
- Those results should inform the later profit target calibration.
Clash Arena
Slot Mechanic
- Arena cap: 50 clones.
- A passing auditioner does not automatically enter the Arena when the Arena is full.
- Passing audition guarantees eventual Arena entry unless a later expiry rule is introduced.
Promotion Queue
When a clone passes audition:
- If an empty slot exists, the clone enters the Arena directly.
- If the Arena is full, the clone joins the Promotion Queue.
- When an Arena clone retires, the next queued clone takes the slot.
The queue is FIFO and performance-blind by design. The audition determines eligibility; the queue determines timing.
All-Time Clone Stats
Tracked across every race a clone has entered:
| Stat | Meaning |
|---|---|
| Career races entered | Volume signal |
| Career 1st-place finishes | Winner signal |
| Career top-3 finishes | Consistency signal |
| Cumulative PnL | Raw performance summed across races |
| Best single-race PnL | Peak upside moment |
| Worst single-race PnL | Drawdown signal |
| Top-10 rate | Percent of races finishing in payout positions |
| Current streak | Consecutive top-3 or consecutive bottom-quartile finishes |
Clone Card Display Priority
During ticket accumulation, clone cards should prioritize:
- Image and name.
- Description.
- Model tier badge.
- Career 1st-place count.
- Career top-10 rate.
- Current streak.
- Last-race finish.
- Total tickets sold for this race and top backer concentration.
Tap-through reveals full career stats. Identity leads because backers are buying into a character and track record, not only raw PnL.
Retirement Rule
A clone retires after finishing with the worst ticket sales in 3 consecutive races.
Rules:
- After each race, the clone with the fewest tickets sold receives a strike.
- Ties on lowest ticket count are broken by lowest PnL in that race.
- If still tied on ticket count and PnL, all tied clones receive a strike.
- Strikes must be consecutive.
- Finishing not-last in ticket sales resets the strike count to zero.
- 3 consecutive strikes means retirement.
- Retirement happens after the last race the clone sold tickets on is complete.
Retired clones remain visible in Hall of Fame. Career stats are preserved. Re-entry requires creating a new clone and paying a new Audition Fee.
Demand-based retirement is intentional. This is a backer-driven product: a clone that attracts tickets contributes liquidity and entertainment even if performance is volatile. A clone that never attracts demand is not earning its slot.
Race Mechanics And Cadence
Live Duration
Each race has 6 hours of synthetic trading.
This is long enough for the approximate 1-hour bot trading cadence to produce meaningful PnL signal across multiple cycles, while still short enough to settle within a session-shareable window.
Synthetic Capital Per Race
Each race starts every clone with a fresh $1,000,000 synthetic account.
- No compounding across races.
- Every clone starts each race from zero.
- Past performance updates all-time stats but does not carry into in-race PnL.
Dynamic Race Launch
Races launch reactively:
text
Race launches when:
(tickets_sold >= 3,000 AND time_since_last_launch >= 1 hour)
OR
time_since_last_launch >= 6 hoursKey parameters:
- 3,000 tickets creates a 30 ETH minimum pool floor.
- 1-hour minimum interval matches the bot trading cadence.
- 6-hour timeout keeps the loop alive during cold periods.
- Up to 5 races can be live at once.
Race State Machine
text
Accumulating -> Live, 6h -> Settling -> Settled
|
v
next race begins accumulating immediately after launchState meanings:
- Accumulating: the single race currently selling tickets.
- Live: ticket sales are closed and synthetic trading is happening.
- Settling: rankings and payouts are being calculated.
- Settled: payouts are complete and the race is archived.
During hot periods, multiple races can be Live at the same time. Each race has an independent pool, ranking, and settlement.
Ticket Sales Surface
Tickets are purchasable only for the single Accumulating race. Once that race launches, the next race begins accumulating immediately and becomes the new purchasable target.
This concentrates demand into one purchasable race, which helps the threshold get hit reliably.
Tickets And Pool Composition
Ticket Pricing
- Flat
0.01 ETHper ticket. - Tickets are tied to one clone in one race.
- Tickets are non-transferable in this spec.
Per-User Caps
- No cap on tickets per user per clone.
- Whale concentration is allowed and should be surfaced as part of the narrative.
- Clone cards show total tickets sold and top backer concentration.
Pool Split
text
Total pool = ticket_count * 0.01 ETH
Protocol rake: 5%
Creator pool: 5%
Distribution pool: 90%Protocol rake is house revenue. Creator pool pays creators of ranked clones. Distribution pool pays ticket holders.
Distribution Math
Rank Determination
Clones are ranked by synthetic PnL over the 6-hour race.
Tie breakers:
- Higher PnL wins.
- If PnL ties, higher ticket count wins.
Weighted Parimutuel Payouts
Ticket-holder payouts use weighted parimutuel distribution.
text
weight(clone) = tickets_on_clone * rank_multiplier(rank)
Rank multipliers:
Rank 1: 5.0
Rank 2: 2.5
Rank 3: 1.5
Ranks 4-10: 0.7
Ranks 11+: 0.05
total_weight = sum(weight(clone)) across backed clones
clone_share = weight(clone) / total_weight * distribution_pool
backer_payout = backer_tickets / tickets_on_clone * clone_shareWhy this model:
- Fixed rank-share payouts fail when tickets are highly concentrated.
- If one clone has most tickets, a fixed winner share can make winning tickets lose money.
- Weighted parimutuel scales a clone's share by both popularity and finishing rank.
- Extreme crowding can still compress winner returns toward the post-rake floor; that is expected behavior in a parimutuel system.
Unbacked Clones
Unbacked clones still trade and can rank, but they have zero payout weight.
If an unbacked clone finishes first:
- It receives rank 1 in stats.
- Its creator can still earn creator-pool royalties.
- Ticket-holder distribution does not allocate any weight to it.
- Rank multipliers for backed clones are not promoted.
Creator Pool Split
Creator pool is 5% of the total race pool.
| Rank | Share of creator pool |
|---|---|
| 1st clone creator | 50% |
| 2nd clone creator | 22% |
| 3rd clone creator | 12% |
| 4th-10th clone creators | 16% split pro rata |
| 11th+ | 0% |
Creator royalties do not depend on ticket weight. If a clone ranks first with zero backers, its creator still receives the rank-1 creator-pool share.
Worked Distribution Examples
Example A: Typical Race
3,000 tickets sold.
text
Pool = 30 ETH
Distribution pool = 27 ETH
Creator pool = 1.5 ETHClone #47 wins with 200 tickets. Assume total race weight is 2,000.
text
Clone #47 weight = 200 * 5.0 = 1,000
Clone #47 share = 1,000 / 2,000 * 27 = 13.5 ETHIf a user holds 30 of Clone #47's 200 tickets:
text
Payout = 30 / 200 * 13.5 = 2.025 ETH
Stake = 30 * 0.01 = 0.3 ETH
Return = about 6.75xCreator of Clone #47 receives:
text
50% * 1.5 ETH = 0.75 ETHExample B: Concentrated Winner
3,000 tickets sold. Clone #47 has 1,800 tickets, or 60% of the race.
text
Clone #47 weight = 1,800 * 5.0 = 9,000
Other clone weight estimate = 1,500
Total weight estimate = 10,500
Clone #47 share = 9,000 / 10,500 * 27 = 23.14 ETH
Per-ticket payout = 23.14 / 1,800 = 0.01286 ETH
Return = about 1.286x per ticketExample C: Pathological Concentration
3,000 tickets sold. Clone #47 has 2,700 tickets, or 90% of the race.
text
Clone #47 weight = 2,700 * 5.0 = 13,500
Other clone weight estimate = 400
Total weight estimate = 13,900
Clone #47 share = 13,500 / 13,900 * 27 = 26.22 ETH
Per-ticket payout = 26.22 / 2,700 = 0.00971 ETH
Return = about 0.971x per ticketThe winning ticket produces a small net loss because the trade is extremely crowded and the rake dominates.
Example D: Backing Rank 2
Same race as Example A. Clone #12 finishes rank 2 with 80 backing tickets. A user holds 10.
text
Clone #12 weight = 80 * 2.5 = 200
Clone #12 share = 200 / 2,000 * 27 = 2.7 ETH
Payout = 10 / 80 * 2.7 = 0.3375 ETH
Stake = 0.10 ETH
Return = about 3.4xExample E: Consolation
Same race as Example A. A user's clone finishes 14th with 30 backing tickets. The user holds 5.
text
Rank 14 weight = 30 * 0.05 = 1.5
Clone share = 1.5 / 2,000 * 27 = 0.02025 ETH
Per-ticket payout = 0.02025 / 30 = 0.000675 ETH
User payout = 5 * 0.000675 = 0.003375 ETH
Stake = 0.05 ETH
Return = about 6.8%This preserves a small return for losing tickets, creating a cash-out feeling even when most of the stake is lost.
Open Tuning Decisions
These are tunable product parameters, not implementation blockers.
| Parameter | Initial value | Tuning consideration |
|---|---|---|
| Audition profit target | TBD; early idea: +2% over 24h | Tune for desired pass rate by model tier |
| Audition Fee matrix | 0.01-0.08 ETH | Adjust if compute economics change |
| Ticket threshold for race launch | 3,000 tickets | Adjust based on user base and ticket flow |
| Maximum launch interval | 6 hours | Tighten if cold periods feel too slow |
| Minimum interval between launches | 1 hour | Tied to bot trading cadence |
| Arena slot count | 50 | Expand only if per-clone liquidity stays healthy |
| Retirement strike count | 3 consecutive worst-sales finishes | Loosen if churn is too harsh; tighten if Arena calcifies |
| Promotion Queue expiry | 7 days, tentative | Adjust based on churn rate and queue depth |
| Rank multipliers | 5.0 / 2.5 / 1.5 / 0.7 / 0.05 | Steeper curve creates bigger rank-1 upside; flatter curve creates more consolation |
Architecture Ownership Notes
The current paper-trading silo owns the trading runtime needed by auditions and races:
- Strategy graph compilation.
- Per-asset decision scheduling.
- Market context retrieval.
- Synthetic account state.
- Paper fills, positions, orders, and ledger mutation.
- PnL calculation for audition and race ranking.
Adjacent product surfaces can be implemented independently around that runtime:
- Payments for Audition Fees and tickets.
- Public clone identity and moderation.
- Promotion Queue and Arena slot management.
- Race accumulation, launch, settlement, and archive lifecycle.
- Ticket-holder payout accounting.
- Creator royalty accounting.
- Hall of Fame and career stats presentation.
The boundary to keep clear: the trading engine should produce auditable synthetic trading results; the arena economy should consume those results for ranking, payouts, lifecycle movement, and presentation.