De bladen zijn voorlopig in het Engels en het Spaans: hier lees je de Engelse tekst.
- Code:
projects/henhouse/src/brokers.ts(reading the broker's file),src/hens.ts(each hen's size and the eggs),src/view.ts(the drawing and its words),src/mine.ts(the person's portfolio) andpackages/horalis-core/src/portfolio.ts(what a portfolio is and how a file comes in). - Data: none of Horalis's. The portfolio is the person's: they type it or read it from their broker on their device, and it is kept only in a workspace they started. The example on the web is made-up round figures, with generic names and no real companies.
- Tests:
projects/henhouse/test/brokers.test.ts,hens.test.ts,site.test.tsandpackages/horalis-core/test/portfolio.test.ts.
Question it answers
"What is my portfolio like, and what does it give me?": each investment is a hen, bigger when it is worth more; those that pay dividends lay eggs. Beside them, in words: how many hens, what they are worth and pay a year, and each one's name and figures.
Formula in plain words
- A hen's value: the value now if the person types it; if not, what was paid for what they still hold.
- Size: the hen's area follows her value, not her height: her width is the square root of her value over the biggest one's. So an investment worth four times another looks four times bigger, not sixteen. None goes below a third of the biggest one's width, so it shows on a phone; its exact figure is written beside it.
- Eggs: each egg stands for a round amount (1, 2 or 5 times a power of ten) a year, the smallest with which the hen that pays most lays 12 eggs or fewer. Each hen lays her dividends over that amount, rounded, and at least one egg if she pays anything.
Reading the broker's file
Everything is read in the browser; the file does not leave the device.
- What was paid (average cost): each buy adds its shares and what it cost, fees included, in the account's currency. Each sale takes away its share of the cost: selling a quarter of the shares takes away a quarter of what was paid. What was sold entirely does not show.
- Dividends: those received in the 12 months ending on the file's last day, after withholding. If the file covers less than a year, the page warns that some may be missing.
- Trading 212 (History → Export): the rows of buys ("Market buy", "Limit buy"…), sales and dividends ("Dividend (…)"), by their ISIN, or their ticker when there is none. What was paid is the "Total" column, in the account's currency. If the columns of shares or of the total are missing (a trimmed file), the page says so and reads nothing.
- DEGIRO: the Transactions file gives what is held (quantity and "Totaal"/"Total", fees included); the Account statement, the dividends and their withholding (the rows whose description says "divid…": "Dividend", "Dividendbelasting", "Dividende"…). Both can be chosen at once. Numbers with a decimal comma are read as such.
- Horalis's template, for any other broker: name, paid, value now, dividends a year and currency, with the columns in any of the five languages.
- Importing again a file replaces the investments with the same ISIN or name, but keeps the value now the person typed.
Assumptions
- No live prices. Horalis looks up no prices: the value is what was paid and the page says so ("paid value, not the value now") until the person types the value now. Live prices will come with the Antenna: the person's device will query a licensed source, never a Horalis server.
- One currency per portfolio. Without exchange rates, a file in another currency than the portfolio's is not added; dividends in another currency are counted and asked for by hand.
Limits
- Splits, mergers, free shares and transfers between brokers are not read: they are corrected by hand.
- DEGIRO books dividends in the currency they are paid in: those not in the portfolio's currency are left out.
- Brokers' formats change without notice. Trading 212's was checked against its real header (23 October 2026); DEGIRO's, against its documented format, without a real file.
Tests that check it
brokers.test.ts: quotes, separators and decimal comma; Trading 212 (average cost after a sale, what was sold entirely left out, dividends of the last 12 months, the old "Total (EUR)" export and the trimmed file); DEGIRO in Dutch and English (newest first) and its account statement; the template in the five languages. hens.test.ts: area, smallest size, what was paid and eggs. portfolio.test.ts: what is kept, the encrypted copy, importing again and currencies.
Debatable
- Showing what was paid as size rewards what cost most, not what is worth most today; so it is said beside it and the value now can be typed.
- Average cost is one way of counting; each country's way for tax may be another.
Version of 23 October 2026.