Files
stonks/config/config.yaml
T
2026-09-11 09:54:49 +08:00

73 lines
2.8 KiB
YAML

targets:
crypto: [BTC-USD, ETH-USD, SOL-USD, ZEC-USD]
equities: [AAPL, GOOGL, TSLA, AVGO, NVDA, INTC, AMD, AMZN, CRCL, MSTR, META, ORCL]
futures:
gold: GC=F
silver: SI=F
crude_oil: CL=F
# Bare base+quote codes, no provider suffix — the yfinance fetcher adds
# whatever suffix Yahoo needs (=X) internally.
forex: [JPYTWD, USDTWD]
fetchers:
- name: yfinance
- name: finnhub
params:
api_key_env_var: FINNHUB_API_KEY
news_lookback_days: 1
- name: rss
params:
feeds:
# feeds.reuters.com was retired (domain no longer resolves) — see
# PLAN.md's note on RSS feed URLs occasionally getting retired.
- https://www.investing.com/rss/news.rss
- https://www.coindesk.com/arc/outboundfeeds/rss/
max_items_per_feed: 10
max_age_hours: 48
analyzer:
# "subscription" shells out to the `claude` CLI, billed against a Claude
# Pro/Max subscription's usage limits ($0 marginal cost for one call/day).
# "api" calls the Messages API directly with ANTHROPIC_API_KEY, billed
# per token (~$1-3/month at this volume — see PLAN.md).
mode: subscription
model: claude-opus-5 # only used in "api" mode
effort: medium # only used in "api" mode
# Multi-agent mode: the same fetched data is also piped to these CLIs;
# their independent takes are appended to Claude's prompt as extra
# context (Claude still writes the one final report). Requires `gemini`
# and `codex` to be installed and separately logged in on this host
# (`gemini` / `codex login`) — remove an entry, or the whole list, to
# disable it for that CLI. A failing/unauthenticated advisor is logged
# as a warning and simply excluded, it does not fail the run.
advisors:
#- name: Gemini
# command: gemini
- name: Codex
command: codex
args: [exec, "-"]
outputs:
- name: discord
params:
webhook_env_var: DISCORD_WEBHOOK_URL
# Always on: saves each run's fetched data + full prompt + raw/parsed
# analysis to disk (one timestamped subdirectory per run). This is both a
# debugging aid and the source of the previous run's report.md, which the
# prompt reads back to dedup each briefing against the last one.
archive:
dir: ~/.local/state/stonks/runs
# Always on: a simulated paper-trading account Claude's own buy/sell
# recommendations execute against (never other advisors' — see
# analyzer.advisors). State (cash, open positions, running profit) persists
# in portfolio.json under dir, and Claude's freeform decision notes persist
# alongside it in memory.md. All position sizing/leverage math and profit
# calculation is done in Go (internal/portfolio), not by Claude — Claude
# only requests an amount_usd/leverage per call.
portfolio:
dir: ~/.local/state/stonks
initial_budget_usd: 10000
max_leverage: 3