4. 通货膨胀的历史#

本讲将透过一些历史数据探讨价格指数的波动模式及其背后的故事。

首先,我们需要安装一些必要的Python包。

注意:我们安装xlrd是因为pandas在读取Excel文件时需要它。

!pip install xlrd

Hide code cell output

Collecting xlrd
  Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB)
Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB)
Installing collected packages: xlrd
Successfully installed xlrd-2.0.2

Hide code cell content

from importlib.metadata import version
from packaging.version import Version

if Version(version("pandas")) < Version('2.1.4'):
    !pip install "pandas>=2.1.4"

我们现在导入本讲所需的Python库。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

import matplotlib as mpl
FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
mpl.font_manager.fontManager.addfont(FONTPATH)
plt.rcParams['font.family'] = ['Source Han Serif SC']

价格水平的增长率在媒体和央行及财政官员的口中被称为通货膨胀

价格水平衡量的是一篮子消费品在国内货币单位中的价值。

例如,在美国,\(t\)时期的价格水平表示购买一单位标准消费品篮子所需的美元数量(以\(t\)月或\(t\)年计)。

在20世纪之前,许多西方经济体的价格水平虽然存在短期波动,但长期来看并没有明显的上升或下降趋势。

一个世纪开始时的价格水平通常与该世纪结束时的水平相差不大。

然而,20世纪的情况发生了显著变化,这一点我们将在本讲中详细探讨。

这种变化的一个普遍接受的解释是,20世纪初期各国逐渐放弃了以黄金和白银作为货币基础的金本位和银本位制度。

Tip

本讲为后续几讲做好了铺垫,这些后续几讲中我们将用宏观经济学家的角度来思考决定价格水平的因素,即货币主义价格水平理论自适应预期下的货币主义价格水平理论

4.1. 四个世纪的价格水平#

我们首先展示最初出现在 [Sargent and Velde, 2002] 第35页的数据,其中包含了自1600年到1914年四个“硬通货”国家的价格水平。

  • 法国

  • 西班牙(卡斯蒂利亚)

  • 英国

  • 美国

在当前语境中,“硬通货”一词意味着这些国家采用了商品货币标准:货币由金银币组成,这些金银币的流通价值主要由它们的金银含量决定。

Note

在金本位或银本位制下,一些货币还包括”仓单”,即代表对金币或银币索赔权的纸质凭证。政府或私人银行发行的钞票可以被视为这种”仓单”的例子。

我们将数据从托管在 GitHub 上的电子表格导入pandas。

# 导入数据并清理索引
data_url = "https://github.com/QuantEcon/data-lectures/raw/main/lectures/longprices.xls"
df_fig5 = pd.read_excel(data_url,
                        sheet_name='all',
                        header=2,
                        index_col=0).iloc[1:]
df_fig5.index = df_fig5.index.astype(int)

我们首先绘制1600年至1914年间的价格水平。

在这段时间的大多数年份内,这些国家采用金本位或银本位。

df_fig5_befe1914 = df_fig5[df_fig5.index <= 1914]

# 创建图表
cols = ['UK', 'US', 'France', 'Castile']

fig, ax = plt.subplots(figsize=(10,6))

cols_cn = ['英国', '美国', '法国', '卡斯蒂利亚(西班牙)']

for col, col_cn in zip(cols, cols_cn):
    ax.plot(df_fig5_befe1914.index,
            df_fig5_befe1914[col], label=col_cn, lw=2)

ax.legend()
ax.set_ylabel('指数 1913 = 100')
ax.set_xlabel('年份')
ax.set_xlim(xmin=1600)
plt.tight_layout()
plt.show()
findfont: Failed to find font weight normal, now using 600.
_images/3ee89ddf702131773bac61f87feab07415a1486fb6dfdb3a3ae85f047ee72824.png

Fig. 4.1 长期价格水平时间序列#

我们说“大多数年份”是因为金本位或银本位制度曾经有过暂时的中断。

通过仔细观察 Fig. 4.1,你可能能猜到这些中断发生的时间,因为这些时期的价格水平出现了显著的暂时性上涨:

  • 1791-1797年的法国(法国大革命)

  • 1776-1790年的美国(从大英帝国独立的战争)

  • 1861-1865年的美国(南北战争)

在这些事件期间,当政府为了支付战争支出而印制纸币时,金银本位被暂时放弃。

Note

