Comprehensive Discussion Summary - December 2024
5 outcomes at 50% each: Sum = 250% (Converges via arbitrage)
5 outcomes at 20% each: Sum = 100% (No arbitrage opportunity)
| Feature | Grouped Binary (Nostra Current) | CTF NegRisk (Polymarket) |
|---|---|---|
| Initial Probability | 50% YES / 50% NO (or 100/n%) |
100/N % (or External Odds) |
| Sum of YES Prices | Can exceed 100% (Arbitrage opportunity) |
Always 100% (Mechanically enforced) |
| Market Link | Independent (No link between markets) |
Mechanically Linked (Split/Merge enabled) |
| Inventory Issue | Major Problem (Stuck with losing tokens) |
Solved (Can merge losing sets) |
| Implementation | Simple (Standard Binary Markets) |
Complex (Requires Adapter Contract) |
Super Bowl (NegRisk CTF): ┌────────────┬───────┬───────┬──────────┐ │ Team │ YES │ NO │ YES + NO │ ├────────────┼───────┼───────┼──────────┤ │ Chiefs │ 23¢ │ 77¢ │ 100¢ ✓ │ │ Eagles │ 19¢ │ 81¢ │ 100¢ ✓ │ └────────────┴───────┴───────┴──────────┘ CFP (Grouped Binary): ┌────────────┬───────┬───────┬──────────┐ │ Team │ YES │ NO │ YES + NO │ ├────────────┼───────┼───────┼──────────┤ │ Indiana │ 93.4¢ │ 99¢ │ 192.4¢ │ │ Ohio State │ 72¢ │ 98¢ │ 170¢ │ └────────────┴───────┴───────┴──────────┘
5 outcomes at 50% each: Sum = 250% Arbitrageurs: - Buy all NO tokens - Guaranteed profit when one outcome loses - Creator loses to arbitrageurs
5 outcomes at 20% each: Sum = 100% No arbitrage opportunity at launch. Creator doesn't lose money to arbitrageurs.
Both approaches converge to ~100% eventually (via trading or mechanically). The difference is:
Grouped Binary (5 outcomes × 50%): Market 1: Team A YES (50¢) + NO (50¢) = $1 ✓ Market 2: Team B YES (50¢) + NO (50¢) = $1 ✓ Market 3: Team C YES (50¢) + NO (50¢) = $1 ✓ Market 4: Team D YES (50¢) + NO (50¢) = $1 ✓ Market 5: Team E YES (50¢) + NO (50¢) = $1 ✓ Sum of YES = 250%... but so what? Why no arbitrage? • Each market is INDEPENDENT • You CANNOT merge tokens across different markets • Each market individually has YES + NO = $1 ✓ The 250% → 100% convergence is just PRICE DISCOVERY, not arbitrage. Smart traders normalize it.
| Case | Condition | Action | Result |
|---|---|---|---|
| Single Market | YES + NO < $1 | Buy both | Guaranteed profit |
| Single Market | YES + NO > $1 | Mint & sell both | Guaranteed profit |
| CTF Multi-Outcome | Sum < $1 | Buy all, merge | Guaranteed profit |
| CTF Multi-Outcome | Sum > $1 | Split & sell all | Guaranteed profit |
| Cross-Platform | YES_A + NO_B < $1 | Buy both sides | Guaranteed profit |
Key: Arbitrage means zero risk, guaranteed profit. The 250% sum doesn't qualify.
| Outcome | Initial | Fair | Gap |
|---|---|---|---|
| A (favorite) | 50¢ | 60¢ | -10¢ |
| B | 50¢ | 15¢ | +35¢ |
| C | 50¢ | 10¢ | +40¢ |
| D | 50¢ | 10¢ | +40¢ |
| E | 50¢ | 5¢ | +45¢ |
Favorite: small underpricing (-10¢)
Underdogs: extreme overpricing (+35~45¢)
| Outcome | Initial | Fair | Gap |
|---|---|---|---|
| A (favorite) | 20¢ | 60¢ | -40¢ |
| B | 20¢ | 15¢ | +5¢ |
| C | 20¢ | 10¢ | +10¢ |
| D | 20¢ | 10¢ | +10¢ |
| E | 20¢ | 5¢ | +15¢ |
Favorite: large underpricing (-40¢)
Underdogs: small overpricing (+5~15¢)
| Aspect | 50% | 100/n% |
|---|---|---|
| Favorite mispricing | -10¢ (small loss) | -40¢ (large loss) |
| Underdog mispricing | +35~45¢ (extreme) | +5~15¢ (small) |
| Underdogs tradeable? | No (too expensive) | Maybe (closer to fair) |
| Favorite NO token (80¢) | - | Won't sell (too expensive) |
When the favorite wins, creator holds worthless 80¢ NO tokens.
100/n% trades one problem for another:
Whether it minimizes loss depends on trading patterns. If more underdogs trade (because fairly priced), it might help. But the favorite's mispricing is worse.
| Provider | Reality | When |
|---|---|---|
| Random traders | Won't come to empty market | Never initially |
| Professional MMs | Only for proven high-volume markets | After volume is established |
| Platform itself | Must bootstrap new markets | From day 1 |
For a 5-outcome market with $1000 liquidity:
Split equally: $200 per market For each market (at 20% YES / 80% NO): - 200 YES @ $0.20 = $40 - 200 NO @ $0.80 = $160 - Total: $200 → 200 YES + 200 NO (balanced) If A wins: - A: 200 YES × $1 = $200 - B: 200 NO × $1 = $200 - C: 200 NO × $1 = $200 - D: 200 NO × $1 = $200 - E: 200 NO × $1 = $200 Return: $1000 ✓ (break even when balanced)
| Liquidity Level | Trading Quality | User Experience |
|---|---|---|
| $500/market | Poor | Frustrating, large slippage |
| $5,000/market | Okay | Acceptable for small traders |
| $50,000+/market | Good | Professional-grade |
Initial: Market A at 20% YES / 80% NO Creator holds: 200 YES + 200 NO Time passes... A becomes favorite (80% YES): Traders: "I want to BUY YES on A!" Creator: Sells YES, happy 😊 Traders: "I don't want NO on A, A will win!" Creator: Can't sell NO, stuck 😰 Result: - YES: 200 → 50 (sold 150, good!) - NO: 200 → 200 (nobody bought, stuck!) If A wins: - 50 YES × $1 = $50 - 200 NO × $0 = $0 Creator started with $200, ends with $50 LOSS: $150 ❌
Selling NO on losing markets (B, C, D, E) does NOT compensate:
Sell 200 NO on B @ 95¢ = $190 received But: If A wins, buyer gets 200 × $1 = $200 Creator sold $200 value for $190 = LOSS Cross-market selling adds MORE losses, not compensation.
100 A + 100 B + 100 C + 100 D + 100 E → $100 USDC No counterparty needed! Always can exit via merge. No stuck inventory problem.
| Scenario | Fee Income | Inventory Loss | Total Loss |
|---|---|---|---|
| Best case | $500 | $100 | +$500 profit |
| Average | $200 | $350 | -$150 (15%) |
| Bad case | $75 | $400 | -$325 (32.5%) |
| Worst case | $75 | $860 | -$785 (78.5%) |
MM posts orders: BUY YES @ 49¢ SELL YES @ 51¢ When both sides fill: - Trader A buys YES @ 51¢ → MM receives 51¢ - Trader B sells YES @ 49¢ → MM pays 49¢ MM profit: 51¢ - 49¢ = 2¢ per share If 10,000 shares traded: Profit = $200
Taker (takes order): Pays 2% fee Maker (provides order): Receives 0.5% rebate MM always provides orders → earns rebate on every trade
Price moving up? → Cancel BUY orders (avoid buying expensive) → Raise SELL prices (sell higher) Amateur LP: Updates hourly → Gets run over Pro MM: Updates every second → Captures spread
Correlated markets: - "Chiefs win Super Bowl" (YES @ 25¢) - "Mahomes wins MVP" (YES @ 30¢) MM sells Chiefs YES, buys Mahomes YES (hedge) Net exposure: ~zero But: Keeps spread profit!
MM Profit = Spread Income
+ Fee Rebates
+ Arbitrage Gains
- Inventory Losses
- Operating Costs
| Method | Description | Cost to Platform |
|---|---|---|
| Pay Monthly Fee | $2-10K/month for liquidity | Fixed, predictable |
| Fee Rebates | MM earns 0.5% on trades | Reduced revenue |
| Revenue Sharing | 50% of trading fees | Variable |
| Token Incentives | NOSTRA tokens for liquidity | Token dilution |
Regular users just trade. They don't "provide liquidity" through UI.
Trade: $100 Fee: 2% = $2.00 Distribution: ├── LP (liquidity provider): $1.50 (75%) └── Platform (Nostra): $0.50 (25%)
LP provides: $1,000 liquidity Market volume: $50,000/month Fee rate: 2% LP share: 75% LP earnings: $50,000 × 2% × 75% = $750/month LP yield: $750 / $1,000 = 75% monthly APY 🔥 (High yield compensates for inventory risk)
| Fee Level | LP Yield | Trading Activity |
|---|---|---|
| High (3%+) | High | Low (expensive to trade) |
| Medium (2%) | Medium | Medium |
| Low (0.5%) | Low | High (cheap to trade) |
Fees help but don't guarantee profit.
LMSR AMM for 8 teams: Initial pool ($5000 liquidity): ┌─────────────┬────────┬───────┬──────────────┐ │ Team │ Tokens │ Price │ Implied Odds │ ├─────────────┼────────┼───────┼──────────────┤ │ Brazil │ 5000 │ 12.5¢ │ 12.5% │ │ France │ 5000 │ 12.5¢ │ 12.5% │ │ Argentina │ 5000 │ 12.5¢ │ 12.5% │ │ ... │ 5000 │ 12.5¢ │ 12.5% │ └─────────────┴────────┴───────┴──────────────┘ Trader buys $100 Brazil: → Gets ~700 Brazil tokens → Pool Brazil: 5000 → 4300 → Brazil price: 12.5% → 25% (automatic!)
| Feature | Order Book | AMM |
|---|---|---|
| Always tradeable | No (need counterparty) | Yes |
| Capital needed | High ($50K+) | Lower ($5K) |
| Price discovery | Order matching | Formula |
| Large trades | Better (if deep) | Higher slippage |
| Complexity | Medium | Medium |
| Pro traders prefer | Yes | No |
Nostra currently has Order Book. Switching to AMM would require significant rebuild.
This is unavoidable. Every marketplace subsidizes early growth.
Nostra Year 1 Plan: Launch 50 markets Initial liquidity: $500 per market = $25,000 Expected loss rate: 20% Expected loss: $5,000 Think of it as: "$5,000 marketing spend to build a prediction market" Compare to: - Google Ads: $10,000 - Influencer marketing: $20,000 - Traditional marketing: $50,000+ $5,000 liquidity loss = CHEAP customer acquisition
| Component | Polymarket | Risk Bearer |
|---|---|---|
| Platform | Takes 2% fee on winnings | Zero inventory risk |
| Market Makers | Provide liquidity via API | Bear inventory risk |
| Users | Trade only | Market risk |
The 250% sum in grouped binary is NOT arbitrage. Each market is independent (YES + NO = $1 per market). Smart traders normalize prices through trading, not arbitrage.
| Approach | Pros | Cons |
|---|---|---|
| 50% | Favorite less underpriced (-10¢) | Underdogs extremely overpriced (+35~45¢), won't trade |
| 100/n% | Underdogs fairly priced, may trade | Favorite heavily underpriced (-40¢), 80¢ NO won't sell |
Bottom line: Creator loses either way. The only true solutions are CTF (no stuck inventory) or accepting loss as bootstrap cost.
- Platform provides $500-1000 per market - Accept 20% loss as marketing cost - Focus on few markets with deeper liquidity - No public LP UI needed (like Polymarket)
- Partner with small MM ($2-5K/month) - Offload inventory risk to MM - Predictable cost structure
- Volume attracts more MMs naturally - Platform becomes fee-based business - Consider adding public LP feature
Distribution: ├── Platform: 25% ($0.50 per $100 trade) └── Liquidity Providers: 75% ($1.50 per $100 trade) Or if platform provides liquidity: └── Platform keeps 100% of fees
// Prisma schema - currentPrice default doesn't matter
// Price is set at market creation time
model Outcome {
currentPrice Decimal @default(0.5) // Can keep default
probability Decimal @default(50) // Set at creation
}
// When creating market with N outcomes
const totalOutcomes = outcomes.length;
const initialPrice = 1 / totalOutcomes; // 100/n%
const initialProbability = 100 / totalOutcomes;
for (const outcome of outcomes) {
await outcomeRepository.create({
...outcome,
currentPrice: initialPrice, // 0.20 for 5 outcomes
probability: initialProbability, // 20% for 5 outcomes
});
}
Buy A → A price up Others unchanged Sum drifts from 100% Arbitrage corrects
Buy A → A price up Others auto-decrease Sum stays at 100% Requires more logic
// Auto-rebalancing market maker bot
const MM_CONFIG = {
maxImbalance: 50, // Max YES/NO difference
spreadBps: 400, // 4% spread
rebalanceThreshold: 25 // Rebalance at 25 token imbalance
};
async function onTrade(market, side, amount) {
const position = getPosition(market);
const imbalance = Math.abs(position.yes - position.no);
if (imbalance > MM_CONFIG.rebalanceThreshold) {
await rebalance(market, position);
}
// Adjust spreads based on inventory
await adjustSpreads(market, position);
}
async function checkToxicInventory(market) {
const yesPrice = market.yesPrice;
// If YES is winning big, NO is toxic
if (yesPrice > 0.70) {
const noTokens = getPosition(market, 'NO');
if (noTokens > 0) {
// Sell at ANY price before it goes to zero
await placeSellOrder(market, 'NO', noTokens, yesPrice * 0.5);
}
}
}
For any LP feature (if built): ⚠️ RISK WARNING Providing liquidity involves significant risk. • You may lose 30-80% of deposited funds • Fee income may NOT cover losses • Worst case: lose almost everything Only deposit what you can afford to lose.
| Decision | Recommendation | Rationale |
|---|---|---|
| Initial Probability | 100/n% or 50% | Neither prevents loss; trade-offs exist |
| Market Structure | Keep Grouped Binary (for now) | Already implemented; CTF later |
| Trading System | Keep Order Book | Already built; AMM requires rebuild |
| Initial Liquidity | Platform provides | No external LPs at start |
| Liquidity Amount | $1-5K per market | Balance between UX and risk |
| Expected Loss | ~20% of liquidity | Marketing/customer acquisition cost |
| Fee Structure | 2% fee | Industry standard |
| Public LP UI | No (like Polymarket) | Keep it simple; internal only |
| MM Partnership | Phase 2 goal | After proving volume |
Bottom Line: Accept initial liquidity losses as cost of bootstrapping. Focus on building volume. External LPs and MMs will come after platform proves itself.