Russian consumer price inflation and cost of living trend 2022 to 2026

Model: DeepSeek V4.1 Flash Checked on:

Russian consumer price inflation & cost of living, 2022–2026

Data note: Detailed monthly Russian CPI micro-data in the OECD price database stops in March 2022 (collection halted after the invasion of Ukraine)12. Eurostat does not publish Russian HICP — its ENP-East CPI table lists a RU code but contains no Russian observations (only Armenia, Azerbaijan, Belarus, Georgia, Moldova, Ukraine)34. The continuous 2022–2026 picture therefore comes from the OECD Economic Outlook (No. 119) database, which carries a Russian CPI index5.

Headline inflation (annual average, % change)

Year YoY inflation Status
2022 +13.8 % actual
2023 +5.9 % actual
2024 +8.5 % actual
2025 +8.7 % estimate
2026 +6.5 % projection
2027 +4.6 % projection

Source: OECD Economic Outlook 119 CPI index, converted to growth rates678. The vintage check confirms the framing: EO 117 (May-2025) carried 2025–2026 as projections, while the latest EO 119 has extended the horizon to 2027, making 2025 a near-final estimate and 2026–2027 projections910.

Cost-of-living index (2021 = 100)

2021 2022 2023 2024 2025 2026* 2027*
100.0 113.8 120.5 130.6 142.0 151.2 158.2

This implies the general price level rose by about +51 % between 2021 and 2026 (and ~+58 % by 2027)7.

The trend in words

A two-panel chart (monthly + annual inflation, and the cost-of-living index, with the projection window shaded) was generated in 7.

