I built 6 AI agent skills that run before my morning coffee. Here is what they caught last week.
I wake up at 6:50am. By 7:00am, before I have opened Twitter or checked the news, four Claude Code skills have already run and sent me a Telegram summary.
This is what last Tuesday looked like:
=== MORNING BRIEFING — 2026-05-13 ===
OPTIONS FLOW SUMMARY
SPY P/C: 0.44 [EXTREME BULLISH]
QQQ P/C: 0.54 [BULLISH]
TEM P/C: 0.50 [BULLISH]
RXRX P/C: 0.38 [EXTREME BULLISH]
IREN P/C: 0.83 [NEUTRAL]
XLI P/C: 5.32 [OUTLIER — INSTITUTIONAL HEDGE SIGNAL] ⚠️
STOP-LOSS STATUS
TEM $48.67 → stop at $49.75 [WATCH]
IREN $51.20 → stop at $50.00 [OK]
BRIEFING COMPLETE — 4 skills, 90 seconds
That XLI line made me stop.
What I built and why
I have been managing a real-money stock portfolio since late 2025. Not a lot — a few positions, real capital, real risk. And I kept making the same mistake: spending 90 minutes every morning manually checking prices, reading options summaries, looking at charts, and then making decisions based on whatever I happened to notice.
The problem is not effort. The problem is coverage. Manual review has blind spots. I was watching individual names and missing the sector level entirely.
So I built four skills:
1. Options Flow Scanner
Pulls the full options chain for each ticker in my watchlist, calculates the put/call ratio, and classifies each reading:
< 0.40 → EXTREME BULLISH
0.40–0.60 → BULLISH
0.60–1.20 → NEUTRAL
1.20–2.00 → CAUTIOUS
> 2.00 → BEARISH / HEDGE SIGNAL
> 3.00 → INSTITUTIONAL HEDGE SIGNAL
The key part: it flags outliers against each instrument's own historical baseline. XLI's normal P/C sits around 0.8–1.1. At 5.32, the outlier flag fires even though the absolute threshold for "bearish" is lower.
2. Stop-Loss Monitor
Polls my positions every 15 minutes during market hours. If a price crosses a threshold, it sends a Telegram message immediately. No checking required.
I set TEM's stop at $49.75. It is currently at $48.67. The skill watches it so I do not have to.
3. Daily Investment Briefing
Nine waves of analysis in sequence:
- Overnight macro (futures, global markets)
- Options flow (from skill #1)
- Sentiment overlay
- Technical setup (support/resistance)
- Risk assessment
- Opportunity scan
- Alert triggers
- Trade ideas
- Execution checklist
Total runtime: 90 seconds. Output: one structured Telegram message.
4. Portfolio Greeks Dashboard
Tracks delta exposure, concentration by sector, and leverage across all open positions. The question it answers: "If the market drops 5% today, what happens to my book?" Knowing that before open is worth a lot.
The XLI signal
XLI is the Industrial Select Sector SPDR ETF. Aerospace, defense, machinery, transportation. Normal put/call ratio: 0.5–1.2.
Last Tuesday: 5.32.
At that level, someone is buying institutional-scale downside protection on industrials. That is not a retail trade. The signal could mean a macro hedge against cyclical slowdown, a specific catalyst hedge (tariff decision, budget), or a volatility play. I do not know which.
What I know: before this scanner, I would not have seen it.
I did not change any positions. One data point is not a thesis. But I noted it, set a watch trigger, and paid closer attention to industrial exposure for the next week.
That is the value: it interrupts complacency.
The technical setup
Each skill is a TypeScript module that runs via node-cron inside a single Node.js process. No Lambda, no queue, no Kubernetes. One pm2 start and it runs forever.
// Simplified options scanner core
async function scanTicker(ticker: string): Promise<FlowReading> {
const chain = await fetchOptionsChain(ticker);
const putVolume = chain.filter(c => c.type === "put").reduce((sum, c) => sum + c.volume, 0);
const callVolume = chain.filter(c => c.type === "call").reduce((sum, c) => sum + c.volume, 0);
const ratio = putVolume / callVolume;
const historical = await getHistoricalBaseline(ticker);
const isOutlier = ratio > historical.mean + (2 * historical.stdDev);
return { ticker, ratio, classification: classify(ratio), isOutlier };
}
The outlier detection is the part that caught XLI. Not "is the ratio high" — but "is this ratio unusual for this specific instrument."
What I got wrong first
I built the briefing skill first. It was beautiful and useless — comprehensive analysis of data I did not have a good way to source.
Then I built the options scanner. Then the stop-loss monitor. Then I rebuilt the briefing to use real data from the other skills.
The lesson: build the data layer first. The analysis layer is easy once you have reliable inputs.
Open source
The scanner and stop-loss monitor are on GitHub: github.com/tellmefrankie/news-engine
Pull requests welcome — especially for Discord alert support and Polygon.io free tier (both have open issues).
The scanner that caught this
The full bundle includes 4 production-tested skills:
- Options Flow Scanner — flags unusual P/C ratios like the XLI 5.32 read
- Stop-Loss Monitor — real-time price alerts via Telegram (caught my TEM position at $47.44)
- Daily Investment Briefing — 9-wave morning analysis, runs in 90 seconds
- Portfolio Greeks Dashboard — tracks concentration risk and leverage
I have been running these on a real portfolio for 6 months. Not a demo.
$29 one-time — no subscription · Install on Agensi →
If the price ever goes up, existing buyers keep the current version forever.
Every Monday I publish the top options signals from the live scanner. Free to follow: Options Anomaly Weekly
Not financial advice. Personal tooling and research. Do your own due diligence.
Top comments (0)