法国大革命期间的通货膨胀 讲述了在法国大革命期间发生的大通胀的历史。

尽管出现了这些暂时的中断,图中一个显著的特点是三个世纪以来价格水平大致保持恒定。

在这个世纪初期,这些数据的另外两个特点引起了耶鲁大学的欧文·费雪(Irving Fisher)和剑桥大学的约翰·梅纳德·凯恩斯(John Maynard Keynes)的关注。

  • 尽管长期锚定在相同的平均水平上,年度价格水平的波动还是很大

  • 虽然使用有价值的黄金和白银作为货币成功地通过限制货币供给稳定了价格水平,但这需要消耗现实的资源。

  • 一个国家使用金银币作为货币支付了高昂的“机会成本”——那些金银本可以制成有价值的珠宝和其他耐用品。

凯恩斯和费雪提出了他们认为可以更有效地实现价格水平稳定的方式,这种方式:

  • 至少能像金银本位下一样稳固地锚定价格水平,

  • 也能减少年度短期波动。

他们说,中央银行可以通过以下方式实现价格水平的稳定

  • 发行有限供应的纸币

  • 拒绝印制钞票为政府支出提供资金

这种逻辑促使约翰·梅纳德·凯恩斯称商品本位制为 “野蛮的遗物”。

纸币或 “法定货币 ”体系使货币脱离其背后支持它的所有储备。

但是,坚持金本位制或银本位制提供了一种自动限制货币供应量的机制,从而锚定了价格水平。

为了锚定价格水平,纯粹的纸币或法定货币体系用中央银行取代了这一自动机制,中央银行拥有限制货币供应的权力和决心(并能阻止造假者!)。

现在,让我们通过展示原载于[Sargent and Velde, 2002]第35页的完整图表,来看看1914年之后,当四个国家相继脱离金/银本位制时,它们的物价水平发生了什么变化。

Fig. 4.2 展示了自1600年到2000年间四个“硬通货”国家价格水平的对数。

Note

虽然我们在之前止于1914年的图表中不需要使用对数,但我们现在选择使用对数,因为我们希望将1914年之后的观测值与之前的观测值放在同一张图中。

1914年第一次世界大战爆发后,这四个国家脱离了金本位制,从而获得了印制货币来资助政府支出的能力。

fig, ax = plt.subplots(dpi=200)

for col in cols:
    ax.plot(df_fig5.index, df_fig5[col], lw=2)
    ax.text(x=df_fig5.index[-1]+2,
            y=df_fig5[col].iloc[-1], s=col)

ax.set_yscale('log')
ax.set_ylabel('价格水平对数(指数1913=100)')
ax.set_ylim([10, 1e6])
ax.set_xlabel('年份')
ax.set_xlim(xmin=1600)
plt.tight_layout()
plt.show()
findfont: Failed to find font weight normal, now using 600.
_images/9528d10c766c35859237f22871c2f1c5ca2067aeae564e05aaafec6fc5938e55.png

Fig. 4.2 长期价格水平时间序列(对数)#

Fig. 4.2显示,印制纸币的中央银行在锚定价格水平方面的表现不如金本位和银本位。

这可能会让凯恩斯和费雪感到惊讶或失望。

事实上,早在凯恩斯和费雪在20世纪初倡导法定货币制度之前,早期的经济学家和政治家们就知道法定货币制度的可能性。

商品货币体系的支持者不相信政府和中央银行能够妥善管理法定货币体系。

他们愿意支付与建立和维护商品货币体系相关的资源成本。

鉴于许多国家在20世纪放弃商品货币后经历了持续的高通胀,我们也可以理解为什么金本位制或银本位制的倡导者倾向于维持1914年前的金/银本位制。

二十世纪在纸币法定本位制下经历的通货膨胀的广度和长度在历史上都是前所未有的。

4.2. 四次大通胀#

在 1918 年 11 月结束的第一次世界大战之后,货币和财政当局艰难地在尝试不实行金本位或银本位的情况下实现价格水平的稳定。

我们展示了[Sargent, 2013]第3章 “四次大通胀的结局” 中的四幅图。

这些图表描述了第一次世界大战后初期四个国家价格水平的对数:

  • 图 3.1:1921-1924 年奥地利的零售价格(第 42 页)

  • 图 3.2:1921-1924 年匈牙利的批发价格(第 43 页)

  • 图 3.3:批发价格,波兰,1921-1924 年(第 44 页)

  • 图 3.4:批发价格,德国,1919-1924 年(第 45 页)

