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.
Swing trading journal for a single trader — manual entry, and arithmetic that refuses to guess. Next.js, React, Supabase.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
A day-trading journal for a single trader: intraday CME index futures on Topstep — NQ / MNQ and
ES / MES, with 6E / M6E in the catalog. No AI chat — a disciplined record of what was traded and
how well the process was followed, plus honest arithmetic over that record. A trade is logged right
after it closes (/trades/log) or imported from the TopstepX trades export or a broker CSV; the
one thing written from outside is MAE/MFE on a future, from the exchange's own candles
(§ MAE/MFE).Read the full README ↗A day-trading journal for a single trader: intraday CME futures — NQ / MNQ, ES / MES and gold GC / MGC, with 6E / M6E in the catalog. It knows no prop firm (phase X, 26.10.2026): the trader keeps each firm's rules on its own platform. No AI chat — a disciplined record of what was traded and how well the process was followed, plus honest arithmetic over that record. A trade comes in only through the import (phase O, 08.10.2026): the TopstepX trades and orders exports (or a broker CSV), then the details filled in from the session's recording; a setup not taken has its own small page. The one thing written from outside is MAE/MFE on a future, from the exchange's own candles (§ MAE/MFE).
It was built as a swing journal (FTMO CFDs on MT5, positions held for days), and the move to
day trading is under way. FTMO mode and the MT5 statement import went in H1 (28.09.2026: no
FTMO or CFD trade was in the book), with the per-position check-ins on /daily and the five swing
insights (thesis, time stop, weekend). H2 (29.09.2026) removed what they left in the database:
the check-in table, time_stop_days, swap (fills, instruments, net P&L), the percentage-of-equity
tracker limits and the weekly loss rule, the risk_pct choice, the backtest account kind with the
TradingView replay import, and the ftmo_* columns. The book is CME futures only. F5 (29.09.2026)
moved the analytics to the trading day: hold time in minutes, session windows, intraday insights,
time underwater, overlap in minutes, open risk against the DLL (gone in phase X), a day trader's mentor pack. F6
closed the move: the missed-setup price from R2, the vault-era insights retired, a plan stale after
its trading day, and the parity documents rewritten. The whole move, phase by phase with every
decision the trader took, is FAZA_F_DAYTRADING_PLAN.md.
Built to cover what TradeZella does in metrics, notes and reports, minus the parts that only make
sense for multi-user SaaS. Where it differs, the difference is written down and argued — here or in
ROADMAP.md.
On language, counted rather than claimed, because this is the first thing a reader can check.
Identifiers and code comments in src/ are English. This README and CODE_REVIEW.md are English;
ROADMAP.md, PARITY.md and docs/ are largely Serbian. Migrations keep their Serbian comments on
purpose — an applied migration is never edited here, and the comment inside one is part of the
record of the day it was written.
The interface is deliberately half-and-half, and the line is a clean one. At least 297 of the
3,371 human-readable string literals in src/ outside tests are Serbian, and every one of them sits
on a screen the trader writes into or reviews in their own words:
| Surface | Serbian strings |
|---|---|
Daily (the "Zatvaranje dana" card included; the state before the session, "sutra menjam" and the day's opportunities since phase G, with the messages of their schema daily-report-schema.ts) and tracker (the lock warning of review-gaps.ts too) | 83 |
| Mentor pack ("Export for Claude": the prompt, the legend and the day trader's sections) | 150 |
Day insight sentence (low_efficiency_day) | 1 |
A new playbook's template rules (playbook-types.ts; the trader's own words, most without a diacritic, so the count sees one) | 1 |
The seeded tag values the review and the import write (quick-log.ts: no mistake, exit reasons — the tags are Serbian since K2; "Ispoštovao rizik", which honest_tags in tracker/auto-rules.ts reads) | 7 |
The trade page /trades/[id] (phase P) — off the recording, setup, review, and why it asks for the original stop (trade-page.tsx, its route, stop-moved.ts) | 25 |
The journal's own mistakes on a trade, marked "auto" (auto-mistakes.ts, phase B4) | 6 |
Category names — the trader's own list and field names (Smer, Ocena setupa, Razlog izlaza, Greške, Tehnički tagovi, Psihologija, Emocije, Disciplina) as /reports groupings, journal-grid filters and bulk tags, and the mentor pack's category tables (phase J); the "Sa detetom" / "Bez deteta" groups of the state written on /daily (phase G); the test fixture of the same field definitions (field-defs.fixture.ts) | 14 |
Session names on the chart and in the pack (session-window.ts: Azija, Pre Londona, Ručak, Posle zatvaranja, Pre otvaranja) | 6 |
The NinjaTrader sync's answers to the PC script, which logs them in Serbian (api/import/ninjatrader/route.ts, ninjatrader-sync.ts, phase I3) | 4 |
Dashboard, /reports, journal grid, playbooks, /settings, /import — everything around those names | 0 |
Settings joined that last row on 20.09.2026. It had held the stage names of the daily checklist
(Priprema / Trgovanje / Osvrt, which the checklist itself rendered), a paragraph of Serbian
above the instrument catalog and two error messages from its server actions — a screen that measures,
reading half in one language and half in the other.
The half that measures is English; the half the trader writes into is Serbian. That is the trader's own language for their own prose, and it stays. A category is his own word too: he names his lists in Settings, so since phase J (15.10.2026) the built-in groupings carry the same Serbian names as his lists wherever they appear, and a report reads "By Ocena setupa" — the name is not lowercased, because it is a name.
This is the beginning of the README. Read the rest at the original. Read the full README ↗