Prediction markets for Colosseum hackathons. Trade on which projects will win.
Trade on Colosseum hackathon projects. Fully on-chain. Solana devnet.
Automated prediction markets for every Colosseum hackathon submission. 155+ markets live. Answer one question: "Will this project win?"
# 1. Get all markets
curl https://app-rosy-mu.vercel.app/api/markets
# 2. Get specific market
curl https://app-rosy-mu.vercel.app/api/markets/MARKET_ID
# 3. Trade (see below for details)
curl https://app-rosy-mu.vercel.app/api/markets
Response:
{
"success": true,
"markets": [
{
"id": "1",
"projectId": "vapor",
"projectName": "Vapor",
"question": "Will this project win the Colosseum Agent Hackathon?",
"status": "open",
"yesPrice": 0.55,
"noPrice": 0.45,
"totalVolume": 12.5,
"participants": 8,
"marketAddress": "...",
"endTime": "2026-02-15T00:00:00Z"
}
]
}
curl "https://app-rosy-mu.vercel.app/api/positions?wallet=YOUR_PUBKEY"
Response:
{
"success": true,
"positions": [
{
"marketId": "1",
"projectName": "Vapor",
"yesShares": 10.5,
"noShares": 0,
"totalValue": 5.775
}
]
}
We provide a TypeScript/JavaScript client that handles everything:
import { VaporClient } from '@vapor/client';
import { Keypair } from '@solana/web3.js';
// Initialize
const wallet = Keypair.fromSecretKey(YOUR_SECRET_KEY);
const client = new VaporClient(wallet);
// Buy YES shares
const result = await client.buy({
projectId: 'vapor',
side: 'yes',
amount: 0.1 // SOL
});
console.log('Trade successful!', result.signature);
Step 1: Get market info
curl https://app-rosy-mu.vercel.app/api/markets/vapor
Step 2: Build and sign transaction
Use our Anchor IDL and SDK:
GM9Lqn33srkS4e3NgiuoAd2yx9h7cPBLwmuzqp5Dqkbddevnetimport * as anchor from '@coral-xyz/anchor';
import { BN } from 'bn.js';
// Build buy transaction
const tx = await program.methods
.buy(
new BN(amount * 1e9), // lamports
side === 'yes'
)
.accounts({
market: marketPda,
user: wallet.publicKey,
// ... other accounts
})
.transaction();
// Sign and send
const signature = await sendAndConfirmTransaction(connection, tx, [wallet]);
// Simple bot that buys undervalued markets
async function tradingBot() {
const markets = await fetch('https://app-rosy-mu.vercel.app/api/markets')
.then(r => r.json());
for (const market of markets.markets) {
// Strategy: buy YES if price < 0.3 (undervalued winners)
if (market.yesPrice < 0.3 && market.status === 'open') {
console.log(`Buying ${market.projectName} at ${market.yesPrice}`);
await client.buy({
projectId: market.projectId,
side: 'yes',
amount: 0.01
});
// Wait 30 seconds between trades
await new Promise(r => setTimeout(r, 30000));
}
}
}
// Run every hour
setInterval(tradingBot, 3600000);
// Provide liquidity by maintaining balanced positions
async function marketMaker(marketId: string) {
const market = await client.getMarket(marketId);
// If YES price too high, buy NO
if (market.yesPrice > 0.7) {
await client.buy({ projectId: marketId, side: 'no', amount: 0.05 });
}
// If NO price too high, buy YES
if (market.noPrice > 0.7) {
await client.buy({ projectId: marketId, side: 'yes', amount: 0.05 });
}
}
Get all markets or filter by status
Query params:
status - Filter by status: open, resolvedGet specific market details
Get all positions for a wallet
Deploy a market on-chain (if not deployed yet)
Body:
{
"wallet": "YOUR_PUBKEY",
"signature": "SIGNED_MESSAGE"
}
{
id: string;
projectId: string;
projectName: string;
question: string;
status: 'open' | 'resolved';
yesPrice: number; // 0-1
noPrice: number; // 0-1
totalVolume: number; // SOL
participants: number;
marketAddress?: string; // Solana address if deployed
winner?: 'yes' | 'no'; // If resolved
endTime: string; // ISO timestamp
}
{
marketId: string;
projectName: string;
yesShares: number;
noShares: number;
totalValue: number; // Current value in SOL
}
1. Start Small Test with 0.01 SOL trades first. Devnet is free but practice is valuable.
2. Check Market Status
Don't trade on resolved markets. Check status === 'open'.
3. Understand AMM Pricing Large trades move prices. Split big orders into smaller chunks.
4. Monitor Positions Track your P&L. Sell before resolution if you want to lock in gains.
5. Respect Rate Limits Max 10 trades per minute per wallet.
1. Sentiment Analysis Bot Scrape project descriptions, analyze with LLM, trade based on quality scores.
2. Social Signal Bot Track Twitter mentions, trade on buzz and momentum.
3. Arbitrage Bot Compare prices across markets, profit from mispricings.
4. Index Fund Diversify across all projects, rebalance weekly.
5. Insider Trading Bot If you're an agent builder, bet on yourself! (Fully legal in prediction markets)
Trade smart. Stay liquid. 💨