Lowland Capital

AI Project

Modelportefeuille

Een papieren portefeuille van € 100.000 die door Claude wordt beheerd, met wekelijkse verantwoording per positie — inclusief de weken waarin de these breekt.

LLMMarketsAccountabilityPython

Wat het doet

Een fictieve portefeuille van € 100.000 waarin Claude de beslissingen neemt en ze wekelijks opschrijft. Er wordt niet echt gehandeld en het is geen beleggingsadvies; het doel is zichtbaar maken hoe een taalmodel tot beleggingsbeslissingen komt en of het zich aan zijn eigen redenering houdt zodra de koersen tegenvallen.

Het mandaat staat vast in de code: kwaliteit tegen een redelijke prijs met een expliciet defensieve buffer, verdeeld over vier bakjes — 50% kwaliteitskern, 15% AI- en energie-infrastructuur, 25% kort renteschrift, 10% goud. De aanleiding is de waardering van de markt: een index op ruim twintig keer de verwachte winst met een risicopremie van vrijwel nul, tegenover kortlopend eurokrediet dat 2,5 tot 3,3% doet. Je wordt dus nauwelijks betaald om aandelenrisico te nemen.

Elke positie draagt in de administratie twee verplichte velden mee: een these en een risico, beide in een paar zinnen. Dat is de toets die black-box-selectie uitsluit — wat niet in een paar zinnen uit te leggen is, komt er niet in.

De truc

Niet de selectie, maar de verantwoording. Dagelijks wordt de portefeuille geherwaardeerd op slotkoersen met ECB-referentiekoersen voor de euro-omrekening, en wekelijks verschijnt er een notitie die de stand tegen de benchmark zet en uitlegt wat er is gebeurd. Die notities zijn gedateerd en onveranderlijk: eenmaal ingelezen kan een eerdere tekst niet meer worden bijgewerkt. Daarmee ligt ook het ongemak vast.

Een voorbeeld. Novo Nordisk zat in de kern met de these “marges en een onderzoekspijplijn van wereldklasse tegen een waardering die bij een doorsnee farmaceut hoort”. Toen het bedrijf zelf een omzetgroei in lijn met de sectorgenoten in het vooruitzicht stelde, was die these weg — en werd de positie verkocht, ná een daling van ruim 15%. In de notitie staat zowel de verkoopreden als de zelfkritiek: twee weken op rij was hetzelfde risico opgeschreven zonder te handelen, en “een derde keer opschrijven is commentaar, geen beheer”.

Dezelfde openheid geldt voor het ongemakkelijke geval: er zit een positie in die eerder dit jaar 13% daalde doordat Anthropic een juridische Claude-plug-in uitbracht. Het model dat deze portefeuille beheert is Claude, heeft geen bijzonder inzicht in hoe ver zijn eigen soort die markt opeet, en is daar eerder te optimistisch dan te somber. Vandaar het kleinste gewicht — en een notitie die dat belangenconflict expliciet benoemt in plaats van het weg te laten.

Architectuur

Python met SQLite, een systemd-timer die ‘s avonds de waardering bijwerkt, en een dashboard met de stand, de bakjes en het logboek. Koersen komen van Yahoo en worden per dag gecachet, zodat historie stabiel blijft en een herberekening morgen niet stilletjes het verleden verandert.

Belangrijk voor de eerlijkheid van het trackrecord: de kosten die een Nederlandse particulier écht betaalt worden meegerekend — 0,10% courtage met een minimum van € 2 per order, 0,25% valuta-opslag bij aan- en verkoop in vreemde valuta, en dividend telt netto na 15% bronbelasting. Zonder die aftrek is een gepubliceerd rendement fictie. De benchmark is een wereldwijde indextracker in euro’s.

Transacties lopen via een orderbestand met harde grenzen: maximaal vijf orders per week, elke order verplicht een waarom, kopen kan alleen uit de beschikbare kas, en een nieuwe positie moet these en risico meebrengen. Wat niet door die controle komt wordt overgeslagen en gemeld in het draailog.

Use cases

  • Nagaan of een model zijn eigen redenering volhoudt, of achteraf herschrijft wat het eerder beweerde.
  • Zien wat kosten en bronbelasting met een rendement doen — het verschil tussen een backtest en een rekening.
  • Een portefeuille die uitlegbaar is per positie, als tegenhanger van modellen die alleen een uitkomst produceren.