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