by YizhiSong
A fully automated AI trading agent, unattended once set up: trades real Robinhood orders via its Agentic Trading MCP. Two scheduled Claude Code sessions a day screen stocks and place trades under a narrow gate, with mechanical risk rules as the safety layer. Cheap to run -- Claude Pro only, no metered API spend. Not financial advice.
# Add to your Claude Code skills
git clone https://github.com/YizhiSong/FriesTraderFriesTrader is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by YizhiSong. A fully automated AI trading agent, unattended once set up: trades real Robinhood orders via its Agentic Trading MCP. Two scheduled Claude Code sessions a day screen stocks and place trades under a narrow gate, with mechanical risk rules as the safety layer. Cheap to run -- Claude Pro only, no metered API spend. Not financial advice. It has 53 GitHub stars.
FriesTrader's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/YizhiSong/FriesTrader" and add it to your Claude Code skills directory (see the Installation section above).
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh FriesTrader against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
An AI trading agent built to run cheap and fully on its own, trading real orders on Robinhood using its Agentic Trading MCP server. Once set up, it runs unattended on its own schedule every weekday, no manual triggering needed. Two short scheduled Claude Code sessions a day screen stocks, write out their reasoning, and (only under a narrow, explicit gate) place real trades, without a team of specialized sub-agents burning tokens on every decision. The actual safety mechanism is mechanical, auditable risk rules, not the model's judgment, and because it's just two lean sessions instead of a multi-agent pipeline, it runs comfortably on a Claude Pro subscription (as low as $200/year on the annual plan), no Claude Max or metered API spend required.
This is a template/framework extracted from a real, live deployment. Adapt it, don't just run it blind — read "What this does and doesn't solve" below before pointing it at real money.
"Fully autonomous" and "trading real money" together should make you nervous. Here's what actually stands between a thesis and an order:
dry_run and stay there for a minimum
number of cycles (dry_run_min_cycles_before_live) before a live
order is even possible, so you can watch it screen and reason before
it touches real money.execution.mode to "live" — the agent is
explicitly barred from ever changing this itself, and refuses to
place live orders while dry_run.trade_log.jsonl
is append-only, so you can check whether the reasoning is actually
sound, not just trust it.Trading runs as two separate phases, on two separate schedules — a full trading day's closing data feeds the thesis, and a fresh opening price is used for the actual order, rather than trading on a stale overnight price.
graph TD
RH[Robinhood MCP] -- watchlist + scan / quotes / historicals --> A[Phase A: Screen & Thesis]
A -- thesis per candidate --> P[pending_proposals.jsonl]
P --> B[Phase B: Re-verify & Risk Enforcement]
RR[risk_rules.json] -- mechanical limits --> B
RH -- fresh open price / positions --> B
B -- dry_run or gated live order --> RH
B -- every decision logged --> L[trade_log.jsonl]
L -- plain-English recap --> REC[trade_log_recent.md]
pending_proposals.jsonl.
Places no orders, not even dry-run ones.
Full spec: PHASE_A_TASK.md.risk_rules.json
mechanically, and dry-runs or (gated) places orders. Full spec:
PHASE_B_TASK.md.Both are designed to run as cloud-hosted scheduled agent sessions,
independent of any local machine — each run clones this repo fresh and
commits/pushes its results back to main, so the repo itself is the
persistent state, not local disk.
risk_rules.json — the hard, mechanical limits (position sizing, stop-
loss, loss limits, universe filters, execution mode, wash-sale guard).
Nothing in this system should be able to override these. Several
fields need your own account details before this is usable — see
First-time setup below.PHASE_A_TASK.md / PHASE_B_TASK.md — the full, self-contained spec
each phase follows.trade_log_template.jsonl — the log line shapes; real logs accumulate
in trade_log.jsonl in this same style.This is what a real Phase B cycle actually produces (trade_log_recent.md,
regenerated every run, symbols genericized):
2026-07-09
Loss limit: OK — daily 0.0%, weekly -2.1%, within -5%/-10% limits.
Held positions (stop-loss / take-profit):
- EXAMPLE — stop 7.00% (vol-scaled), drawdown -2.3% — holding
New-entry candidates considered: OTHER, ANOTHER
- OTHER — approved: medium conviction, $60.00 (12% of account)
- ANOTHER — rejected: max_concurrent_positions already filled this cycle
Orders placed: OTHER — buy $60.00 (dry_run)
No JSON parsing required to see what it did and why. Full field-level
examples (thesis records, raw trade_log.jsonl lines) are further down
in Example output.
trade_log.jsonl, proposals) once running. Phase A/B commit and
push results back to main, so you need a repo you actually control,
not this one.PHASE_A_TASK.md/PHASE_B_TASK.md (quotes,
positions, orders, etc.) goes through it.account_number in risk_rules.json with your own Robinhood
account number, set starting_capital_usd to your real starting
balance, set universe.watchlist_name to a watchlist you've already
created and populated in your Robinhood account, and review every
other threshold — the defaults here are illustrative, not a
recommendation.create_scan tool (relative
volume > 2.0x, market cap above your min_market_cap_usd), then paste
its ID into universe.supplementary_scan_id. Phase A calls this scan
every run to surface movers outside your watchlist — left as the
placeholder, that call fails every cycle.wash_sale_avoidance.linked_accounts with every Robinhood
account number you personally control, not just this one — if this is
genuinely the only account you trade in, a single-entry list (just
this account's number) is enough. Leave enabled: true unless you
specifically want buys never blocked on wash-sale grounds.execution.mode set to "dry_run". Leave it there for at least
the number of cycles set in dry_run_min_cycles_before_live — don't
shortcut this.trade_log.jsonl yourself. Look specifically
at rejected candidates and stop-loss triggers, not just the trades
that "worked" — that's where you'll see if the reasoning step is
actually sound or just getting lucky with an uptrend.execution.mode to "live" yourself, by hand, after you've
reviewed enough dry-run cycles to trust the output. Do not let the
agent flip it for you as a shortcut.This template gets improvements over time.
risk_rules.json),
resolve locally:
git remote add upstream https://github.com/YizhiSong/FriesTrader.git
git fetch upstream
git merge upstream/main
Resolve any conflicts in risk_rules.json by hand — your own account
details and thresholds should win, not upstream's placeholders.Two schedules need to fire: Phase A around 4:30pm Central on weekdays
(hand Claude Code PHASE_A_TASK.md to execute), and Phase B around
8:35am Central on weekdays, 5 minutes after market open (hand it
PHASE_B_TASK.md). Each run is a fresh Claude Code session pointed at
this repo — no state needs to persist locally between runs, since the
repo itself (risk_rules.json, pending_proposals.jsonl,
trade_log.jsonl) is what's read and written each time.
PHASE_A_TASK.md on the Phase A schedule and a second
for PHASE_B_TASK.md on the Phase B schedule, with the routine's
source pointed at your fork from First-time setup, not this repo.
This runs independent of any machine being on — the actual point of