https://github.com/baqqer/NordFolio
OBS: Projektet er vibecoded
NordFolio er et lokalt afviklet porteføljeværktøj til Nordnet-eksportfiler. Det er designet til uafhængig, personlig performance-måling, helt fri for mærkelige cloud-integrationer, eksterne tracking-scripts og datadeling.
Et fjollet værktøj med et fjollet navn. Du behøver det ikke, men det var sjovt at lave. Det er født ud af en personlig frustration over Nordnets manglende evne til at vise en samlet, procentmæssig aktivfordeling mellem enkeltaktier og ETF’er på tværs af flere forskellige depoter. For at det ikke bare blev til en enkelt side med en import-knap og et cirkeldiagram, smækkede jeg lidt flere features på. Derfor rekonstruere NordFolio din NordNet historik, beregner din reelle gennemsnitlige anskaffelsesværdi (AVCO) og visualiserer dine investering. Alt sammen helt lokalt.
Jeg erkende blankt at jeg ikke er noget matematisk geni, så om graferne reelt repræsenterer virkeligheden står dig fuldstændig selv for at kontrollere :-)
Før du griner af mig… GIF’en viser sample data..!
Teknologistak
I tråd med principperne om lynhurtig kørsel og maksimal holdbarhed er NordFolio bygget helt uden de helt store abstraktioner:
- Backend: Skrevet i Go og anvender udelukkende standardbiblioteket.
net/httpencoding/json
- Frontend: En ren Single Page Application (SPA) i Vanilla HTML5, CSS3 og JavaScript.
- Ingen Node.js, ingen build-trin, ingen bundlers (Webpack/Vite) og nul eksterne framework-dependencies.
- Interaktive grafer og visualiseringer leveres af Chart.js hentet direkte via et CDN.
- Database: En enkelt bærbar fil gemt lokalt på din egen maskine. Dine finansielle data forlader aldrig din maskine.
Nøglefunktioner
- CSV-import: Understøtter Nordnets danskesprogede transaktionseksport.
- Encoding-detektion: Detekterer om eksportfilen er gemt i UTF-8 eller WINDOWS-1252.
- Dublet-beskyttelse: Bruger Nordnets unikke transaktions-ID’er til at springe allerede importerede linjer over
- Performance-måling:
- Porteføljeværdi (DKK): Genskaber en historisk tidslinje over din porteføljeværdi fordelt på aktier/fonde, ETF’er og kontanter overlejret med din reelle investerede kapital.
- Tidsvægtet afkast (TWR %): Beregner dit reelle afkast over tid ved at fjerne effekten af dine løbende ind- og udbetalinger (den institutionelle standard), overlejret med MSCI World som benchmark (8% p.a.).
- Drawdown-analyse (%): Viser dit maksimale historiske værditab (peak-to-trough), så du får en visualisering af din risikoprofil og volatilitet.
- Månedsoversigt: Genererer et farvekodet månedligt afkastsdiagram baseret på din NordNet-historik.
- Frankfurter API til FX-kurser:
- Valutakurser hentes automatisk i baggrunden via Frankfurter API (kan slås fra).
- Aktiv- og Depotstyring:
- Navngiv dine depoter og tildel dine aktiver beskrivende navne.
Projektets Struktur
NordFolio følger en flad, modulær og overskuelig struktur, som gør det utroligt nemt at forstå og videreudvikle på systemet:
NordFolio/
├── main.go # Initiering og opstart af Go-serveren
├── db.json # Lokal JSON-database (genereres automatisk ved første kørsel)
├── internal/
│ ├── parser.go # Parsing af Nordnets eksportfiler
│ ├── analyzer.go # Beregning af saldi, AVCO-omkostninger og TWR
│ ├── handlers.go # HTTP API-endpoints mv.
│ ├── storage.go # JSON-læsning og -skrivning til db.json
│ └── models.go # Datastrukturer til transaktioner, aktiver og depoter
├── docker/
│ └── Dockerfile # Dockerfile
└── static/
├── index.html # Det primære dashboard
├── style.css # Minimalistisk, semantisk layout
└── app.js # client-side integration med Chart.js og API-kommunikation
Hvorfor Go Standardbiblioteket?
Ligesom med Ugeplanen beviser NordFolio, hvor langt man kan nå ved udelukkende at bygge oven på Go’s standardbibliotek. Uden komplekse tredjeparts-frameworks forbliver koden mere eller mindre immun over for dependency rot. Værktøjet er rimelig ressourceeffektivt, starter på under et millisekund og kører ufortrødent uden behov for konstante opdateringer eller sikkerhedspatches af eksterne pakker. Det skaber et uafhængigt, privat og, hvis jeg selv skal sige det, et pænt investeringsoverblik, som du har fuldstændig kontrol over.