我们在四幅图中的每一幅都加上了相对美元汇率的对数,均出自[Sargent, 2013]第3章。

图表的基础数据载于[Sargent, 2013]第3章附录中的表格。 我们将所有这些数据转录到电子表格 chapter_3.xlsx 中,并将其读入 pandas。

在下面的代码单元中,我们将清理数据并构建一个 pandas.dataframe

Hide code cell source

def process_entry(entry):
    "清理数据帧的每个条目"

    if type(entry) == str:
        # 删除前导和尾部空白
        entry = entry.strip()
        # 删除逗号
        entry = entry.replace(',', '')

        # 删除 HTML 标记
        item_to_remove = ['<s>a</s>', '<s>c</s>',
                          '<s>d</s>', '<s>e</s>']

        # <s>b</s> 代表十亿
        if '<s>b</s>' in entry:
            entry = entry.replace('<s>b</s>', '')
            entry = float(entry) * 1e9
        else:
            for item in item_to_remove:
                if item in entry:
                    entry = entry.replace(item, '')
    return entry

def process_df(df):
    "清理和重新组织整个数据集。"

    # 删除列名中的 HTML 标记
    for item in ['<s>a</s>', '<s>c</s>', '<s>d</s>', '<s>e</s>']:
        df.columns = df.columns.str.replace(item, '')

    # 将年份转换为整数
    df['Year'] = df['Year'].apply(lambda x: int(x))

    # 将索引设置为包含年月的日期时间
    df = df.set_index(
            pd.to_datetime(
                (df['Year'].astype(str) + \
                 df['Month'].astype(str)),
                format='%Y%B'))
    df = df.drop(['Year', 'Month'], axis=1)

     # 处理重复数据,保留第一个数据 
    df = df[~df.index.duplicated(keep='first')]

   # 将属性值转换为数字
    df = df.map(lambda x: float(x) \
                if x != '\u2014' else np.nan)

    # 最后,我们只关注 1919 年到 1925 年之间的数据
    mask = (df.index >= '1919-01-01') & \
           (df.index < '1925-01-01')
    df = df.loc[mask]

    return df

现在,我们编写绘图函数 pe_plotpr_plot ,它们将绘制出价格水平、汇率、和通货膨胀率的图表。

Hide code cell source

def pe_plot(p_seq, e_seq, index, labs, ax):
    "生成价格和汇率图"

    p_lab, e_lab = labs

    # 绘制价格和汇率图
    ax.plot(index, p_seq, label=p_lab, color='tab:blue', lw=2)

    # 添加新轴
    ax1 = ax.twinx()
    ax1.plot([None], [None], label=p_lab, color='tab:blue', lw=2)
    ax1.plot(index, e_seq, label=e_lab, color='tab:orange', lw=2)

    # 设置对数轴
    ax.set_yscale('log')
    ax1.set_yscale('log')

    # 定义轴标签格式
    ax.xaxis.set_major_locator(
        mdates.MonthLocator(interval=5))
    ax.xaxis.set_major_formatter(
        mdates.DateFormatter('%Y年%m月'))
    for label in ax.get_xticklabels():
        label.set_rotation(45)

    # 设置标签
    ax.set_ylabel('价格水平')
    ax1.set_ylabel('汇率')

    ax1.legend(loc='upper left')

    return ax1

def pr_plot(p_seq, index, ax):
    "生成通货膨胀率图"

    # 计算对数 p_seq 的差值
    log_diff_p = np.diff(np.log(p_seq))

    # 计算并绘制移动平均值
    diff_smooth = pd.DataFrame(log_diff_p).rolling(3, center=True).mean()
    ax.plot(index[1:], diff_smooth, label='移动平均数(3 期)', alpha=0.5, lw=2)
    ax.set_ylabel('通胀率')

    ax.xaxis.set_major_locator(
        mdates.MonthLocator(interval=5))
    ax.xaxis.set_major_formatter(
        mdates.DateFormatter('%Y年%m月'))

    for label in ax.get_xticklabels():
        label.set_rotation(45)

    ax.legend()

    return ax

接下来我们为每个国家准备数据

# 导入数据
data_url = "https://github.com/QuantEcon/data-lectures/raw/main/lectures/chapter_3.xlsx"
xls = pd.ExcelFile(data_url)

