by YizhiSong
A fully automated AI trading agent that trades real Robinhood orders via its Agentic Trading MCP under mechanical, auditable risk rules the model cannot override. Once set up, it is able to run on its own schedule, screening and trading stocks under a narrow, explicit gate. 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/FriesTraderLast scanned: 8/11/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-11T05:06:54.145Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}FriesTrader 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 that trades real Robinhood orders via its Agentic Trading MCP under mechanical, auditable risk rules the model cannot override. Once set up, it is able to run on its own schedule, screening and trading stocks under a narrow, explicit gate. Cheap to run — Claude Pro only, no metered API spend. Not financial advice. It has 85 GitHub stars.
Yes. FriesTrader passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
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).
FriesTrader is primarily written in Python. It is open-source under YizhiSong on GitHub, so you can review or fork the full source.
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!
Based on votes and bookmarks from developers who liked this skill
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
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's able to run unattended on its own schedule every weekday, no manual triggering needed, and the actual safety mechanism is mechanical, auditable risk rules, not the model's judgment. 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. 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.
If you build on this, a star, a fork, or a link back to this repo is always appreciated.
"Fully autonomous" and "trading real money" together should make you nervous. Here's what actually stands between a thesis and an order:
scripts/ rather than the model doing arithmetic in prose. Same
inputs always produce the same numbers, and a good story never cancels
a stop-loss.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] -- thresholds --> S[scripts/*.py deterministic risk math]
S -- JSON results, read verbatim --> 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. (Running locally instead works too,
but only fires while your machine is on and available at each
scheduled time.)
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.
scripts/ — the deterministic risk-math engines Phase B runs instead
of hand-computing anything, each a standalone Python 3 script (stdlib
only, no dependencies) you can run and inspect on its own:
pnl_pct.py — daily/weekly loss-limit % against starting_capital_usd,
and the entries-halted decision.stop_loss.py — the fixed or volatility-scaled stop_pct (clamped,
sample-stdev of daily returns), including the trailing-high reference
price once a take-profit tier has fired, and the trigger decision.take_profit.py — tiered partial-exit firing, cascading quantity
correctly when a single cycle's gain jumps past more than one
not-yet-fired tier at once.rank_candidates.py — the conviction / risk_flags / pct_below_52wk_high
priority sort new entries and top-ups compete on.position_sizing.py — position/top-up sizing and the concurrency/
cash-buffer checks, compounding running totals down the ranked list.Each takes plain CLI args, prints one JSON object, and is meant to be
read from directly rather than re-derived — see PHASE_B_TASK.md
Step 5 for the exact call shape of each.
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.
Get your own copy first:
main, so you need a repo you actually control.
trade_log.jsonl, proposals) once running.See "Keeping your copy updated" below for pulling in future improvements.
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