Joining official publications by date produces 250 common observations. The mean signed difference is -0.931 basis points, whereas the mean absolute difference is 16.815 basis points. Positive and negative differences largely cancel in the signed mean.
The signed median is -1.047 bps; the absolute median is 12.083 bps. The minimum signed difference is -66.406 bps on 11 April 2025. The maximum signed and absolute difference is 72.769 bps on 8 April 2025. NBP is higher on 122 dates and lower on 128; there are no equal observations.
Method
NBP table A quotes PLN per USD. ECB quotes PLN per EUR and USD per EUR; dividing these gives PLN per USD. We calculate 10000 * (NBP_USDPLN * ECB_USDperEUR / ECB_PLNperEUR - 1). Positive means NBP is higher. The unit is a basis point of relative difference, not a pip or a spread. We use only shared publication dates, without filling missing dates. All 250 results and monthly aggregates were independently checked using rational arithmetic.
NBP has 251 publication dates and ECB 255. NBP-only: 18 April. ECB-only: 6 January, 19 June, 15 August, 11 November and 24 December. These observed calendar differences make joining by row number unsafe.
Interpretation and limits
NBP's table-A publication window is 11:45–12:15. ECB introduced publication around 16:00 CET in July 2016. These schedules are not precise timestamps for every observation. We do not impose a fixed UTC offset throughout the year; the European calendar includes daylight saving. Nor do we attribute each difference solely to elapsed time: methodology and rounding may also differ.
These are reference rates, not executable bid/ask offers. The differences establish neither arbitrage opportunities nor broker trading costs. For data users, the useful finding is that source selection and calendar alignment matter, and a signed average does not describe the typical magnitude of disagreement.
Provenance
Snapshots were downloaded on 7 October 2026. URLs and SHA-256 hashes are in source and SHA manifest. The public study-A CSV contains monthly aggregates only. NBP raw data and the daily join remain private. Code retrieves official data for local analysis and rejects changes to pinned hashes. Sources: NBP and ECB statistics; derived results are our calculations, not bank-published statistics. See the reproduction package for access and reuse limits.
Open the full chart ↗
Results table
| Month | Common dates | Signed mean (bp) | Mean absolute difference (bp) |
|---|---|---|---|
| 2025-01 | 21 | -4.836 | 20.695 |
| 2025-02 | 20 | 4.019 | 21.589 |
| 2025-03 | 21 | 0.138 | 21.363 |
| 2025-04 | 20 | 0.116 | 25.123 |
| 2025-05 | 21 | -4.235 | 16.812 |
| 2025-06 | 20 | -2.437 | 14.519 |
| 2025-07 | 23 | -8.152 | 16.273 |
| 2025-08 | 20 | 6.657 | 16.993 |
| 2025-09 | 22 | -2.630 | 9.659 |
| 2025-10 | 23 | -7.649 | 13.985 |
| 2025-11 | 19 | 6.331 | 14.800 |
| 2025-12 | 20 | 4.431 | 10.668 |
Reproduce the calculations
- Monthly aggregates (CSV)
- Code, ECB snapshots and instructions (ZIP)
- Full results (JSON)
- Sources, retrieval times and SHA
The NBP/ECB package uses only the Python standard library. It fetches NBP originals locally from the official API; no NBP raw database is included. Pinned SHA checks stop the calculation if inputs change.
Source data: ECB statistics; study A also uses NBP. Calculations, classifications and charts are ours. The underlying ECB information is freely available; no ECB endorsement is implied. Source-use conditions are included in the code packages. AI tools assisted calculations and publication; code and data checks are not an independent expert review.