# 选择相关的数据表
sheet_index = [(2, 3, 4),
               (9, 10),
               (14, 15, 16),
               (21, 18, 19)]

# 删除多余的行
remove_row = [(-2, -2, -2),
              (-7, -10),
              (-6, -4, -3),
              (-19, -3, -6)]

# 对每个国家的序列进行解包和合并
df_list = []

for i in range(4):

    indices, rows = sheet_index[i], remove_row[i]

    # 在选定的工作表上应用 process_entry
    sheet_list = [
        pd.read_excel(xls, 'Table3.' + str(ind),
            header=1).iloc[:row].map(process_entry)
        for ind, row in zip(indices, rows)]

    sheet_list = [process_df(df) for df in sheet_list]
    df_list.append(pd.concat(sheet_list, axis=1))

df_aus, df_hun, df_pol, df_deu = df_list
/tmp/ipykernel_7190/1398580657.py:31: Pandas4Warning: Sorting by default when concatenating all DatetimeIndex is deprecated.  In the future, pandas will respect the default of `sort=False`. Specify `sort=True` or `sort=False` to silence this message. If you see this warnings when not directly calling concat, report a bug to pandas.
  df_list.append(pd.concat(sheet_list, axis=1))

现在,我们为四个国家绘制图表。

我们将为每个国家绘制两幅图。

第一幅图绘制的是

  • 价格水平

  • 相对于美元的汇率

对于每个国家,图表右侧的刻度与价格水平相关,而图表左侧的刻度与汇率相关。

对于每个国家,第二张图表绘制的是通货膨胀率的三个月居中移动平均值,定义为 \(\frac{p_{t-1}+p_t+p_{t+1}}{3}\)

4.2.1. 奥地利#

我们的数据来源是

  • 表 3.3,零售价格水平 \(\exp p\)

  • 表 3.4,与美国的汇率

p_seq = df_aus['Retail price index, 52 commodities']
e_seq = df_aus['Exchange Rate']

lab = ['零售价格指数',
       '奥地利克朗兑美分']

# 创建图表
fig, ax = plt.subplots(dpi=200)
_ = pe_plot(p_seq, e_seq, df_aus.index, lab, ax)

plt.show()
_images/8b151bb4a3db1103f1272b6902cd4b40a6cc650e43169709ce7417742ffb68a1.png

Fig. 4.3 价格指数和汇率(奥地利)#

# 绘制移动平均线
fig, ax = plt.subplots(dpi=200)
_ = pr_plot(p_seq, df_aus.index, ax)

plt.show()
_images/8b17b7fb575254fec5ff1c575066c24df232958a20a9bf665c13d355d75afa36.png

Fig. 4.4 月通货膨胀率(奥地利)#

观察 Fig. 4.3Fig. 4.4,本讲作者从中得到了以下印象:

  • “超级通货膨胀”的一段时期中,价格水平的对数迅速上升,月通胀率非常高

  • 超级通货膨胀的突然停止,表现为价格水平的对数的突然变平,以及三个月平均通胀率的显著且永久地下降

  • 美元汇率跟随价格水平走势。

我们将在接下来将要研究的三个案例中看到类似的模式。

4.2.2. 匈牙利#

我们的数据来源为:

  • 表 3.10,价格水平 \(\exp p\) 和汇率

p_seq = df_hun['Hungarian index of prices']
e_seq = 1 / df_hun['Cents per crown in New York']

lab = ['匈牙利价格指数',
       '匈牙利克朗兑美分']

# 创建图表
fig, ax = plt.subplots(dpi=200)
_ = pe_plot(p_seq, e_seq, df_hun.index, lab, ax)

plt.show()
_images/f86656161cf54947d1ba770b6c6e04b32057d73d9a4ebc4863c0cfd657fad0ca.png

Fig. 4.5 价格指数和汇率(匈牙利)#

# 绘制移动平均线
fig, ax = plt.subplots(dpi=200)
_ = pr_plot(p_seq, df_hun.index, ax)

plt.show()
_images/6639228d8d77dad4013752b8ee2b1735747b5e72a4e8247a90009618aaa5d33a.png

Fig. 4.6 月通货膨胀率(匈牙利)#

4.2.3. 波兰#

波兰的数据来源如下

  • 表 3.15,价格水平 \(\exp p\)

  • 表 3.15,汇率

Note

