Core Concepts
Algo Workspaces
.md↗Every algorithm gets its own uniquely-slugged directory on disk — a mission card, versioned strategy folders, two append-only logs, and per-algo data. Two sessions building the same strategy name never collide.
Where algos live
~/.local/share/finny/algos/ # Linux/macOS %LOCALAPPDATA%\finny\algos\ # Windows
Each algo lives under a kebab-case slug plus an 8-char hex id — for example btc-mean-reversion-1h.a3f8c9e2. The hex id guarantees that identical names from different sessions never share a directory.
Directory layout
btc-mean-reversion-1h.a3f8c9e2/ ├── mission.md # Identity card — YAML frontmatter + prose rationale ├── prefs.md # Per-algo sizing, risk, constraints ├── decisions.md # Append-only HUMAN design log ├── memory.md # Append-only AGENT summary (written on /compact) ├── CURRENT # Single token pointing to active version (e.g. "v01") ├── data/ │ ├── stock/ # OHLCV parquet files (AAPL.parquet) │ ├── crypto/ # BTC-USD.parquet │ ├── sec/ # SEC filings (AAPL-10K-2024-01-15.md) │ └── news/ │ ├── headlines/ # One file per day (2025-05-20.md) │ └── body/ # Full articles, opened on demand ├── v01/ │ ├── strategy.py # Executable strategy │ ├── backtest.json # Structured results (absent until first run) │ └── reasoning.md # Why this version exists ├── v02/ │ └── ... └── .archive/ # Raw chat transcripts per day
The mission card
mission.md is the algo's identity. YAML frontmatter captures scope and status; the body holds the freeform thesis.
--- schema_version: 2 name: btc-mean-reversion-1h status: research # research | backtested | paper | live | retired created: 2025-05-18 hypothesis: | BTC reverts to its 20-period hourly VWAP after >2σ deviations... scope: asset_class: crypto # equities | crypto | futures | fx | options | mixed universe: [BTC-USD] horizon: intraday # intraday | days | weeks | months exit_conditions: | - Time stop: close if open > 4 hours - Price stop: 1.5% adverse move ---
Versioning
v01 through v99. Zero-padding keeps lexicographic order in sync with numeric order.rsi_period over a grid stays in the same version.strategy.py, backtest.json, and reasoning.md. The CURRENT token at the workspace root points to the active version.Two append-only logs
decisions.md — the human voice
You write here. Design decisions, things you tried, dead ends. Finny never edits this file.
memory.md — the agent voice
Written only on /compact. Structured so a fresh session can pick up cold without rereading the whole transcript.
## 2025-05-20 — compaction (v02) - active version: v02 - since last compaction: Rewrote entry logic to Bollinger squeeze. Backtested v02 — Sharpe 1.8, max DD -6.2%. - open threads: - Consider adding volume filter
The active algo
A global marker file at ~/.local/share/finny/active-algo tracks which workspace is currently selected. Resolution chain:
- Explicit marker (set by
/algo use). - Otherwise, walk up from the current working directory looking for a
mission.md. - If neither resolves, no algo is active and most tools refuse to run.