{"slug": "my-morning-btc-checklist-uses-three-agents-here-s-what-it-actually-said-the-day", "title": "My morning BTC checklist uses three agents — here's what it actually said the day BTC bottomed", "summary": "A solo developer built a morning Bitcoin checklist using three specialized agents—technical, on-chain, and macro—that run in parallel to score the market and generate a single action signal. The system, which runs at 6:30 AM IST, would have issued a STRONG_BUY signal on the day BTC bottomed at $76,099, recommending a full position. The developer emphasizes that the multi-agent approach reduces decision fatigue and provides a disciplined framework to avoid trading when signals disagree.", "body_md": "I am not a quant. I am a solo developer who holds BTC and doesn't trust Twitter, TradingView gurus, or a single indicator to make a 4-figure trade decision.\n\nSo I built a morning checklist: three specialized agents (technical, on-chain, macro) run in parallel, score the market, and a signal generator combines them into one action line. It runs at 6:30 AM IST before I touch my phone. Below is what it looks like end-to-end — and what it would have told me on the day BTC actually bottomed.\n\n**GitHub:** [https://github.com/AmSach/btc-research](https://github.com/AmSach/btc-research)\n\n```\ncd ~/projects/btc-research\npython3 scripts/run_analysis.py\n```\n\nThat's it. One command. Three agents fire in parallel:\n\n```\n[1/4] Running Technical Analysis Agent...\n  Signal: NEUTRAL | Score: 0.44 | Conf: 0.65\n[2/4] Running On-Chain Analyst Agent...\n  Signal: BULLISH | Score: 0.80 | Conf: 0.71\n[3/4] Running Macro Strategist Agent...\n  Signal: BULLISH | Score: 0.75 | Conf: 0.69\n[4/4] Generating Combined Signal...\n```\n\nEight seconds later, I get a single decision in my terminal — and an email copy in my inbox before the kettle finishes boiling:\n\n```\n============================================================\nFINAL SIGNAL\n============================================================\nSignal Type: BUY\nTotal Score: 0.662\nConfidence:  0.684\nAction:      Take partial position (25-50% of capital)\nPrice:       $76,099\n\nAgent Scores:\n  Technical    0.440 (weight: 0.35)\n  On-Chain     0.800 (weight: 0.40)\n  Macro        0.750 (weight: 0.25)\n\nKey Drivers:\n  • On-Chain: bullish (0.8)\n  • Macro: bullish (0.75)\n\nRisk Factors:\n  (none flagged)\n\nKey Levels:\n  support       $68,900\n  resistance    $75,000\n  ema_200       $82,919\n  ath           $125,835\n```\n\nI make a coffee. I open my exchange. I act. No Twitter. No \"BTC to the moon\" Telegram groups. No waffling because the candle looked \"weird.\"\n\nThe problem is not \"I don't have a strategy.\" Most retail traders have a strategy. The problem is **decision fatigue under uncertainty**:\n\nThe three-agent setup forces me to look at three independent angles and a single weighted verdict. On a typical day, the agents disagree, and the system spits out NEUTRAL — I do nothing. The most valuable output is the permission to **not trade** when the signals don't agree.\n\nLet's pretend I had this running on the day BTC bottomed after the ETF-flow scare:\n\n```\n{\n  \"timestamp\": \"2026-01-09T01:00:00\",\n  \"technical\": {\"signal\": \"OVERSOLD\", \"score\": 0.72, \"confidence\": 0.78},\n  \"onchain\":  {\"signal\": \"BULLISH\", \"score\": 0.78, \"confidence\": 0.74},\n  \"macro\":    {\"signal\": \"BULLISH\", \"score\": 0.85, \"confidence\": 0.80},\n  \"signal_type\": \"STRONG_BUY\",\n  \"total_score\": 0.79,\n  \"confidence\": 0.77,\n  \"action\": \"Take full position (50-100% of capital)\",\n  \"key_drivers\": [\n    \"Technical: oversold (0.72)\",\n    \"On-Chain: bullish (0.78)\",\n    \"Macro: bullish (0.85)\"\n  ]\n}\n```\n\nThree independent agents all green. RSI oversold, exchange reserves at multi-year low, DXY rolling over. The signal generator says **STRONG_BUY, take full position**. That was the morning I would have actually added to my position instead of doom-scrolling.\n\nThe same pipeline, run a week later with macro turning neutral, would have said NEUTRAL — and the right call was to stop adding.\n\nI deliberately did **not** use one LLM to \"just look at the chart.\" Three reasons:\n\n**Separation of forces.** Technical analysis is pattern math, on-chain is network-state data, macro is correlation. A single LLM blends them by vibes. Three narrow scoring functions plus a weighted combiner is auditable.\n\n**Confidence is calibrated per agent.** Technical is honestly 65-75% confident because RSI is noisy. On-chain is 70-80% because exchange reserves are slow-moving. Macro is 60-70% because DXY can flip on a Fed tweet. The signal generator weights by both score *and* confidence, so a high-confidence on-chain signal (0.8, 0.71) overrides a low-confidence technical one (0.44, 0.65).\n\n**I can disable a broken agent.** When Glassnode's API went down in March, I commented out one line and the other two still ran with rebalanced weights. Try doing that with a monolithic prompt.\n\n```\nTHRESHOLDS = {\n    'strong_buy': 0.75,\n    'buy':        0.60,\n    'neutral':    0.45,\n    'sell':       0.30\n}\n\ntotal_score = sum(\n    agent['score'] * weight\n    for agent, weight in zip(agents, [0.35, 0.40, 0.25])\n)\n```\n\nThat's the whole thing. The point is not cleverness — the point is **I see the rules, I can override them, and I can rewrite them on a Sunday afternoon when I disagree with a weight.**\n\nIt is **not** for day traders, leverage addicts, or anyone who thinks a 0.66 score is a substitute for risk management.\n\nThe weights are obviously debatable. Right now on-chain > technical > macro because I think the slow money is the smart money. If you think macro should dominate (DXY leads everything), or technical should dominate (price action is truth), fork it, change `AGENT_WEIGHTS`\n\nin `scripts/config.py`\n\n, and tell me why. I read every issue.\n\n**GitHub:** [https://github.com/AmSach/btc-research](https://github.com/AmSach/btc-research)\n\n**Skill file:** `skills/btc_system/SKILL.md`\n\n(drop it into any agent runtime)\n\n*Three agents, one signal, one email, zero Telegram groups. Built because I needed it, open-sourced because you might too.*", "url": "https://wpnews.pro/news/my-morning-btc-checklist-uses-three-agents-here-s-what-it-actually-said-the-day", "canonical_source": "https://dev.to/aman_sachan_126d19c4a2773/my-morning-btc-checklist-uses-three-agents-heres-what-it-actually-said-the-day-btc-bottomed-3fhb", "published_at": "2026-06-15 00:41:49+00:00", "updated_at": "2026-06-15 01:10:49.676000+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "large-language-models", "developer-tools", "ai-agents"], "entities": ["BTC", "GitHub", "RSI", "DXY", "ETF"], "alternates": {"html": "https://wpnews.pro/news/my-morning-btc-checklist-uses-three-agents-here-s-what-it-actually-said-the-day", "markdown": "https://wpnews.pro/news/my-morning-btc-checklist-uses-three-agents-here-s-what-it-actually-said-the-day.md", "text": "https://wpnews.pro/news/my-morning-btc-checklist-uses-three-agents-here-s-what-it-actually-said-the-day.txt", "jsonld": "https://wpnews.pro/news/my-morning-btc-checklist-uses-three-agents-here-s-what-it-actually-said-the-day.jsonld"}}