为了根据电子表格中的数据构建价格水平序列,我们指示 Pandas 遵循与[Sargent, 2013]第3章相同的处理方法。我们将三个序列——批发价格指数、以纸币为基础的批发价格指数、以兹罗提为基础的批发价格指数——拼接在一起。我们根据前一序列最后一期的价格水平比率对序列进行调整,并将它们拼接起来构建成一个单一序列。 我们删除了1924年6月引入兹罗提之后的汇率数据,因为我们没有以兹罗提计价的价格数据。我们使用6月的旧货币来计算汇率调整。

# 拼接三个不同单位的价格序列
p_seq1 = df_pol['Wholesale price index'].copy()
p_seq2 = df_pol['Wholesale Price Index: '
                'On paper currency basis'].copy()
p_seq3 = df_pol['Wholesale Price Index: '
                'On zloty basis'].copy()

# 非NaN部分
mask_1 = p_seq1[~p_seq1.isna()].index[-1]
mask_2 = p_seq2[~p_seq2.isna()].index[-2]

adj_ratio12 = (p_seq1[mask_1] / p_seq2[mask_1])
adj_ratio23 = (p_seq2[mask_2] / p_seq3[mask_2])

# 拼接三个序列
p_seq = pd.concat([p_seq1[:mask_1],
                   adj_ratio12 * p_seq2[mask_1:mask_2],
                   adj_ratio23 * p_seq3[mask_2:]])
p_seq = p_seq[~p_seq.index.duplicated(keep='first')]

# 汇率
e_seq = 1/df_pol['Cents per Polish mark (zloty after May 1924)']
e_seq[e_seq.index > '05-01-1924'] = np.nan
lab = ['批发价格指数',
       '波兰马克兑美分']

# 创建图表
fig, ax = plt.subplots(dpi=200)
ax1 = pe_plot(p_seq, e_seq, df_pol.index, lab, ax)

plt.show()
# 绘制移动平均线
fig, ax = plt.subplots(dpi=200)
_ = pr_plot(p_seq, df_pol.index, ax)

plt.show()
_images/572c5d8bc35af7557725bcdbcf4069475236438dc9e1ad6417c3661af5e8dbe8.png

Fig. 4.7 月通货膨胀率(波兰)#

4.2.4. 德国#

德国的数据来源于[Sargent, 2013]第 3 章中的以下表格:

  • 表 3.18,批发价格水平 \(\exp p\)

  • 表 3.19,汇率

p_seq = df_deu['Price index (on basis of marks before July 1924,'
                '  reichsmarks after)'].copy()
e_seq = 1/df_deu['Cents per mark']

lab = ['价格指数',
       '马克兑美分']

# 创建图表
fig, ax = plt.subplots(dpi=200)
ax1 = pe_plot(p_seq, e_seq, df_deu.index, lab, ax)

plt.show()
_images/f12c49382239f28551158a5630e54e8e8169e2d9c0ffc7f862a19b20c825a4e2.png

Fig. 4.8 价格指数和汇率(德国)#

p_seq = df_deu['Price index (on basis of marks before July 1924,'
                '  reichsmarks after)'].copy()
e_seq = 1/df_deu['Cents per mark'].copy()

# 货币改革后调整价格水平/汇率
p_seq[p_seq.index > '06-01-1924'] = p_seq[p_seq.index
                                          > '06-01-1924'] * 1e12
e_seq[e_seq.index > '12-01-1923'] = e_seq[e_seq.index
                                          > '12-01-1923'] * 1e12

lab = ['价格指数(马克或换算成马克)',
       '马克兑美分(或德国马克换算成马克)']

# 创建图表
fig, ax = plt.subplots(dpi=200)
ax1 = pe_plot(p_seq, e_seq, df_deu.index, lab, ax)

plt.show()
_images/bc53a38377b9dda7f5b41f6f721653163af0e6c91beab1b19738d689db7a0ec0.png

Fig. 4.9 价格指数(调整后)和汇率(德国)#

# 绘制移动平均线
fig, ax = plt.subplots(dpi=200)
_ = pr_plot(p_seq, df_deu.index, ax)

plt.show()
_images/b143dba8cf710db37d20d33cd8cdebe11293c5ac2d1f7d40251b3bddd9917c37.png

Fig. 4.10 月通胀率(德国)#

4.3. 大通胀的开始和停止#

奥地利、匈牙利、波兰和德国的价格水平(对数)在快速上升后,如此迅速地趋于平稳,这一现象令人瞩目。

