{"skill":{"slug":"polymarket-btc-midcandle","displayName":"Polymarket Btc Midcandle","summary":"BTC Mid-Candle Scalper — 75%+ win rate on Polymarket BTC 15-minute markets. Enters mid-candle (2–12 min remaining) when intracandle momentum is confirmed by...","description":"---\nname: polymarket-btc-midcandle\ndescription: \"BTC Mid-Candle Scalper — 75%+ win rate on Polymarket BTC 15-minute markets. Enters mid-candle (2–12 min remaining) when intracandle momentum is confirmed by 5m + 3m price change. Fully configurable: tune the momentum threshold, volume gate, and entry price window to dial in your own edge. Proven on real money. Use when you want a battle-tested, high-WR crypto trading bot running 24/7 on Polymarket.\"\nmetadata:\n  author: \"DjDyll\"\n  version: \"1.1.1\"\n  displayName: \"BTC Mid-Candle Scalper\"\n  difficulty: \"intermediate\"\n---\n\n# BTC Mid-Candle Scalper 🔥\n\n> **75%+ win rate. Real money. 400+ trades.**\n> This is the highest-performing BTC strategy in the Simmer ecosystem — built, battle-tested, and profitable over months of live trading. Now you can run it yourself.\n\n> **This is a template.** The default signal is mid-candle BTC momentum from Binance klines —\n> remix it with your own data sources, tighter time windows, or custom volume filters.\n> The skill handles all the plumbing (market discovery, trade execution, safeguards).\n> Your tuning provides the alpha.\n\n---\n\n## What It Does\n\nPolymarket's BTC Up/Down markets close every 15 minutes at :00, :15, :30, and :45. Most traders enter blind at candle open — guessing direction with no data. This strategy waits.\n\n**The edge:** By the time 2–12 minutes remain in a candle, BTC has shown its hand. If 5-minute and 3-minute price changes both agree on direction AND volume confirms it isn't noise — that's a high-conviction trade with a known time horizon.\n\n**The result:** 65–75%+ win rate depending on your settings. Defaults are calibrated to produce edge out of the box.\n\n> ⚠️ **Important:** The defaults are a starting point, not a magic formula. **You need to fine-tune these settings to your account size, risk tolerance, and market conditions.** A trader who tunes their thresholds will outperform one who runs defaults. The strategy section below explains exactly what each knob does.\n\n---\n\n## Setup\n\n### 1. Install & configure\n\n```bash\nclawhub install polymarket-btc-midcandle\n```\n\nSet your API key:\n```bash\nexport SIMMER_API_KEY=sk_live_your_key_here\n```\n\nOr set it in your `.env` file if using OpenClaw.\n\n### 2. Get your Poly Agent ID\n\nFind it at **simmer.markets/dashboard → Agents**. Copy your agent ID.\n\n```bash\npython btc_midcandle.py --set poly_agent_id=your_agent_id_here\n```\n\n### 3. Run in paper mode first\n\n```bash\npython btc_midcandle.py\n```\n\nYou'll see `[PAPER MODE]` — no real money moves. Watch it for a day. Make sure the signals make sense.\n\n### 4. Go live\n\n```bash\npython btc_midcandle.py --live\n```\n\n### 5. Set up cron (recommended)\n\n```bash\ncrontab -e\n```\n\nAdd:\n```\n3,8,13,18,23,28,33,38,43,48,53,58 * * * * cd /path/to/skill && python btc_midcandle.py --live >> /var/log/btc-midcandle.log 2>&1\n```\n\nRuns every 5 minutes. This timing is intentional — entering slightly after the candle opens gives you confirmed momentum rather than a guess.\n\n---\n\n## Configuration\n\n```bash\n# View current config\npython btc_midcandle.py --config\n\n# Set a value\npython btc_midcandle.py --set momentum_threshold=0.0012\npython btc_midcandle.py --set bet_size=10.0\n```\n\n| Parameter | Env Var | Default | Description |\n|-----------|---------|---------|-------------|\n| `poly_agent_id` | `SIMMER_BTCMC_AGENT_ID` | — | Your Polymarket agent ID (required) |\n| `bet_size` | `SIMMER_BTCMC_BET_SIZE` | `5.0` | USDC per trade |\n| `momentum_threshold` | `SIMMER_BTCMC_THRESHOLD` | `0.0015` | Min 5m price change (0.15%) |\n| `min_volume_ratio` | `SIMMER_BTCMC_VOL_RATIO` | `1.2` | Volume vs 2h avg (0 = disabled) |\n| `min_entry_price` | `SIMMER_BTCMC_MIN_ENTRY` | `0.45` | Min entry price per side |\n| `max_entry_price` | `SIMMER_BTCMC_MAX_ENTRY` | `0.65` | Max entry price per side |\n| `enable_1m_confirm` | `SIMMER_BTCMC_1M_CONFIRM` | `false` | Require 1m candle to confirm |\n| `skip_hours` | `SIMMER_BTCMC_SKIP_HOURS` | `2,9,10,11,15` | UTC hours to skip (see warning below) |\n| `discord_webhook` | `SIMMER_BTCMC_WEBHOOK` | `\"\"` | Discord alert webhook (optional) |\n| `max_position_usd` | `SIMMER_BTCMC_MAX_POSITION` | `50.0` | Max USDC per trade when using `--smart-sizing` |\n| `sizing_pct` | `SIMMER_BTCMC_SIZING_PCT` | `0.03` | Portfolio % per trade when using `--smart-sizing` (3%) |\n\n---\n\n> ⛔ **Skip Hours — Do Not Remove Without Data**\n>\n> The following UTC hours are **skipped by default** because BTC midcandle has historically poor win rate during these windows:\n>\n> | Hour (UTC) | Local time (ET) | Why it's bad |\n> |------------|-----------------|--------------|\n> | 2h | 10pm ET (prev night) | Low volume, thin books, random noise |\n> | 9h | 5am ET | Pre-market — BTC drifts without conviction |\n> | 10h | 6am ET | Pre-market open — spread widens, fills unpredictable |\n> | 11h | 7am ET | Early NY session — choppy before real volume arrives |\n> | 15h | 11am ET | Post-open chop — directional momentum breaks down |\n>\n> These are configured as `skip_hours = \"2,9,10,11,15\"` and enforced automatically.\n> **Do not remove hours from this list without your own shadow data showing consistent WR above 55% for that hour.** Trading these hours is the single fastest way to drag your win rate below breakeven.\n\n---\n\n## Tuning Guide\n\nThis is where you find your edge. The defaults produce solid results, but tuning to your conditions can meaningfully improve win rate.\n\n### Momentum threshold (`momentum_threshold`)\nControls how much BTC must move in 5 minutes before you enter.\n\n- **Lower (0.0010):** More trades, slightly lower accuracy. Good in trending markets.\n- **Higher (0.0020):** Fewer trades, only strong moves. Better in choppy conditions.\n- **Start here:** Run paper mode for 3–5 days. Check your `--positions` output. If you're getting too many marginal trades, raise it.\n\n### Volume ratio (`min_volume_ratio`)\nFilters out low-volume momentum that tends to reverse.\n\n- **0 (disabled):** Maximum trade frequency. Raw momentum only.\n- **1.2 (default):** Only trade when volume is 1.2× the 2-hour average.\n- **1.5–2.0:** High-conviction only. Fewer trades, but strong volume confirmation.\n\n### Entry price window (`min_entry_price` / `max_entry_price`)\nFilters out bad entries. Entry price is how much you pay per share.\n\n- **Too cheap (<0.40):** You're betting against the crowd. Usually wrong.\n- **Too expensive (>0.70):** High cost, limited upside.\n- **Sweet spot (0.45–0.65):** Balanced risk/reward. Default is calibrated here.\n\n### 1m confirmation (`enable_1m_confirm`) — OFF by default\nAdds a final gate: the last 1-minute candle must agree with your direction before a trade fires.\n\n- **Disabled (default):** More trades, some noise. Good baseline to start.\n- **Enabled:** Reduces false signals at the cost of some missed entries. Recommended once you're comfortable with the strategy.\n\n> 💡 **Tip:** Try enabling this after your first week. Compare your win rate with vs without — most traders see a meaningful improvement on choppy days.\n\n---\n\n## Commands\n\n```bash\n# Paper trade (default)\npython btc_midcandle.py\n\n# Live trade\npython btc_midcandle.py --live\n\n# Show open positions\npython btc_midcandle.py --positions\n\n# Portfolio-based sizing (% of balance)\npython btc_midcandle.py --live --smart-sizing\n\n# Skip safeguards (advanced — not recommended)\npython btc_midcandle.py --live --no-safeguards\n\n# View config\npython btc_midcandle.py --config\n\n# Set a config value\npython btc_midcandle.py --set bet_size=10\n```\n\n---\n\n## Example Output\n\n```\n============================================================\n🔴 LIVE: BTC Mid-Candle Scalper — 2026-03-15 22:33 UTC\n============================================================\n⏰ Candle :30 | 8 min remaining | ✅ In window\n📊 Volume: 1.41x ✅\n📈 Momentum: up | 5m: +0.1821% | 3m: +0.0943%\n📋 Market: Will BTC go up or down — March 15, 10:30-10:45PM ET?\n💲 Entry price: 0.512 (side=yes)\n\n🚀 Placing YES $5.00 — Mid-candle up (8m left): 5m=+0.1821% 3m=+0.0943% vol=1.41x\n✅ Filled: 9.7 YES shares for $5.00\n```\n\n---\n\n## Remix Ideas\n\nThe skill handles market discovery, execution, and safeguards. Swap in your own signal:\n\n- **Fear & Greed signal:** Only trade when Crypto Fear & Greed is above 60 (greed confirms momentum)\n- **Order flow:** Add Binance aggTrades to confirm buy/sell pressure before entering\n- **Multi-asset confirmation:** Only enter BTC UP if ETH is also moving up (correlated moves are stronger)\n- **News filter:** Skip trades during scheduled macro events (CPI, Fed announcements)\n\n---\n\n## Troubleshooting\n\n**No trades firing?**\n- Check your cron is running: `tail -f /var/log/btc-midcandle.log`\n- Momentum threshold may be too high for current market conditions — try lowering to `0.0010`\n- Check Binance API is reachable from your server\n\n**Too many losing trades?**\n- Raise `momentum_threshold` — only trade stronger moves\n- Enable `enable_1m_confirm` — adds a final confirmation step\n- Raise `min_volume_ratio` to `1.5` — only trade high-conviction volume\n\n**\"No active BTC market found\"?**\n- Verify your `poly_agent_id` is set correctly\n- Check Simmer API status at status.simmer.markets\n\n**Win rate lower than expected?**\n- Run paper mode for a week before going live — calibrate thresholds to your specific market hours\n- Check `--positions` for markets that are resolving against you — look for patterns in losing trades\n","tags":{"latest":"1.1.1"},"stats":{"comments":0,"downloads":763,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":4},"createdAt":1773616443264,"updatedAt":1779078318120},"latestVersion":{"version":"1.1.1","createdAt":1774037999389,"changelog":"Add signal_data to trade calls — enables autoresearch backtest replay","license":"MIT-0"},"metadata":null,"owner":{"handle":"djdyll","userId":"s177z7jqdqsa5nwzx2s7fmj6mn83gnz7","displayName":"Dyll","image":"https://avatars.githubusercontent.com/u/6473326?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780090007020}}