The fanchart library provides functionality to create fan charts in Python.
The term fan chart was coined by the Bank of England in 1996. Since then, the BoE has used these charts to illustrate its forecasts for inflation.
The BoE introduced the fan charts aiming to communicate a more accurate representation of their forecast for medium term inflation. In particular, the charts have two key objectives:
- To convey the uncertainty in their forecasts. This is, to focus attention on the forecast distribution, rather than only on small changes to the central projection.
- To promote discussion of the risks to the economic outlook, and thus contribute to a wider debate about economic policy. Fan charts help to make it clear that monetary policy is about making decisions instead of knowing the exact rate of inflation in two years time.
For more details on the history of fan charts visit Fan Charts
Fanchart is available on pypi and can be installed as follows.
pip install fanchart
Fanchart relies heavily on
-
twopiece
for the implementation of the Two-Piece normal distribution -
matplotlib
for creating visualisations
Fanchart is tested on Python versions 3.8, 3.9, and 3.10
❗ 📝 Install the latest version of fanchart before starting.
This library provides two main functions fan
and fan_single
. In order to be able to make our first fan charts with
these functions, we need to load some data via the functions.
load_boe_history()
which loads the historical data for inflation (CPI)load_boe_parameters()
which loads the parameters for the quarterly projections
from fanchart import load_boe_history, load_boe_parameters
history = load_boe_history()
parameters = load_boe_parameters()
After this, we are ready to use our main functions.
- The
fan
function illustrates the distribution of all the forecasts available; and it has the option to display the historical values for reference.
from fanchart import fan
probs = [0.05, 0.20, 0.35, 0.65,0.80, 0.95]
fan(pars=parameters, probs=probs, historic=history[history.Date >= '2018'])
- The
fan_single
function illustrates the pdf/cdf of one forecast distribution
from fanchart import fan_single
probs = [0.05, 0.20, 0.35, 0.65,0.80, 0.95]
fan_single(loc=9.53, sigma=1.68, gamma=1.0, probs=probs, kind='pdf')
from fanchart import fan_single
probs = [0.05, 0.20, 0.35, 0.65,0.80, 0.95]
fan_single(loc=9.53, sigma=1.68, gamma=1.0, probs=probs, kind='cdf')
Connect with me via:
- 👾 Personal Website
⭐️ If you like this projet, please give it a star! ⭐️