这些“突然停止”还表现在上述四个国家的三月移动平均通胀率的永久性下降。

此外,这四个国家的美元汇率走势与其价格水平相似。

Note

这种模式是汇率的购买力平价理论中的一个实例。

这些大通胀似乎都“在一瞬间停止”。

[Sargent and Velde, 2002] 的第3章对这一显著模式提供了解释。

简而言之,他们提供的解释如下。

一战后,美国实行了金本位制。

美国政府随时准备按需将一美元兑换成指定数量的黄金。

一战刚结束时,匈牙利、奥地利、波兰和德国没有实行金本位制。

他们的货币是“法定”或“无支持”的,意思是他们不受政府将其按需兑换成金银币的可信承诺的支持。

政府印制新的纸币来支付货物和服务。

Note

从技术上讲,这些票据主要由国库券“支持”。

但人们不能指望这些国库券会通过征税来偿还,而是通过印制更多的票据或国库券来偿还。

这种行为的规模之大,导致了各国货币的惊人贬值。

最终,德国马克稳定在1万亿(\(10^{12}\))纸马克兑1战前金马克,波兰马克稳定在180万纸马克兑1金兹罗提,奥地利克朗稳定在14,400纸克朗兑1战前奥匈克朗,匈牙利克朗稳定在14,500纸克朗兑1战前奥匈克朗。

[Sargent and Velde, 2002]第3章描述了匈牙利、奥地利、波兰和德国为结束恶性通货膨胀而刻意改变政策的情况。

每个国家的政府都再次停止印刷钞票来支付商品和服务,并使本国货币可兑换成美元或英镑。

[Sargent and Velde, 2002]中讲述的故事是以货币主义价格水平理论自适应预期下的货币主义价格水平理论中描述的价格水平货币主义理论为基础的。

这些章节讨论了这些快速贬值货币的持有者在想什么,以及他们的看法如何影响通货膨胀对政府货币和财政政策的反应。

4.4. 练习#

Exercise 4.1

比较四次恶性通货膨胀中的月度峰值通胀率。

对于第一次世界大战后的四次恶性通货膨胀事件(奥地利、匈牙利、波兰、德国)中的每一次,计算月度对数通胀率的峰值 \(\Delta \log p_t = \log p_t - \log p_{t-1}\),以及其发生的具体日期。

a. 用条形图展示四个峰值对数变化率。

b. 将每个峰值对数变化率转换为月度价格上涨百分比 (即计算 \(100 \times (e^{\Delta \log p_t} - 1)\)),并打印一个简短的峰值通胀率与日期的表格。

c. 哪个国家经历了最极端的月度峰值通胀?

Exercise 4.2

金本位与法定货币:量化长期价格稳定性。

本讲认为,1914年后放弃金/银本位制引发了此前三个世纪未曾出现的持续通货膨胀。

利用 df_fig5 数据框,对这一论断进行量化检验。对于df_fig5中的每个国家(英国、美国、法国、卡斯蒂利亚),计算以下两个时期价格水平的年化平均对数增长率:

  • 金本位时代:1700年至1913年,以及

  • 法定货币时代:1914年至2000年。

对于价格水平从\(t_1\)年的\(p_{t_1}\)上升到\(t_2\)年的\(p_{t_2}\)的国家,其年化增长率为

\[ g = \frac{\log p_{t_2} - \log p_{t_1}}{t_2 - t_1}. \]

用分组条形图展示你的结果,并评论你的发现。

Exercise 4.3

德国恶性通货膨胀期间的购买力平价。

本讲指出,每个国家的美元汇率都“跟随”其价格水平。

这种共同变动是购买力平价(PPP)理论的一个标志性特征,该理论预测 \(\log e_t \approx \log p_t + \text{常数}\),因此实际汇率 \(q_t = \log e_t - \log p_t\) 应该大致保持恒定。

对德国这一案例检验购买力平价:

a. 将对数价格水平和对数汇率(每美分对应的马克数)都在第一个可用日期归一化为零,将两个归一化后的序列绘制在同一坐标轴上,并评估它们相互跟随的紧密程度。

b. 计算两个归一化对数水平序列之间的皮尔逊相关系数,并打印出来。

c. 绘制实际汇率 \(q_t = \log e_t - \log p_t\) 随时间的变化,并比较 \(q_t\) 的标准差与 \(\log p_t\) 的标准差,以评估相对于整体价格变动,偏离购买力平价的程度有多大。