Skip to main content

Building Fondinsyn: Exploring Swedish Fund Holdings by Quarter

Engineering notes on ingesting Finansinspektionen's quarterly holdings data, tracing its provenance, and comparing reported positions without mistaking snapshots for trades.

Problem and scope

Finansinspektionen (FI) publishes fund-holdings data as quarterly snapshots. Fondinsyn makes those reported positions easier to inspect while keeping the time boundary clear: these are historical, quarter-end holdings, not live market data. The project is for data exploration and engineering, not for trading claims or investment advice.

Data pipeline and model

The ingestion pipeline works with FI’s published ZIP/XML files, parses the source records, and transforms them into a PostgreSQL model organized around reporting quarters. Retaining the quarter as part of the data model makes it possible to query and compare snapshots without implying continuous coverage between reporting periods.

Provenance and auditability

The /datastatus interface shows ingestion state, source filenames, publication metadata, and audit timestamps. These details help distinguish the source’s publication time from when data was retrieved or processed.

Missing timestamps are handled explicitly: when a source does not provide a timestamp, the interface says it is unrecorded rather than silently filling in a guessed value. FI source-file links provide a direct route back to the published material.

Quarter-over-quarter comparison

The /compare view compares two reported quarters using changes in market value (SEK) and portfolio weight. Position status badges identify Ny, Ökad, Minskad, and Avslutad positions.

These labels describe differences between snapshots, not confirmed purchases or sales. A changed value or weight can result from market movement, rebalancing, reporting changes, or other causes; the snapshots alone do not establish which explanation applies.

Application architecture

The application uses FastAPI for its Python web layer, PostgreSQL for quarterly holdings, and Jinja2 templates rendered on the server. HTMX adds targeted interactive updates without requiring a separate client-side application. Docker provides a repeatable containerized runtime.

Security and history sanitization

Database configuration is isolated through the DATABASE_URL environment variable. Credentials were rotated, and repository history was rewritten with git-filter-repo to remove previously committed sensitive material before publishing the rewritten history with an explicit --force-with-lease push. Retained examples use REDACTED in place of secrets. The repository was also organized into app/, templates/, static/, and docs/.

Regulatory context and disclaimer

FFFS 2013:9 and Lag (2013:561) are provided as regulatory context only. Fondinsyn is independent and is not affiliated with or endorsed by FI.

The service presents historical quarterly holdings only; it does not provide live or real-time pricing. Its purpose is educational and analytical. Nothing in Fondinsyn is investment advice or a recommendation to transact.

Next steps

The ingestion status, source traceability, quarterly comparison, and server-rendered application described above are current project capabilities. Potential roadmap work includes richer data-quality reporting and additional historical comparison views. These are ideas for future development, not features claimed as implemented here.


Explore the project: Fondinsyn — Quarterly Swedish Fund-Holdings Explorer