Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
AI-powered trading journal and self-review dashboard for post-trade analysis, structured journaling, screenshot review, and long-term performance analytics.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
A post-trade reflection journal and analytics dashboard for SMC/ICT day traders — it reviews every chart, grades your process against your own rules, and learns your corrections. Not a signal app, not a bot, not financial advice.
Live demo: https://tradelenai.streamlit.app/ · runs in DEMO_MODE (cached AI, zero API spend).
Most journals store outcomes. TradeLens models the process behind them, with structure a generic journal can't express:Read the full README ↗A post-trade reflection journal and analytics dashboard for SMC/ICT day traders — it reviews every chart, grades your process against your own rules, and learns your corrections. Not a signal app, not a bot, not financial advice.
Live demo: https://tradelenai.streamlit.app/ · runs in DEMO_MODE (cached AI, zero API spend).
Most journals store outcomes. TradeLens models the process behind them, with structure a generic journal can't express:
flowchart LR
User([Trader]) --> UI["Streamlit UI<br/>pages + components"]
UI --> SVC["services/<br/>business logic"]
SVC --> AIC["ai_client.py<br/>single Anthropic wrapper"]
AIC -->|claude-opus-5| API[(Anthropic API)]
SVC --> DB[("SQLite<br/>SQLAlchemy + Alembic")]
SVC --> CHARTS["Plotly charts"]
CHARTS --> UI
Pages only render and call services; all business logic lives in services/, and all AI calls route through one audited ai_client.py (no page ever calls the API directly). Database access is SQLAlchemy 2.x over SQLite (Postgres-ready), with every schema change shipped as a reversible Alembic migration.
| Feature | What it does | Screenshot |
|---|---|---|
| New Trade | Log a trade with full SMC/ICT fields; killzone auto-fills from entry time | |
| Journal | Unified filterable table + inline trade detail with editable AI screenshot analysis | |
| AI Screenshot Analysis | Post-trade chart review from an uploaded image or a direct image URL; AI labels are editable before "Apply to Trade", and overrides are remembered | |
| Analytics | Tabs: Performance, Calendar, Weekly Review, Pattern Insights — equity curve, killzone edge, edge leak, consistency | |
| Pattern Insights | Deterministic, no-API-key insights that auto-load (best/worst killzone, costly mistakes, edge leak, HTF-bias alignment) with confidence labels | |
| Calendar | Real HTML month grid (teal/red tinted day cells) with a per-day trade drill-down | |
| Weekly Review | Deterministic weekly stats always shown; AI-written coach summary when a key is set | |
| Settings | CSV import/export, monthly AI cost dashboard |
git clone https://github.com/AyoubA05/tradelens-ai.git && cd tradelens-ai
pip install -r requirements.txt
python -m src.tradelens.db.init_db
alembic upgrade head # apply schema migrations to an existing DB
streamlit run src/tradelens/ui/app.py
The app is gated by a sign-in page. Configure it via Streamlit secrets / environment:
# .streamlit/secrets.toml (or .env)
TRADELENS_USERNAME = "demo" # secrets login (used until DB users exist)
TRADELENS_PASSWORD = "tradelens2025"
TRADELENS_INVITE_CODE = "your-code" # gates signup; omit to hide the signup form
demo / tradelens2025 while no accounts exist, so the public demo stays usable.TRADELENS_INVITE_CODE is set. Signup needs that invite code; passwords are bcrypt-hashed (never stored in plaintext). Username rules: 3–20 chars, letters/numbers/underscore.user_id; legacy trades (no owner) stay visible to everyone. See docs/secrets_setup.md.The New Trade form is organized into tabs (Timing → Market Context → Setup → Risk & Outcome → Psychology → Screenshot). Price levels default to empty and auto-calculate your planned/realized R; tick "Skip price levels" to enter P&L and R by hand. Double-submits and reruns are de-duplicated by a content fingerprint, and CSV import skips rows that already exist.
This app uses Anthropic. Add the key named ANTHROPIC_API_KEY:
ANTHROPIC_API_KEY = "your-key-here".streamlit/secrets.toml or .env, then restart.Settings → AI Status shows whether the key is detected, with step-by-step instructions. Prefer to explore first? Set DEMO_MODE=true and the whole app runs on cached AI output at zero API cost (see Demo Mode).
This is the beginning of the README. Read the rest at the original. Read the full README ↗