Proof of concept

kFolio

An investment portfolio management system: trades, holdings, prices, dividends, performance and forecasts in one place, across several portfolios and several account types at once. A testbed too — an opportunity to push the Kore platform onto ground it had not seen: long time series, multiple currencies, and numbers that have to add up.

Built on KoreSelf-hostableYour data stays with you

The problem we were looking at

As soon as holdings sit across more than one account, "where do I stand" stops having a simple answer.

  • Each broker shows you its own, and none of them knows what the others hold.
  • The spreadsheet that pulls it together is current the day you fill it in, and wrong the week after.
  • A line bought in dollars, sold in two goes, with a withheld dividend in between: the real gain takes a calculation nobody redoes.
  • The tools that can do all of this live in somebody else’s cloud, holding a full inventory of what you own.

What kFolio does today

Everything below runs, and was checked against a fully synthetic demonstration dataset: fifteen invented securities, three portfolios, two years of daily history, three currencies. No real issuer, no real price, no real holdings.

The portfolio on one screen

The dashboard gathers what you look at first: number of lines, market value, gain, year-to-date return. Below it, ten panels refreshed independently — concentration of the largest holdings, exposure by currency, a timeline of recent trades, alerts by state, top gainers and top losers, and a performance overview across three horizons.

Several portfolios, several account types

A portfolio carries a strategy, an account carries a wrapper: the French PEA, PEA-PME, taxable brokerage, life insurance, PER, and plain cash accounts. The two attach freely, so a conservative sleeve and a satellite sleeve can share one account, or one strategy can span two brokers.

Trades, and what they produce

Thirteen security operation types and eleven cash movement types — buy, sell, subscription, redemption, deposit, withdrawal, fees, tax, interest, transfer, dividend. Holdings are never typed in: they are recomputed from the trades and the prices, cost basis and unrealised gain included.

Multi-currency, all the way through

A line quoted in dollars or pounds inside a euro portfolio is converted at the trade-date rate for its cost basis, and at the current rate for its valuation. The rate applied stays visible on every trade — a correct total whose calculation cannot be retraced is not a correct total.

Performance, with the right formulas

Time-weighted return (TWR) and money-weighted return (MWR, via Newton-Raphson), volatility, Sharpe ratio, maximum drawdown, alpha and beta. All of it computed over a series of daily snapshots rebuilt by replaying the trade history, so it can be checked line by line.

Dividends, net of withholding

Every distribution carries the quantity held at the date, the gross amount, the withholding, the net, and the credit on the cash account. The upcoming ex-date calendar and the forward yield projection build on the same history.

Prices, and where they come from

Daily closes and, where the source allows, intraday candles from one minute to one hour. Sources are configurable and prioritised; the origin of each price is kept, which is what tells a demonstration price from a market price — and makes the demonstration dataset removable in one command.

A shared securities reference, qualified locally

Reference instruments — exchange, sector, ISIN, currency — are shared and read-only. Each organisation adds its own layer on top: alias, private note, tags, chosen sector. Nobody edits everyone’s record to rename a line at home.

A screener that computes server-side

RSI, MACD, Bollinger bands, ATR, stochastic, ADX, CCI, Williams %R, OBV, MFI, VWAP, Chaikin — indicators are computed over the price history, not imported ready-made. Screens can be saved and replayed.

Watchlists and alerts

A watchlist gathers what you follow without owning it. An alert fires when a threshold is crossed, up or down, or on a percentage move — with its priority, its channels, and the record of what triggered it.

Probabilistic forecasts, and their scoring

The engine projects a median bracketed by its 10% and 90% quantiles, over five horizons, with five interchangeable models — ensemble, GARCH, Theta, Holt-Winters, median. Replaying at past dates measures how well each one is calibrated: a forecast you cannot score is worth nothing.

One API, and a door for assistants

Some 280 GraphQL operations cover what the interface does, and then some. Three MCP tools and two assistant profiles let an agent read a portfolio or record a trade in it, with the organisation’s authentication and isolation intact.

On a phone, with nothing to install

Screens fold down to a narrow width and the application installs from the browser.

What kFolio cannot do

The list is long, which is normal for an exploration. It is kept up to date from the code audit rather than guessed.

  • kFolio provides no investment advice. It keeps records and computes indicators over your own data; it recommends no security, and a forecast here is a probability distribution, not a price target. The dashboard does surface mechanical observations — “diversify to reduce concentration”, “review losing positions” — but those are rules applied to your figures, not a personalised recommendation.
  • There is no automatic import from brokers: trades are typed in or imported from CSV.
  • There is no tax reporting — no gains computed under a tax method, no French flat tax, no 2074 form.
  • Export is CSV and JSON; there is no server-side PDF report and no Excel workbook.
  • Options, warrants and bond maths (accrued coupon, yield to maturity, duration) are not covered.
  • Crypto is tracked as a quoted line: no on-chain wallet, no staking or liquidity tracking.
  • Full net-worth tracking — property, liabilities, bank accounts — is not there: kFolio tracks securities.
  • Fundamentals cover US issuers only, the source being EDGAR.
  • There is no rebalancing suggestion and no pre-trade simulator.
  • There is no native mobile application; the installable app remains a web application.

What the exploration showed

kFolio was written first to see what the Kore platform became on a domain where detail matters: long time series, several currencies, and figures a user checks on a calculator.

The platform held

Users, roles and fine-grained permissions, isolation between organisations, translations, a single GraphQL API, an audit trail, centralised scheduling: kFolio inherits all of it instead of rewriting it. What was left was the domain — and that is where the time went.

See the Kore platform

What the domain demanded

A management screen tolerates a display approximation; a portfolio does not. Two totals diverging by 1.5% between two screens is a visible defect — and it is one that building the demonstration dataset surfaced and got fixed. An exploration that finds defects has already earned its keep.

Nothing goes to a third party

The application is hosted wherever you want, price-provider credentials stay in your configuration, and the inventory of what you hold lives in a database you own. Data providers are queried for prices, never told what you do with them.

Talk it over

Portfolio management, sovereignty over financial data, or more generally what can be built on the Kore platform: if any of those is on your mind, we are happy to talk.

Get in touch