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.
翻訳待ち
The S&P 500 scored across seven categories of public data, with the confidence interval next to every backtested figure. Self-hosted, zero-cost, and not financial advice.
翻訳待ち
金融Python · TypeScriptGitHub @MarlenMMオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
Equity research and portfolio-construction engine: 8-source ingest into a 23-table schema, 7-category composite scoring, walk-forward backtesting with bootstrap confidence intervals, and three portfolio optimisers (MPT / HRP / Black-Litterman).
翻訳待ち
Loading the full README. The saved excerpt is shown below.
A self-hosted, $0-cost stock research & portfolio-management engine. Statistics and ML do the ranking/forecasting; a free-tier LLM only narrates results that already exist.
Live demo: — the research front end, no sign-up and no keys, and it holds its shape on a phone. Its Portfolio page keeps your holdings in your own browser — nothing is sent anywhere; the full Portfolio Manager, with the optimisers, rebalancing and history, is the Streamlit app.Read the full README ↗A self-hosted, $0 equity-research and portfolio-construction engine for the S&P 500. Statistics and ML do the ranking, forecasting and risk work; a free-tier LLM only narrates results that already exist. Backtests report their uncertainty, forecasts are graded against a random walk before they are shown, and every gap in the free data is labelled rather than hidden.
./run.sh. One command, no API key, no account. HOW_TO_USE.md is a plain-English guide to both front ends and to which numbers on screen are solid and which are thin.Screenshots use synthetic data run through the real scoring, forecasting and backtest pipeline; docs/screenshots/README.md explains how, and why never against real API data.
| Automated tests | 2,100+ (unit, integration, and property-based via Hypothesis), plus two Playwright suites: one against a stubbed API, one against the real pre-rendered site |
| Core engine code | 21,000+ lines (src/quantpulse/) — ingestion, analysis, storage, API |
| Free data sources integrated | 8 feed each refresh — Yahoo Finance, Finnhub, FRED, SEC EDGAR (filings + 13F), GDELT, Reddit, financial news RSS, Wikipedia — plus a 9th (a historical S&P 500 constituents dataset) used only for the one-time cold-start backfill |
| Database | 26 tables, 19 Alembic migrations, every one reversible (alembic downgrade round-trips clean) |
| Composite scoring | 7 categories (fundamentals, technicals, analyst consensus, news sentiment, momentum, industry/macro, smart money) × 6 investor-profile presets — four differ by category weights alone, and two (income, conservative) genuinely re-score a category, so each refresh stores their rankings separately |
| Chart pattern families detected | 4 — head-and-shoulders, double top/bottom, triangles/wedges/channels, cup-and-handle — detected across the whole universe on every refresh and shown per stock with a confidence score |
| Forecasting approaches | 4 — random-walk baseline, ARIMA/SARIMA, gradient-boosted ML, and a Monte Carlo fan chart. The first three are graded out-of-sample against the naive baseline; Monte Carlo deliberately is not, because it simulates the same random walk the baseline evaluates in closed form (grading it would be grading the baseline against itself) |
| Backtest confidence | Sharpe & CAGR reported with moving-block bootstrap confidence intervals, never a bare point estimate |
| Portfolio optimization methods | 3 — mean-variance (MPT), Hierarchical Risk Parity, and Black-Litterman driven by the app's own composite scores, each with a concrete buy/sell trade list |
| Front ends | 2 — a 7-page Streamlit app (full app, incl. Portfolio Manager and the LLM narration layer) and a 6-page React + TypeScript SPA over a 15-endpoint read-only FastAPI. The two share every number: both read the same storage.persistence functions, the React screener's client-side re-weighting was checked against Streamlit's across all 503 names, and the numbers a stock shows on both (beta, Sharpe, Sortino, forecast prices, Kelly size) are asserted equal by test. The SPA omits the LLM narration and the Portfolio Manager's optimisers, rebalancing and history; its Portfolio page (FIFO lots, P/L, per-holding suggestions, concentration, risk) runs in the browser and is pinned to the engine's own results by a golden-file test in both languages |
This is the beginning of the README. Read the rest at the original. Read the full README ↗
| Glossary terms | 74, across 8 categories — one definition shared by every tooltip and both front ends |
| Required budget | $0 — every data source, model, and hosting option used is free-tier or open-source |