Caveat: the 2026 figure the user asked about is a forecast, not an observed outcome; actual 2026 data are not yet available in these databases, and Russian data coverage in OECD/Eurostat products has been limited since 2022.

  1. Dataset filters for DSD_PRICES@DF_PRICES_ALL

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    EXPENDITURE_T

    Program output

    (1522, 10)
    ['REF_AREA', 'FREQ', 'METHODOLOGY', 'MEASURE', 'UNIT_MEASURE', 'EXPENDITURE', 'ADJUSTMENT', 'TRANSFORMATION', 'TIME_PERIOD', 'value']
       REF_AREA FREQ METHODOLOGY MEASURE UNIT_MEASURE EXPENDITURE ADJUSTMENT TRANSFORMATION TIME_PERIOD      value
    0       RUS    M           N     CPI           PA          _T          N             GY     1993-01   850.4569
    1       RUS    M           N     CPI           PA          _T          N             GY     1993-02   758.8549
    2       RUS    M           N     CPI           PA          _T          N             GY     1993-03   694.0606
    3       RUS    M           N     CPI           PA          _T          N             GY     1993-04   674.4864
    4       RUS    M           N     CPI           PA          _T          N             GY     1993-05   717.3981
    5       RUS    M           N     CPI           PA          _T          N             GY     1993-06   722.8885
    6       RUS    M           N     CPI           PA          _T          N             GY     1993-07   810.6832
    7       RUS    M           N     CPI           PA          _T          N             GY     1993-08   956.5938
    8       RUS    M           N     CPI           PA          _T          N             GY     1993-09  1065.5700
    9       RUS    M           N     CPI           PA          _T          N             GY     1993-10  1033.3250
    10      RUS    M           N     CPI           PA          _T          N             GY     1993-11   946.1458
    11      RUS    M           N     CPI           PA          _T          N             GY     1993-12   840.0271
    12      RUS    M           N     CPI           PA          _T          N             GY     1994-01   780.9952
    13      RUS    M           N     CPI           PA          _T          N             GY     1994-02   682.9341
    14      RUS    M           N     CPI           PA          _T          N             GY     1994-03   600.2078
    15      RUS    M           N     CPI           PA          _T          N             GY     1994-04   539.9793
    16      RUS    M           N     CPI           PA          _T          N             GY     1994-05   479.3412
    17      RUS    M           N     CPI           PA          _T          N             GY     1994-06   412.1782
    18      RUS    M           N     CPI           PA          _T          N             GY     1994-07   340.7494
    19      RUS    M           N     CPI           PA          _T          N             GY     1994-08   265.9619
    ---- unique values per column ----
    REF_AREA 1 <ArrowStringArray>
    ['RUS']
    Length: 1, dtype: str
    FREQ 3 <ArrowStringArray>
    ['M', 'Q', 'A']
    Length: 3, dtype: str
    METHODOLOGY 1 <ArrowStringArray>
    ['N']
    Length: 1, dtype: str
    MEASURE 1 <ArrowStringArray>
    ['CPI']
    Length: 1, dtype: str
    UNIT_MEASURE 3 <ArrowStringArray>
    ['PA', 'PC', 'IX']
    Length: 3, dtype: str
    EXPENDITURE 1 <ArrowStringArray>
    ['_T']
    Length: 1, dtype: str
    ADJUSTMENT 1 <ArrowStringArray>
    ['N']
    Length: 1, dtype: str
    TRANSFORMATION 3 <ArrowStringArray>
    ['GY', 'G1', '_Z']
    Length: 3, dtype: str
    TIME_PERIOD 514 <ArrowStringArray>
    ['1993-01', '1993-02', '1993-03', '1993-04', '1993-05', '1993-06', '1993-07',
     '1993-08', '1993-09', '1993-10', '1993-11', '1993-12', '1994-01', '1994-02',
     '1994-03', '1994-04', '1994-05', '1994-06', '1994-07', '1994-08']
    Length: 20, dtype: str
    value 1346 [ 850.4569  758.8549  694.0606  674.4864  717.3981  722.8885  810.6832
      956.5938 1065.57   1033.325   946.1458  840.0271  780.9952  682.9341
      600.2078  539.9793  479.3412  412.1782  340.7494  265.9619]
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE)
    print(df.shape)
    print(df.columns.tolist())
    print(df.head(20).to_string())
    print("---- unique values per column ----")
    for c in df.columns:
        u = df[c].unique()
        print(c, len(u), u[:20])
    
  2. Dataset filters for DSD_PRICES@DF_PRICES_ALL

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    EXPENDITURE_T

    Program output

    combos of FREQ, UNIT_MEASURE, TRANSFORMATION, ADJUSTMENT:
    FREQ  UNIT_MEASURE  TRANSFORMATION  ADJUSTMENT
    A     IX            _Z              N              30
          PA            GY              N              29
          PC            G1              N              29
    M     IX            _Z              N             363
          PA            GY              N             351
          PC            G1              N             362
    Q     IX            _Z              N             121
          PA            GY              N             117
          PC            G1              N             120
    dtype: int64
    
    A IX _Z N -> 1992 to 2021 n= 30
    A PA GY N -> 1993 to 2021 n= 29
    A PC G1 N -> 1993 to 2021 n= 29
    M IX _Z N -> 1992-01 to 2022-03 n= 363
    M PA GY N -> 1993-01 to 2022-03 n= 351
    M PC G1 N -> 1992-02 to 2022-03 n= 362
    Q IX _Z N -> 1992-Q1 to 2022-Q1 n= 121
    Q PA GY N -> 1993-Q1 to 2022-Q1 n= 117
    Q PC G1 N -> 1992-Q2 to 2022-Q1 n= 120
    
         REF_AREA FREQ METHODOLOGY MEASURE UNIT_MEASURE EXPENDITURE ADJUSTMENT TRANSFORMATION TIME_PERIOD     value
    1046      RUS    M           N     CPI           IX          _T          N             _Z     2019-10  119.4803
    1047      RUS    M           N     CPI           IX          _T          N             _Z     2019-11  119.8148
    1048      RUS    M           N     CPI           IX          _T          N             _Z     2019-12  120.2462
    1049      RUS    M           N     CPI           IX          _T          N             _Z     2020-01  120.7271
    1050      RUS    M           N     CPI           IX          _T          N             _Z     2020-02  121.1255
    1051      RUS    M           N     CPI           IX          _T          N             _Z     2020-03  121.7917
    1052      RUS    M           N     CPI           IX          _T          N             _Z     2020-04  122.8026
    1053      RUS    M           N     CPI           IX          _T          N             _Z     2020-05  123.1342
    1054      RUS    M           N     CPI           IX          _T          N             _Z     2020-06  123.4051
    1055      RUS    M           N     CPI           IX          _T          N             _Z     2020-07  123.8370
    1056      RUS    M           N     CPI           IX          _T          N             _Z     2020-08  123.7875
    1057      RUS    M           N     CPI           IX          _T          N             _Z     2020-09  123.7008
    1058      RUS    M           N     CPI           IX          _T          N             _Z     2020-10  124.2327
    1059      RUS    M           N     CPI           IX          _T          N             _Z     2020-11  125.1148
    1060      RUS    M           N     CPI           IX          _T          N             _Z     2020-12  126.1532
    1061      RUS    M           N     CPI           IX          _T          N             _Z     2021-01  126.9984
    1062      RUS    M           N     CPI           IX          _T          N             _Z     2021-02  127.9890
    1063      RUS    M           N     CPI           IX          _T          N             _Z     2021-03  128.8338
    1064      RUS    M           N     CPI           IX          _T          N             _Z     2021-04  129.5810
    1065      RUS    M           N     CPI           IX          _T          N             _Z     2021-05  130.5399
    1066      RUS    M           N     CPI           IX          _T          N             _Z     2021-06  131.4406
    1067      RUS    M           N     CPI           IX          _T          N             _Z     2021-07  131.8481
    1068      RUS    M           N     CPI           IX          _T          N             _Z     2021-08  132.0722
    1069      RUS    M           N     CPI           IX          _T          N             _Z     2021-09  132.8647
    1070      RUS    M           N     CPI           IX          _T          N             _Z     2021-10  134.3395
    1071      RUS    M           N     CPI           IX          _T          N             _Z     2021-11  135.6291
    1072      RUS    M           N     CPI           IX          _T          N             _Z     2021-12  136.7413
    1073      RUS    M           N     CPI           IX          _T          N             _Z     2022-01  138.0950
    1074      RUS    M           N     CPI           IX          _T          N             _Z     2022-02  139.7107
    1075      RUS    M           N     CPI           IX          _T          N             _Z     2022-03  150.3470
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE)
    print("combos of FREQ, UNIT_MEASURE, TRANSFORMATION, ADJUSTMENT:")
    print(df.groupby(['FREQ','UNIT_MEASURE','TRANSFORMATION','ADJUSTMENT']).size())
    print()
    # last time period per combo
    for (f,u,t,a), g in df.groupby(['FREQ','UNIT_MEASURE','TRANSFORMATION','ADJUSTMENT']):
        print(f, u, t, a, "->", g['TIME_PERIOD'].min(), "to", g['TIME_PERIOD'].max(), "n=",len(g))
    print()
    print(df[df['FREQ']=='M'].tail(30).to_string())
    
  3. Dataset: DSD_EO@DF_EO

    Dataset filters for DSD_EO@DF_EO

    FilterValue(s)
    REF_AREARUS
    MEASURECPI

    Program output

    (33, 5)
       REF_AREA MEASURE FREQ  TIME_PERIOD     value
    0       RUS     CPI    A         1995  0.031732
    1       RUS     CPI    A         1996  0.046908
    2       RUS     CPI    A         1997  0.053932
    3       RUS     CPI    A         1998  0.068857
    4       RUS     CPI    A         1999  0.127681
    5       RUS     CPI    A         2000  0.154396
    6       RUS     CPI    A         2001  0.187508
    7       RUS     CPI    A         2002  0.216982
    8       RUS     CPI    A         2003  0.246833
    9       RUS     CPI    A         2004  0.273674
    10      RUS     CPI    A         2005  0.308290
    11      RUS     CPI    A         2006  0.338141
    12      RUS     CPI    A         2007  0.368619
    13      RUS     CPI    A         2008  0.420544
    14      RUS     CPI    A         2009  0.469585
    15      RUS     CPI    A         2010  0.501819
    16      RUS     CPI    A         2011  0.544212
    17      RUS     CPI    A         2012  0.571679
    18      RUS     CPI    A         2013  0.610310
    19      RUS     CPI    A         2014  0.658096
    20      RUS     CPI    A         2015  0.760191
    21      RUS     CPI    A         2016  0.813997
    22      RUS     CPI    A         2017  0.843723
    23      RUS     CPI    A         2018  0.867929
    24      RUS     CPI    A         2019  0.906685
    25      RUS     CPI    A         2020  0.937288
    26      RUS     CPI    A         2021  1.000000
    27      RUS     CPI    A         2022  1.137589
    28      RUS     CPI    A         2023  1.204565
    29      RUS     CPI    A         2024  1.306409
    30      RUS     CPI    A         2025  1.419917
    31      RUS     CPI    A         2026  1.511783
    32      RUS     CPI    A         2027  1.581504
    
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE)
    print(df.shape)
    df = df.sort_values('TIME_PERIOD')
    print(df.to_string())
    print()
    # Also check what PRI / deflator looks like
    
  4. Images

    russia_inflation.svg

    Dataset filters for DSD_PRICES@DF_PRICES_ALL

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    TRANSFORMATIONGY
    UNIT_MEASUREPA
    FREQM
    EXPENDITURE_T, CP01, CP04, CP07
    sinceTimePeriod2019

    Dataset filters for DSD_EO@DF_EO

    FilterValue(s)
    REF_AREARUS
    MEASURECPI

    Program output

    monthly rows: (153, 10) freqs: <ArrowStringArray>
    ['M']
    Length: 1, dtype: str exp: <ArrowStringArray>
    ['CP07', 'CP04', 'CP01', '_T']
    Length: 4, dtype: str
    
    Monthly YoY CPI inflation (%), Russia (last 20 months available):
                  CP01  CP04   CP07     _T
    TIME_PERIOD                           
    2020-08-01    4.80  3.15   2.77   3.57
    2020-09-01    4.85  3.29   3.10   3.67
    2020-10-01    5.39  3.43   3.53   3.98
    2020-11-01    6.55  3.59   4.05   4.42
    2020-12-01    7.68  3.74   4.52   4.91
    2021-01-01    8.03  3.63   5.07   5.19
    2021-02-01    8.86  3.81   5.77   5.67
    2021-03-01    8.63  3.98   6.86   5.78
    2021-04-01    7.38  4.25   7.40   5.52
    2021-05-01    8.35  4.84   7.51   6.01
    2021-06-01    8.96  5.64   8.06   6.51
    2021-07-01    8.37  6.55   8.59   6.47
    2021-08-01    8.72  6.52   9.26   6.69
    2021-09-01   10.60  6.36   9.60   7.41
    2021-10-01   12.61  6.37  10.17   8.14
    2021-11-01   12.43  6.42  10.75   8.40
    2021-12-01   12.15  6.32  11.35   8.39
    2022-01-01   12.68  6.34  11.69   8.74
    2022-02-01   13.02  6.97  11.33   9.16
    2022-03-01     NaN   NaN    NaN  16.70
    
    Annual CPI index (2021=1) and YoY inflation, Russia:
     TIME_PERIOD  value  inflation
            2015  0.760     15.514
            2016  0.814      7.078
            2017  0.844      3.652
            2018  0.868      2.869
            2019  0.907      4.465
            2020  0.937      3.375
            2021  1.000      6.691
            2022  1.138     13.759
            2023  1.205      5.888
            2024  1.306      8.455
            2025  1.420      8.689
            2026  1.512      6.470
            2027  1.582      4.612
    
    saved chart
    

    Code

    
    import pandas as pd, numpy as np
    import matplotlib
    matplotlib.use("Agg")
    import matplotlib.pyplot as plt
    
    # ---- Monthly YoY inflation (dataset 10, COICOP1999) ----
    m = pd.read_csv(DATASET_FILE0)
    print("monthly rows:", m.shape, "freqs:", m['FREQ'].unique(), "exp:", m['EXPENDITURE'].unique())
    m['TIME_PERIOD'] = pd.to_datetime(m['TIME_PERIOD'], format='%Y-%m')
    piv = m.pivot_table(index='TIME_PERIOD', columns='EXPENDITURE', values='value')
    piv.columns = [{'\_T':'_T'}.get(c,c) for c in piv.columns]
    print("\nMonthly YoY CPI inflation (%), Russia (last 20 months available):")
    print(piv.tail(20).round(2).to_string())
    
    # ---- Annual CPI index (dataset 31, Economic Outlook) ----
    a = pd.read_csv(DATASET_FILE1).sort_values('TIME_PERIOD')
    a['TIME_PERIOD'] = a['TIME_PERIOD'].astype(int)
    a['inflation'] = a['value'].pct_change()*100
    print("\nAnnual CPI index (2021=1) and YoY inflation, Russia:")
    print(a[a['TIME_PERIOD']>=2015][['TIME_PERIOD','value','inflation']].round(3).to_string(index=False))
    
    # ---- chart ----
    fig, ax1 = plt.subplots(figsize=(9,5))
    ax1.plot(a['TIME_PERIOD'], a['value'], color='tab:red', marker='o', lw=2, label='CPI index (2021=100)')
    ax1.set_xlabel('Year'); ax1.set_ylabel('CPI index (2021=100)', color='tab:red')
    ax1.tick_params(axis='y', labelcolor='tab:red')
    ax1.set_xlim(2019, 2027)
    ax2 = ax1.twinx()
    ax2.bar(a['TIME_PERIOD'], a['inflation'], color='tab:blue', alpha=0.4, width=0.5, label='YoY inflation (%)')
    ax2.set_ylabel('YoY inflation (%)', color='tab:blue')
    ax2.tick_params(axis='y', labelcolor='tab:blue')
    ax2.axvline(2025.5, color='grey', ls='--', lw=1)
    ax2.text(2025.6, ax2.get_ylim()[1]*0.9, 'projection ->', color='grey', fontsize=9)
    plt.title('Russia: consumer price inflation & cost-of-living index (2019-2027)')
    fig.tight_layout()
    fig.savefig('russia_inflation.svg')
    print("\nsaved chart")
    
  5. Dataset: enpe_cpi

    Dataset filters for enpe_cpi

    FilterValue(s)
    geoRU

    Program output

    (0, 5)
    ['freq', 'unit', 'geo', 'time', 'value']
    Empty DataFrame
    Columns: [freq, unit, geo, time, value]
    Index: []
    
    freq []
    unit []
    geo []
    time []
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE)
    print(df.shape)
    print(df.columns.tolist())
    print(df.head(30).to_string())
    print()
    for c in df.columns:
        if c not in ('TIME_PERIOD','value'):
            print(c, df[c].unique()[:30])
    
  6. Dataset: enpe_cpi

    Program output

    (221, 5)
    ['freq', 'unit', 'geo', 'time', 'value']
    geo
    GE    40
    MD    40
    AM    40
    AZ    40
    BY    32
    UA    29
    unit
    RCH_A_AVG    116
    INX_A_AVG    105
       freq       unit geo  time  value
    0     A  INX_A_AVG  GE  2009   81.4
    1     A  INX_A_AVG  GE  2019  116.5
    2     A  INX_A_AVG  MD  2013   86.8
    3     A  INX_A_AVG  AM  2010   80.1
    4     A  INX_A_AVG  AZ  2014   96.1
    5     A  INX_A_AVG  UA  2021  175.3
    6     A  RCH_A_AVG  AM  2016   -1.4
    7     A  RCH_A_AVG  AZ  2006    8.3
    8     A  RCH_A_AVG  AZ  2018    2.3
    9     A  RCH_A_AVG  BY  2007    8.4
    10    A  RCH_A_AVG  GE  2020    5.2
    11    A  INX_A_AVG  BY  2005   15.9
    12    A  INX_A_AVG  GE  2024  155.7
    13    A  RCH_A_AVG  AZ  2013    2.4
    14    A  INX_A_AVG  UA  2015  100.0
    15    A  INX_A_AVG  AZ  2011   91.6
    16    A  INX_A_AVG  AM  2019  103.5
    17    A  INX_A_AVG  BY  2016  111.8
    18    A  INX_A_AVG  MD  2012   83.0
    19    A  INX_A_AVG  MD  2024  204.1
    20    A  INX_A_AVG  AM  2011   86.3
    21    A  INX_A_AVG  AM  2015  100.0
    22    A  RCH_A_AVG  AM  2008    9.0
    23    A  RCH_A_AVG  AM  2020    1.2
    24    A  RCH_A_AVG  AM  2009    3.4
    25    A  RCH_A_AVG  AM  2023    2.0
    26    A  RCH_A_AVG  GE  2015    4.0
    27    A  RCH_A_AVG  BY  2017    6.0
    28    A  RCH_A_AVG  MD  2011    7.6
    29    A  INX_A_AVG  AZ  2015  100.0
    30    A  RCH_A_AVG  MD  2022   28.7
    31    A  RCH_A_AVG  MD  2019    4.8
    32    A  RCH_A_AVG  BY  2011   53.2
    33    A  RCH_A_AVG  MD  2023   13.4
    34    A  RCH_A_AVG  UA  2006    9.1
    35    A  INX_A_AVG  AZ  2012   92.6
    36    A  RCH_A_AVG  MD  2005   11.9
    37    A  RCH_A_AVG  UA  2017   14.4
    38    A  RCH_A_AVG  UA  2009   15.9
    39    A  RCH_A_AVG  BY  2008   14.8
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE)
    print(df.shape)
    print(df.columns.tolist())
    print(df['geo'].value_counts().to_string())
    print(df['unit'].value_counts().to_string())
    print(df.head(40).to_string())
    
  7. Dataset filters for DSD_EO_114@DF_EO_114

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    FREQA

    Program output

    EO114 (dataset 32) Russia CPI index & YoY inflation:
     TIME_PERIOD  value   infl
            2019  0.907  4.470
            2020  0.937  3.382
            2021  1.000  6.694
            2022  1.137 13.736
            2023  1.203  5.804
            2024  1.290  7.161
            2025  1.358  5.272
    last year: 2025
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE).sort_values('TIME_PERIOD')
    df['TIME_PERIOD']=df['TIME_PERIOD'].astype(int)
    df['infl']=df['value'].pct_change()*100
    print("EO114 (dataset 32) Russia CPI index & YoY inflation:")
    print(df[df['TIME_PERIOD']>=2019][['TIME_PERIOD','value','infl']].round(3).to_string(index=False))
    print("last year:", df['TIME_PERIOD'].max())
    
  8. OECD dataset: Economic Outlook 119
  9. Dataset filters for DSD_EO_117@DF_EO_117

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    FREQA

    Program output

    EO117 (dataset 35) Russia CPI index & YoY inflation:
     TIME_PERIOD  value   infl
            2019  0.907  4.465
            2020  0.937  3.375
            2021  1.000  6.691
            2022  1.138 13.759
            2023  1.205  5.888
            2024  1.306  8.455
            2025  1.433  9.727
            2026  1.521  6.090
    last year: 2026
    

    Code

    
    import pandas as pd
    df = pd.read_csv(DATASET_FILE).sort_values('TIME_PERIOD')
    df['TIME_PERIOD']=df['TIME_PERIOD'].astype(int)
    df['infl']=df['value'].pct_change()*100
    print("EO117 (dataset 35) Russia CPI index & YoY inflation:")
    print(df[df['TIME_PERIOD']>=2019][['TIME_PERIOD','value','infl']].round(3).to_string(index=False))
    print("last year:", df['TIME_PERIOD'].max())
    
  10. Images

    russia_inflation.svg

    Dataset filters for DSD_PRICES@DF_PRICES_ALL

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    TRANSFORMATIONGY
    UNIT_MEASUREPA
    FREQM
    EXPENDITURE_T
    sinceTimePeriod2018

    Dataset filters for DSD_EO@DF_EO

    FilterValue(s)
    REF_AREARUS
    MEASURECPI
    FREQA

    Program output

    saved
     TIME_PERIOD  value   infl
            2018  0.868  2.869
            2019  0.907  4.465
            2020  0.937  3.375
            2021  1.000  6.691
            2022  1.138 13.759
            2023  1.205  5.888
            2024  1.306  8.455
            2025  1.420  8.689
            2026  1.512  6.470
            2027  1.582  4.612
    Cumulative price level 2026 vs 2021: 51.2 %
    Cumulative price level 2025 vs 2021: 42.0 %
    

    Code

    
    import pandas as pd, numpy as np
    import matplotlib
    matplotlib.use("Agg")
    import matplotlib.pyplot as plt
    
    m = pd.read_csv(DATASET_FILE0)
    m['date'] = pd.to_datetime(m['TIME_PERIOD'], format='%Y-%m')
    m = m.sort_values('date')
    a = pd.read_csv(DATASET_FILE1).sort_values('TIME_PERIOD')
    a['TIME_PERIOD'] = a['TIME_PERIOD'].astype(int)
    a['infl'] = a['value'].pct_change()*100
    a = a[a['TIME_PERIOD']>=2018]
    
    fig, (ax1, ax2) = plt.subplots(2,1, figsize=(9.5,8), sharex=False)
    
    # Panel 1: YoY inflation
    ax1.plot(m['date'], m['value'], color='tab:blue', lw=1.6, label='Monthly YoY CPI inflation (OECD/COICOP, to Mar-2022)')
    ax1.plot(pd.to_datetime(a['TIME_PERIOD'].astype(str)+'-07-01'), a['infl'], color='tab:red', marker='o', lw=2, label='Annual avg. YoY inflation (OECD Econ. Outlook 119)')
    ax1.axvspan(pd.Timestamp('2025-07-01'), pd.Timestamp('2027-12-31'), color='grey', alpha=0.12)
    ax1.text(pd.Timestamp('2025-08-01'), 15, 'projections', color='grey', fontsize=9)
    ax1.axvline(pd.Timestamp('2022-02-15'), color='k', ls=':', lw=1)
    ax1.text(pd.Timestamp('2022-03-01'), 15.5, 'Feb 2022', fontsize=8)
    ax1.set_ylabel('YoY inflation (%)')
    ax1.set_title('Russia: consumer price inflation (2018–2027)')
    ax1.legend(fontsize=8, loc='upper left')
    ax1.grid(alpha=0.3)
    
    # Panel 2: cost-of-living index
    ax2.plot(a['TIME_PERIOD'], a['value']*100, color='tab:red', marker='o', lw=2)
    ax2.axvspan(2025.5, 2027, color='grey', alpha=0.12)
    ax2.set_ylabel('CPI index (2021 = 100)')
    ax2.set_xlabel('Year')
    ax2.set_title('Russia: cost-of-living index (annual average)')
    ax2.grid(alpha=0.3)
    for _,r in a[a['TIME_PERIOD']>=2022].iterrows():
        ax2.annotate(f"{r['value']*100:.1f}", (r['TIME_PERIOD'], r['value']*100), textcoords="offset points", xytext=(0,7), ha='center', fontsize=8)
    
    fig.tight_layout()
    fig.savefig('russia_inflation.svg')
    print("saved")
    
    # summary numbers
    print(a[['TIME_PERIOD','value','infl']].round(3).to_string(index=False))
    print("Cumulative price level 2026 vs 2021:", round(a[a.TIME_PERIOD==2026]['value'].iloc[0]*100-100,1), "%")
    print("Cumulative price level 2025 vs 2021:", round(a[a.TIME_PERIOD==2025]['value'].iloc[0]*100-100,1), "%")
    
  11. OECD dataset: Consumer price indices (CPIs, HICPs), COICOP 1999