# Mörkgröna fonder hos Swedbank

En liten statisk webapp som listar SFDR **artikel 9**-fonder ("mörkgröna") och
etiska fonder som går att köpa via Swedbank, rangordnade efter historisk
avkastning. Varje datapunkt har en klickbar källa.

> **Live:** <https://gitjoda71.github.io/swedbank-morkgrona-fonder/>
>
> **Källkod:** <https://github.com/gitjoda71/swedbank-morkgrona-fonder>

## Vad sidan gör

- Visar fonder i tre sektioner: **Aktiefonder**, **Räntefonder**, **Kort historik (<5 år)**
- Filter: fondtyp, fondbolag, max avgift, max risk, min 5y-avkastning, SFDR-konfidens
- Sortering: bäst avkastning (5y → 3y → 1y), lägst avgift, lägst risk, namn
- Per fond: avkastning 1y/3y/5y, avgift, risk, ISIN, "mörkgrön/etisk för att…",
  länkar till fondbolag och Swedbank, samt **källa per kritisk datapunkt** som chips
- Sektion **"Vad fonderna finansierar"**: konkreta bolag och organisationer som
  fonderna äger aktier/obligationer i, eller donerar till via Humanfonden — med
  klickbar länk till organisationens egen hemsida (helst en projektspecifik
  undersida med `orgLinkLabel` + `projectPeriod`) och källa hos fondbolaget.
  Datafil: [`data/projects.json`](data/projects.json).
- **Mini-projektlista i varje fondkort**: visar (max 3) bolag/mottagare som just
  den fonden finansierar. Klick scrollar smooth till motsvarande rad i tabellen
  och pulsar raden i ~2 s med accent-färg. Keyboard-accessible (Tab + Enter,
  riktiga `<a href="#project-id">`-länkar). Respekterar `prefers-reduced-motion`.
- Disclaimer: historisk avkastning är ingen garanti för framtida avkastning

## Datakällor och urval

Urvalskriterier:

1. **Mörkgrön = SFDR artikel 9** enligt fondbolagets egen klassificering. Fonder vars
   SFDR-status inte kan citeras direkt från fondbolagets sida markeras som
   `candidate` istället för `confirmed`.
2. **Etisk** definieras operativt som: tydlig hållbarhetsmål + exklusionspolicy
   ELLER tematisk inriktning på FN:s globala mål / klimat / sociala frågor.
3. **Köpbar via Swedbank** — verifieras genom att fonden finns på
   `swedbankrobur.fondlista.se` (Robur är Swedbank-ägt) eller `spara.swedbank.se`.

Datakällor (i prioritetsordning):

1. <https://swedbankrobur.fondlista.se/> — Robur-fondernas officiella sidor
2. <https://www.swedbank.se/privat/spara-och-placera/fonder/hallbarhet-i-fonder.html>
3. <https://www.swedbankrobur.se/> — fondbolagets information
4. KID/PRIIPS-faktablad direkt från Swedbank
5. Cision-pressreleaser för fondbolagets eget besked

Allt är hämtat manuellt via WebFetch/WebSearch 2026-05-05. Dataset:
[`data/funds.json`](data/funds.json). Research-anteckningar:
[`research/notes.md`](research/notes.md).

## Viktigt om avkastningssiffrorna

**Avkastningstalen 1y/3y/5y är kumulativa**, inte annualiserade — det är så Swedbank
Roburs fondlista presenterar dem. En fond med 5y kumulativt 77 % har ungefär 12 %
per år, inte 77 % per år. Sidan visar siffrorna som de står på källan.

## Datamodell

Se [`data/funds.json`](data/funds.json). Minsta uppsättning fält per fond:

| Fält | Typ | Anteckning |
|---|---|---|
| `name` | string | Officiellt fondnamn |
| `isin` | string | Internationellt ID |
| `company` | string | Fondbolag |
| `type` | enum | `Aktiefond` / `Räntefond` / `Blandfond` |
| `sfdrArticle` | 8 \| 9 \| null | EU SFDR |
| `sfdrConfidence` | `confirmed` \| `candidate` | Confirmed = direkt citat finns |
| `sfdrQuote` | string | Citerad mening från fondbolagets källa |
| `darkGreenReason` | string | Varför fonden är mörkgrön |
| `ethicalReason` | string | Varför fonden är etisk |
| `return5y/3y/1y` | number\|null | % |
| `returnBasis` | `cumulative` \| `annualized` | Beräkningsmetod |
| `returnAsOf` | YYYY-MM-DD | Värderingsdatum |
| `fee` | number | Total årlig avgift % |
| `feeManagement` | number | Förvaltningsavgift % |
| `risk` | 1–7 | SRI/SRRI |
| `links.swedbank` | URL | Länk till fonden i Swedbank-systemet |
| `links.company` | URL | Fondbolagets sida |
| `links.kid` | URL\|null | Faktablad |
| `sources.{sfdr,returns,fee,risk,swedbankAvailability}` | URL | Källa per datapunkt |
| `fetchedAt` | YYYY-MM-DD | När datan hämtades |
| `notes` | string\|null | Osäkerhet, varningar |

## Köra lokalt

Webappen är ren HTML/CSS/JS — inga build-steps. Men på grund av `fetch()` mot
`data/funds.json` måste du servera filerna via en lokal http-server (du kan
inte öppna `index.html` direkt via `file://`).

```bash
# I projektroten
cd "c:\0-dropbox\Dropbox\1oels dokument\Antigravity\Swedbank fonder"
python -m http.server 8000
# eller, om du har Node:
npx --yes http-server -p 8000
```

Öppna sedan <http://localhost:8000> i webbläsare.

## Lägga till eller uppdatera en fond

1. Öppna [`data/funds.json`](data/funds.json)
2. Lägg till ett objekt under `funds` enligt schemat ovan
3. **Varje siffra ska ha en klickbar källa** i `sources.*`
4. Uppdatera `meta.lastUpdated` till dagens datum
5. Commit och pusha — GitHub Pages bygger om automatiskt

Om en fond saknar 5y-historik visas den under sektionen "Kort historik".

## Begränsningar

- spara.swedbank.se är JS-renderad — köpbarhet verifieras därför oftast via Roburs
  fondlista istället. Det fungerar bra för Robur-fonder men inte lika smidigt för
  fonder från andra fondbolag.
- Endast Robur-fonder finns i nuvarande dataset. Externa fondbolag med art.9 i
  Swedbanks utbud (t.ex. Storebrand Global Solutions) bör utvärderas i framtida
  uppdateringar.
- Avkastningssiffror är ofta kumulativa, inte annualiserade — direkta jämförelser
  mellan fonder med olika startdatum är därför inte rättvisa. Sektionen
  "Kort historik" finns för att visa nyare fonder separat.

## Disclaimer

Sidan är ett research-verktyg, inte rådgivning. Historisk avkastning är ingen
garanti för framtida avkastning. Verifiera alltid aktuella siffror och SFDR-status
hos fondbolaget innan du investerar.

## Roadmap

Se [`roadmap.md`](roadmap.md) för faser, risker och Definition of Done.

## Licens / källkod

Källkod på GitHub: <https://github.com/gitjoda71/swedbank-morkgrona-fonder>
