N.K.

← Projects

Projects · Software

Catallax

Catallax is a self-hosted financial terminal I built between June and October 2026 to follow my own money and the markets around it. It runs in Docker on my hardware at home. On one screen, I can bring my holdings and Beancount ledger together with net worth, macro and rates data, equity research, a quant lab and a paper-trading desk.

synthetic portfolio · best on desktop

Home screen, synthetic portfolio.

The home screen tracks my net worth over time, separating invested assets from portfolio cash and bank cash. Alongside major indices, it shows a market-regime score and its history, combining trend and breadth with volatility, credit, the yield curve and momentum.

Why I built it

I wanted to start with my portfolio and understand how it fits into the markets around it. Budgeting apps know my accounts but little about markets, while market terminals have the opposite problem. I wanted to see what I hold, how concentrated it is and what a bad week like 2008 or 2020 would do to it, alongside the rates and macro picture. I also wanted to keep it my own. The data stays on my hardware, the app speaks only to my home network, and nothing in it can place a real order.

A tour

Portfolio

I can see each holding and its value in euros, with allocation by asset class showing how the portfolio is divided. The accounts tree reads from my Beancount ledger, where I can follow income and expenses alongside my assets.

Portfolio view, synthetic portfolio.

Risk

I measure concentration through the largest positions’ share and the effective number of positions, alongside one-day value at risk and expected shortfall. Stress tests replay the 2008 financial crisis, 2020 COVID crash, 2022 crypto winter and 2022 rates shock on my current portfolio. I can also see how much of the euro return came from currency moves.

Risk view, synthetic portfolio.

Equity research

For each company, I can read public-source income-statement fundamentals alongside valuation multiples and accounting scores, including the Piotroski F-score, Altman Z-score and Beneish M-score. A price chart adds moving averages and the relative strength index. The screen also includes a stock screener.

Equity research view, public market data in the demo snapshot.

Signals

I grade signals once their forward return window has settled, using the rank information coefficient for each date and its t-statistic, alongside mean forward returns by quintile. These measure whether signals predicted returns. Both sample signals in the demo score negative, and the page leaves those synthetic results visible.

Signals view, demo snapshot.

Backtester

I can test a signal-driven strategy over a chosen period, setting rebalancing frequency, quantile and trading costs, with an optional benchmark. The backtester reports return and volatility, Sharpe and information ratios, drawdown and turnover. It also plots the equity curve against the benchmark and shows drawdown.

Backtester view, demo snapshot.

Paper desk

I decided early that a bug in a personal project shouldn't be able to move real money. The desk therefore trades paper money only, with an order ticket and positions book. I left out broker credentials and wallet signing, and there's no routing of orders to a real broker.

Paper desk view, synthetic portfolio.

How it's put together

Catallax uses a FastAPI backend and a React and TypeScript frontend, with Postgres and Redis, all running in Docker. Market data passes through one adapter interface, so adding a source takes one class and one registry line. Redis caches quotes for different lifetimes by asset class. The backend never reads my portfolio directly. Only one bridge class talks to my portfolio tracker, and that separation later made the public copy possible. A separate worker builds a weekly PDF report, while research notes pass through a privacy scan that redacts amounts and account details before export.

Python · FastAPI · PostgreSQL · Redis · React · TypeScript · Docker

How I built it

Catallax has one author, but Claude Code agents did most of the implementation. I decided what to build and in which order, then wrote down how each part should behave in phased plans with acceptance criteria before code was written. The agents implemented those plans, while separate review agents checked the results against them and read the diffs for security problems. Between June and October 2026, the project reached 389 commits. The backend has over 1,000 tests.

How I work with Claude Code →

Public copy and demo

I made the public copy by exporting an allowlist of files from one recorded commit, removing personal data, private infrastructure and AI features. A synthetic persona replaces my portfolio. The demo runs this copy read-only, with writes switched off. Its figures illustrate how the software works and aren't investment results or advice. It's best viewed on a desktop.