这一讲要回答六个问题:
- 汇率是什么?名义汇率和实际汇率,差在哪里?
- 贬值,能不能改善贸易余额?
- 长期里,什么在拉着汇率?(购买力平价)
- 国际收支的账本,怎么记?逆差、顺差,到底是什么?
- 固定汇率为什么会突然崩溃?(货币危机)
- 逆差,是不是问题?汇率,能不能被预测?(有争议)
前面,我们留下了不少伏笔:第 30 讲,说货币的国际层面,留给这一讲;第 31 讲,利率,通过汇率,影响经济;第 32 讲,总需求里,有"净出口",物价上涨,让本国商品更贵,是"汇率效应";第 35 讲,金融危机,货币危机,也没讲;第 40 讲,贸易的逆差、顺差,是"输了吗",也留到了这里。
一、三个问题
先停一下:请先凭直觉,回答下面三个问题。
问题 1: 人民币,对美元的汇率,从 1 美元 = 7.00 元,变成了 1 美元 = 7.35 元。人民币,是升值了,还是贬值了?变了多少个百分点?
问题 2: 美国,每年,大量进口,对很多国家,有"贸易逆差";中国、德国,有"贸易顺差"。顺差,是不是"赢"?逆差,是不是"输"?
问题 3: 一个国家的货币,贬值了。对这个国家,是好事,还是坏事?
先记下你的答案。我们会在后面,一个一个回来:问题 1,在 2.1 节;问题 2,在第四节和第六节;问题 3,在 2.3、第五节。
二、汇率:一种货币的价格
2.1 名义汇率
汇率,是一种货币,用另一种货币,表示的价格。这一讲,统一用"直接标价":1 单位外币,值多少本币。比如,1 美元 = 7.00 元。
这个规定,很重要,因为,现实里的报价,常常是反的(1 元 = 0.14 美元,也是同一个汇率),读之前,要先看清楚:“是谁的价格”。
规则很简单:数字变大,本币贬值;数字变小,本币升值。 原因是,买 1 美元,要花的元,变多了,元,就不值钱了。
先把这个算术,做一遍,再看实际汇率,和贬值的作用。
# 一、汇率:一种货币的价格。本课统一用"直接标价":1 单位外币,值多少本币(元)。
print("一、汇率是'1 美元值多少元':数字变大,是人民币贬值;数字变小,是人民币升值")
for e in (7.2, 7.0, 6.5):
print(f" 汇率 {e} 元/美元:一件 10 美元的进口品 = {10 * e:.0f} 元;你有 7000 元,能换 {7000 / e:,.0f} 美元")
print(" (同一个汇率,反过来写,是 1 元 = 1/e 美元;很多报价是反的,读之前,先看清楚,是'谁的价格')")
# 二、名义汇率,和实际汇率 q = e × P* ÷ P:外国一篮子商品,按本国货币算的价格,÷ 本国同样一篮子商品的价格。q 变大:本国商品,相对更便宜。
print("\n二、实际汇率 q = e × P* ÷ P(q 上升:本国商品,相对外国商品,更便宜;q 下降:更贵)")
e, P_star, P = 7.0, 100.0, 700.0
print(f" 起点:e = {e},外国的一篮子 {P_star:.0f} 美元,本国的同样一篮子 {P:.0f} 元:q = {e * P_star / P:.3f}(一样贵)")
for label, pi_home, pi_foreign, years in (("名义汇率不变,本国通胀 4%,外国 2%,10 年后", 0.04, 0.02, 10), ("名义汇率不变,本国通胀 2%,外国 2%,10 年后", 0.02, 0.02, 10)):
q = e * P_star * (1 + pi_foreign) ** years / (P * (1 + pi_home) ** years)
print(f" {label}:q = {q:.3f}({('本国商品,相对变贵了,q 下降 ' + format(1 - q, '.1%')) if q < 0.9999 else '相对价格没变'})")
need = ((1.04 / 1.02) ** 10)
print(f" 如果要让 q 保持 1,名义汇率,10 年里,要从 7.00 变成 {7.0 * need:.2f}(贬值,抵消通胀差)")
# 三、贬值,能改善贸易余额吗?(马歇尔–勒纳条件)
# 设:本币贬值 10%。出口品,以本币定价,价格不变,外国人,觉得便宜了 10%,买得更多(出口弹性 ηx);
# 进口品,以外币定价,换成本币,贵了 10%,本国买得更少(进口弹性 ηm)。起点:出口 = 进口 = 100(本币)。
print("\n三、本币贬值 10%,贸易余额(本币)怎么变?起点:出口 = 进口 = 100")
print(f" {'出口弹性':>8}{'进口弹性':>8}{'两者之和':>8}{'出口':>8}{'进口':>8}{'余额':>8}")
for ex, im in ((0.2, 0.2), (0.4, 0.4), (0.5, 0.5), (0.8, 0.8), (1.0, 1.0), (1.5, 1.5)):
X = 100 * (1 + ex * 0.10)
M = 100 * 1.10 * (1 - im * 0.10)
print(f" {ex:>8.1f}{im:>8.1f}{ex + im:>8.1f}{X:>8.1f}{M:>8.1f}{X - M:>+8.1f}")
print(" 弹性之和,要大于 1(马歇尔–勒纳条件),贬值,才改善余额:因为,进口,每件变贵了,要看,买的量,少了多少")
# 四、J 曲线:短期,进出口,来不及调整(弹性小);长期,弹性变大。
print("\n四、J 曲线(示意):贬值 10%;弹性,从短期的 0.1,逐季增大,长期,进出口弹性各 0.8")
print(f" {'季度':>4}{'弹性(各)':>10}{'出口':>8}{'进口':>8}{'余额':>8}")
for t in range(0, 9):
eta = 0.8 - 0.7 * 0.7 ** t
X = 100 * (1 + eta * 0.10); M = 100 * 1.10 * (1 - eta * 0.10)
print(f" {t:>4}{eta:>10.2f}{X:>8.1f}{M:>8.1f}{X - M:>+8.1f}")
print(" 先变差(进口变贵,量还没变),再变好:像字母 J")
输出:
一、汇率是'1 美元值多少元':数字变大,是人民币贬值;数字变小,是人民币升值
汇率 7.2 元/美元:一件 10 美元的进口品 = 72 元;你有 7000 元,能换 972 美元
汇率 7.0 元/美元:一件 10 美元的进口品 = 70 元;你有 7000 元,能换 1,000 美元
汇率 6.5 元/美元:一件 10 美元的进口品 = 65 元;你有 7000 元,能换 1,077 美元
(同一个汇率,反过来写,是 1 元 = 1/e 美元;很多报价是反的,读之前,先看清楚,是'谁的价格')
二、实际汇率 q = e × P* ÷ P(q 上升:本国商品,相对外国商品,更便宜;q 下降:更贵)
起点:e = 7.0,外国的一篮子 100 美元,本国的同样一篮子 700 元:q = 1.000(一样贵)
名义汇率不变,本国通胀 4%,外国 2%,10 年后:q = 0.824(本国商品,相对变贵了,q 下降 17.6%)
名义汇率不变,本国通胀 2%,外国 2%,10 年后:q = 1.000(相对价格没变)
如果要让 q 保持 1,名义汇率,10 年里,要从 7.00 变成 8.50(贬值,抵消通胀差)
三、本币贬值 10%,贸易余额(本币)怎么变?起点:出口 = 进口 = 100
出口弹性 进口弹性 两者之和 出口 进口 余额
0.2 0.2 0.4 102.0 107.8 -5.8
0.4 0.4 0.8 104.0 105.6 -1.6
0.5 0.5 1.0 105.0 104.5 +0.5
0.8 0.8 1.6 108.0 101.2 +6.8
1.0 1.0 2.0 110.0 99.0 +11.0
1.5 1.5 3.0 115.0 93.5 +21.5
弹性之和,要大于 1(马歇尔–勒纳条件),贬值,才改善余额:因为,进口,每件变贵了,要看,买的量,少了多少
四、J 曲线(示意):贬值 10%;弹性,从短期的 0.1,逐季增大,长期,进出口弹性各 0.8
季度 弹性(各) 出口 进口 余额
0 0.10 101.0 108.9 -7.9
1 0.31 103.1 106.6 -3.5
2 0.46 104.6 105.0 -0.4
3 0.56 105.6 103.8 +1.8
4 0.63 106.3 103.0 +3.3
5 0.68 106.8 102.5 +4.3
6 0.72 107.2 102.1 +5.1
7 0.74 107.4 101.8 +5.6
8 0.76 107.6 101.6 +6.0
先变差(进口变贵,量还没变),再变好:像字母 J
逐段看(第一部分):
- 回答问题 1:7.00 → 7.35,一件 10 美元的进口品,从 70 元,变成 73.5 元,贵了 5%;也就是,美元升值了 5%(7.35 ÷ 7.00 − 1)。可是,人民币,贬值了 4.76%(1 − 7.00 ÷ 7.35)。同一件事,两个数字,不一样,因为,“变化的百分比”,取决于,你站在哪一边。读新闻,要看清楚,说的是"谁"的升值、贬值。
- 一个汇率,是怎么决定的?在自由浮动的外汇市场里,买外币的人,和卖外币的人,供求相等:进口商,要付外币,买外币;出口商,收到外币,卖外币;投资者,买外国的资产,买外币,卖外国资产的人,收回本币,等等。哪一边多,价格,就往哪边走。第 7 讲的供求,在这里,一样适用。
2.2 实际汇率
名义汇率,不够。如果,一个国家的物价,涨得很快,而名义汇率,没变,它的商品,就在偷偷地变贵。
实际汇率 q = e × P* ÷ P:外国的一篮子商品,按本国货币算的价格,除以,本国同样一篮子商品的价格。q 下降,本国商品,相对外国商品,更贵;q 上升,更便宜。
- 第二部分:起点,q = 1(一样贵)。如果,名义汇率不变,本国通胀 4%,外国 2%,10 年后,q = 0.824:本国商品,相对,贵了很多。要让 q,保持不变,名义汇率,10 年里,要从 7.00,变成 8.50(贬值),抵消通胀的差。
- 所以,通胀高的国家,如果名义汇率,不跟着贬值,就是"实际升值",出口,会变难。这是下一节,购买力平价的出发点。
2.3 贬值,会改善贸易余额吗
直觉:贬值,让出口,对外国人,更便宜,进口,对本国人,更贵,所以,出口增加,进口减少,贸易余额,改善。可是,这里,有一个陷阱:进口,每件,变贵了。
- 第三部分:起点,出口 = 进口 = 100。本币,贬值 10%。出口品,以本币定价,外国人觉得,便宜了 10%,买得更多(出口弹性 ηx);进口品,以外币定价,换成本币,贵了 10%,本国买得更少(进口弹性 ηm)。弹性,各 0.2(之和 0.4):出口 102,进口 107.8,余额 −5.8,变差了;弹性,各 0.4:−1.6;各 0.5(之和 1.0):+0.5;各 1.0:+11。两个弹性之和,要大于 1(马歇尔–勒纳条件),贬值,才改善余额。
- J 曲线(第四部分,示意):短期,进出口,来不及调整(合同、习惯、供应链),弹性,只有 0.1;随着时间,弹性,逐步增大,长期,各 0.8。余额,先变差(−7.9),到第 3 个季度,才变正,最终 +6.0。曲线,像字母 J。
回答问题 3 的一部分:贬值,对出口行业、对要和进口品竞争的行业,有利;对买进口品(石油、芯片、药)的消费者和企业,是成本;对欠外币债的人,是负担(第五节)。好事,还是坏事,取决于,你是谁。 这是第 3 讲、第 40 讲,同一个"总体,和分配"的问题。
2.4 汇率,和总需求
第 32 讲:总需求 AD = C + I + G + NX。汇率,通过 NX(净出口),影响总需求:本币贬值,在短期,一般会让净出口增加,总需求扩张(前提:马歇尔–勒纳条件成立,J 曲线过去了);本币升值,反之。第 31 讲:降息,常会让本币贬值(资本,流向利率更高的地方),这是货币政策,传到经济里的一条渠道。
三、购买力平价:长期,什么在拉着汇率
3.1 一价定律,和购买力平价
第 7 讲、第 12 讲:同一件东西,在两个市场,如果价格不同,会有人,在便宜的地方买,在贵的地方卖,套利,把差价,压下去。这叫一价定律。
推广到整个"一篮子"商品:如果,同一篮子商品,在两个国家,换算成同一种货币,价格,长期,应该,差不多。这叫购买力平价(PPP)。它给出一个预测:一个国家,通胀,比别国高 1%,它的货币,长期,应该,贬值 1%。(因为,不然,它的商品,就会,越来越贵,没人买。)
3.2 证据
世界银行,146 个经济体,2000 年到 2023 年,每个国家的:汇率,和消费者物价指数(CPI)。看,“通胀比美国多多少”,和"本币对美元,贬值多少",是不是,一对一。
import math
import numpy as np
# 数据:世界银行 WDI。每个经济体:(2000 年的汇率,2023 年的汇率,2000 年的 CPI,2023 年的 CPI)。汇率:1 美元,值多少本币(年平均);CPI:消费者价格指数(只看比值)。
DATA = {
"AGO": (10.041, 685.02, 2.909, 805), "ALB": (143.71, 100.64, 74.14, 138), "ARM": (539.53,
392.48, 65, 155.3), "ATG": (2.7, 2.7, 81.08, 133.9), "AUS": (1.7248, 1.5052, 74.38, 139.9),
"AUT": (1.0827, 0.92484, 82.6, 143.9), "AZE": (0.89483, 1.7, 48.87, 213), "BDI": (720.67,
2574.1, 41.94, 319.5), "BEL": (1.0827, 0.92484, 81.42, 137.8), "BEN": (710.21, 606.65,
74.33, 120.8), "BFA": (710.21, 606.57, 74.92, 131.8), "BGD": (52.142, 106.31, 53.91, 237.2),
"BGR": (2.1233, 1.809, 56.1, 151.7), "BHR": (0.376, 0.376, 83.44, 119.6), "BHS": (1, 1,
80.01, 130.2), "BLR": (0.087675, 3.0074, 16.05, 710.5), "BLZ": (2, 2, 85.19, 121.7), "BOL":
(6.1835, 6.91, 62.63, 157.4), "BRA": (1.8294, 4.9944, 52.53, 213.9), "BRB": (2, 2, 67.29,
143.2), "BRN": (1.724, 1.3431, 94.96, 106.7), "BTN": (44.942, 82.599, 62.81, 212.2), "BWA":
(5.1022, 13.596, 44.03, 192), "CAF": (710.21, 606.57, 72.54, 175), "CAN": (1.4854, 1.3499,
81.89, 134.9), "CHE": (1.6888, 0.89849, 91.75, 104.4), "CHL": (539.59, 840.07, 73.67,
170.7), "CHN": (8.2785, 7.084, 80.97, 132.2), "CIV": (710.21, 606.57, 75.23, 133.3), "CMR":
(710.21, 606.57, 77.61, 141.8), "COG": (710.21, 606.57, 75.84, 138.8), "COL": (2087.9, 4326,
58.22, 184.1), "COM": (532.66, 454.99, 69.14, 145.6), "CPV": (115.88, 101.8, 78.67, 126.8),
"CRI": (308.19, 544.05, 37.36, 143.7), "CYP": (0.62241, 0.92484, 77.51, 117.1), "CZE":
(38.598, 22.198, 77.82, 158.9), "DEU": (1.0827, 0.92484, 85.7, 131.9), "DJI": (177.72,
177.72, 70.07, 112.5), "DMA": (2.7, 2.7, 80.4, 118), "DNK": (8.0831, 6.8897, 81.64, 125.6),
"DOM": (16.181, 56.158, 31.85, 169.3), "DZA": (75.26, 135.84, 70.44, 198.6), "ECU": (1, 1,
45.7, 131), "EGY": (3.472, 30.626, 45.08, 486.3), "ESP": (1.0827, 0.92484, 75.93, 128),
"EST": (16.969, 0.92484, 66.45, 165.9), "ETH": (8.2173, 54.601, 37.58, 858.4), "FIN":
(1.0827, 0.92484, 86.08, 131), "FJI": (2.1286, 2.2501, 70.14, 144.3), "FRA": (1.0827,
0.92484, 84.38, 124), "GAB": (710.21, 606.57, 81.59, 135.7), "GBR": (0.66093, 0.80454,
81.47, 142.7), "GEO": (1.9762, 2.628, 54.9, 176.6), "GHA": (0.54492, 11.02, 19.21, 610),
"GMB": (12.788, 61.096, 50.97, 256.3), "GNB": (710.21, 606.57, 78.39, 136.6), "GNQ":
(710.21, 606.57, 56.01, 140.3), "GRC": (365.4, 0.92484, 72.2, 115.6), "GRD": (2.7, 2.7,
73.54, 114.4), "GTM": (7.7632, 7.832, 51.86, 174.6), "GUY": (182.43, 208.5, 56.13, 133.7),
"HKG": (7.7912, 7.8296, 95.9, 142.6), "HND": (14.841, 24.602, 48.12, 189.1), "HRV": (8.2777,
0.92484, 75.81, 134.9), "HTI": (21.171, 141.04, 32.26, 559.7), "HUN": (282.18, 353.09,
57.88, 177.3), "IDN": (8421.8, 15237, 44.02, 169.1), "IND": (44.942, 82.599, 54.34, 216.9),
"IRL": (1.0827, 0.92484, 78.34, 124.6), "IRN": (1764.9, 42000, 25.62, 2140), "IRQ": (2002.4,
1312.5, 18.24, 139.5), "ISL": (78.616, 137.94, 54.73, 163.2), "ISR": (4.0773, 3.6674, 80.83,
118.8), "ITA": (1.0827, 0.92484, 80.71, 128.6), "JAM": (42.986, 154.16, 34.04, 212.7),
"JOR": (0.709, 0.71, 67.24, 135.9), "JPN": (107.77, 140.49, 102.7, 111.4), "KAZ": (142.13,
456.17, 43.79, 287.5), "KEN": (76.176, 139.85, 38.09, 246.3), "KGZ": (47.704, 87.856, 48.99,
233.7), "KHM": (3840.8, 4110.7, 61, 148.3), "KNA": (2.7, 2.7, 72.11, 110.8), "KOR": (1130.4,
1305.7, 73.11, 129.2), "KWT": (0.30675, 0.30719, 69.94, 144.1), "LAO": (7887.6, 17689,
48.14, 239.1), "LBY": (0.51219, 4.8129, 98.81, 278.3), "LCA": (2.7, 2.7, 78.03, 126.8),
"LKA": (77.005, 327.51, 36.48, 308.3), "LSO": (6.9398, 18.45, 69.35, 199.8), "LTU": (4,
0.92484, 74.4, 163.8), "LUX": (1.0827, 0.92484, 80.05, 131.2), "LVA": (0.6065, 0.92484,
59.17, 154.6), "MAC": (8.0259, 8.0634, 80.52, 147.5), "MAR": (10.626, 10.131, 83.65, 128.3),
"MDA": (12.434, 18.164, 40.03, 264.7), "MDG": (1353.5, 4429.6, 37.75, 241.5), "MDV": (11.77,
15.387, 71.08, 142.6), "MEX": (9.4556, 17.759, 63.31, 176.1), "MKD": (65.904, 56.947, 79.91,
148), "MLI": (710.21, 606.57, 76.41, 127), "MLT": (0.43815, 0.92484, 78.84, 129.3), "MNG":
(1076.7, 3465.7, 41.63, 277), "MRT": (23.892, 36.489, 53.15, 164.6), "MUS": (26.25, 45.267,
56.89, 164.4), "MWI": (59.544, 1161.1, 32.36, 773.9), "MYS": (3.8, 4.5606, 80.52, 130.4),
"NER": (710.21, 606.57, 78, 126.3), "NGA": (101.7, 645.19, 29.6, 524.9), "NIC": (12.684,
36.441, 45.72, 212), "NLD": (1.0827, 0.92484, 81.95, 137.7), "NOR": (8.8018, 10.563, 81.95,
140.7), "NPL": (71.094, 132.12, 55.75, 236.9), "NZL": (2.2011, 1.6284, 77, 136.9), "OMN":
(0.3845, 0.3845, 74.77, 119.4), "PAK": (53.648, 280.36, 43.41, 343.4), "PAN": (1, 1, 77.31,
127.5), "PER": (3.49, 3.7438, 79.16, 159.8), "PHL": (44.192, 55.63, 63.65, 154.7), "PNG":
(2.7822, 3.5896, 52.91, 183.9), "POL": (4.3461, 4.2037, 76.05, 158.2), "PRT": (1.0827,
0.92484, 78.53, 126), "PRY": (3486.4, 7288.9, 47.29, 176.1), "QAT": (3.64, 3.64, 60.88,
124.4), "ROU": (2.1709, 4.5743, 31.98, 167.7), "RUS": (28.129, 85.162, 30.76, 240.1), "RWA":
(389.7, 1160.1, 46.71, 233), "SAU": (3.75, 3.75, 76.69, 132.5), "SEN": (710.21, 606.57,
80.88, 133), "SGP": (1.724, 1.3428, 85.19, 130), "SLB": (5.0889, 8.3756, 44.6, 152.9),
"SLV": (8.755, 1, 71.38, 127.9), "SRB": (63.166, 108.4, 19.76, 191.6), "STP": (7.9782,
22.658, 22.35, 338.8), "SUR": (1.3225, 36.776, 28.97, 1462), "SVK": (46.035, 0.92484, 65.4,
151.2), "SVN": (222.66, 0.92484, 66.54, 132.3), "SWE": (9.1622, 10.61, 86.23, 133.5), "SYC":
(5.7138, 14.018, 47.08, 146.6), "TCD": (710.21, 606.57, 72.17, 143), "TGO": (710.21, 606.57,
74.49, 136.7), "THA": (40.112, 34.802, 77.35, 122.1), "TJK": (2.0762, 10.845, 28.35, 233.1),
"TON": (1.7585, 2.3637, 47.7, 160), "TTO": (6.2998, 6.7503, 51.05, 162.8), "TUN": (1.3707,
3.1062, 73.99, 205.4), "TUR": (0.62522, 23.739, 20.59, 834.6), "TZA": (800.41, 2383, 51.71,
217.4), "UGA": (1644.5, 3726.1, 53.7, 209.9), "UKR": (5.4402, 36.574, 34.84, 429.2), "URY":
(12.1, 38.824, 43.47, 277.2), "USA": (1, 1, 78.97, 139.7), "VCT": (2.7, 2.7, 74.1, 123.4),
"VNM": (14168, 23787, 48.09, 183.1), "VUT": (137.64, 119.11, 75.15, 149.8), "WSM": (3.2864,
2.7384, 57.41, 142.9), "ZAF": (6.9398, 18.45, 59.99, 194.9), "ZMB": (3.1108, 20.212, 23.83,
369)
}
# 国际清算银行(BIS)的"实际有效汇率"(广义,2020 年 = 100),年平均;REER_YEARS 是起止年份。
REER_YEARS = (1994, 2025)
REER = {
"US": [86.5, 84.8, 86.9, 91.2, 98.5, 97.5, 100.8, 106.5, 106.4, 99.8, 95.3, 93.7, 92.9, 88.5, 84.6, 88.2, 84.3, 80.1, 82.0, 82.2, 84.1, 93.3, 97.2, 96.8, 95.8, 98.6, 100.0, 97.8, 106.9, 107.0, 109.4, 109.5],
"JP": [172.6, 174.4, 146.2, 137.2, 136.9, 153.7, 162.1, 144.7, 135.3, 135.8, 136.9, 128.3, 116.0, 106.1, 114.1, 128.1, 128.8, 130.5, 128.9, 102.7, 96.8, 90.3, 102.3, 97.3, 96.3, 99.2, 100.0, 91.2, 79.2, 75.5, 71.5, 72.5],
"CN": [55.9, 62.3, 68.9, 74.2, 78.6, 74.7, 75.0, 78.5, 76.4, 71.0, 68.8, 68.1, 69.0, 71.4, 77.6, 81.2, 80.5, 82.6, 87.6, 93.2, 95.3, 104.3, 100.4, 97.4, 98.6, 98.2, 100.0, 103.0, 103.5, 94.6, 92.4, 88.6],
}
# 这些经济体,在 2000–2023 年间,换过货币(加入欧元区,或者,改用美元),2000 年的汇率,是旧货币的单位,不能比:去掉
CHANGED = {"GRC", "SVN", "CYP", "MLT", "SVK", "EST", "LVA", "LTU", "HRV", "SLV", "ECU"}
keys = sorted(k for k in DATA if k != "USA" and k not in CHANGED)
dep = np.array([math.log(DATA[k][1] / DATA[k][0]) for k in keys]) # 本币对美元,贬值(取对数)
rel = np.array([math.log(DATA[k][3] / DATA[k][2]) - math.log(DATA["USA"][3] / DATA["USA"][2]) for k in keys]) # 通胀,比美国多多少(取对数)
n = len(keys)
b, a = np.polyfit(rel, dep, 1)
r2 = np.corrcoef(rel, dep)[0, 1] ** 2
print(f"一、相对购买力平价:{n} 个经济体,2000–2023 年。(去掉了换过货币的 {len(CHANGED)} 个:加入欧元区、或改用美元)")
print(f" 回归:本币对美元的贬值(对数)= {a:+.2f} + {b:.2f} × (本国通胀比美国多多少);R² = {r2:.2f}")
print(f" 购买力平价的预测:斜率 = 1(通胀高 1%,货币,贬值 1%)。实际斜率 {b:.2f}")
rng = np.random.default_rng(41)
bs = []
for _ in range(2000):
idx = rng.integers(0, n, n); bs.append(np.polyfit(rel[idx], dep[idx], 1)[0])
lo, hi = np.percentile(bs, [2.5, 97.5])
print(f" 自助法 2000 次,斜率的 95% 区间 [{lo:.2f}, {hi:.2f}]")
# 分组:通胀差异,大不大
yrs = 23
ann_rel = rel / yrs
print("\n 按'每年比美国多多少通胀'分三组(按 rel 排序,各约 1/3):")
order = np.argsort(rel)
print(f" {'组':<6}{'每年多出的通胀':>14}{'每年贬值':>10}{'两者之差(每年)':>16}")
for name, g in zip(("通胀低", "通胀中", "通胀高"), np.array_split(order, 3)):
print(f" {name:<6}{np.mean(ann_rel[g]):>13.1%}{np.mean(dep[g]) / yrs:>10.1%}{(np.mean(dep[g]) - np.mean(rel[g])) / yrs:>+16.1%}")
# 偏离最大的
res = dep - (a + b * rel)
print("\n 偏离回归线最多的 5 个(实际贬值,减去,回归线预测):" + ",".join(f"{keys[i]}({res[i]:+.2f})" for i in np.argsort(-np.abs(res))[:5]))
big = [k for k in keys if k in ("JPN", "CHE", "CHN", "GBR", "DEU", "BRA", "TUR", "ARG", "INR", "IND", "MEX", "KOR")]
print("\n 几个大家熟悉的:")
print(f" {'':<6}{'通胀,比美国多出(累计)':>20}{'汇率(本币/美元)的变化':>20}")
for k in ("JPN", "CHE", "CHN", "GBR", "DEU", "KOR", "MEX", "BRA", "IND", "TUR"):
i = keys.index(k)
print(f" {k:<6}{math.expm1(rel[i]):>20.1%}{math.expm1(dep[i]):>20.1%}")
# 二、实际有效汇率:看"偏离",有多大、有多久
y0, y1 = REER_YEARS
print(f"\n二、BIS 实际有效汇率(广义,2020 年 = 100),{y0}–{y1}(年平均)")
for k, nm in (("US", "美国"), ("JP", "日本"), ("CN", "中国")):
s = REER[k]
i_max, i_min = int(np.argmax(s)), int(np.argmin(s))
print(f" {nm}:最高 {s[i_max]:.1f}({y0 + i_max} 年),最低 {s[i_min]:.1f}({y0 + i_min} 年),最高是最低的 {s[i_max] / s[i_min]:.2f} 倍;{y0} 年 {s[0]:.1f},{y1} 年 {s[-1]:.1f}")
输出:
一、相对购买力平价:146 个经济体,2000–2023 年。(去掉了换过货币的 11 个:加入欧元区、或改用美元)
回归:本币对美元的贬值(对数)= -0.04 + 0.90 × (本国通胀比美国多多少);R² = 0.84
购买力平价的预测:斜率 = 1(通胀高 1%,货币,贬值 1%)。实际斜率 0.90
自助法 2000 次,斜率的 95% 区间 [0.82, 0.98]
按'每年比美国多多少通胀'分三组(按 rel 排序,各约 1/3):
组 每年多出的通胀 每年贬值 两者之差(每年)
通胀低 -0.5% -0.3% +0.2%
通胀中 1.4% 0.9% -0.6%
通胀高 7.0% 6.1% -0.9%
偏离回归线最多的 5 个(实际贬值,减去,回归线预测):LBY(+1.86),IRQ(-1.70),SRB(-0.95),STP(-0.85),TUR(+0.85)
几个大家熟悉的:
通胀,比美国多出(累计) 汇率(本币/美元)的变化
JPN -38.7% 30.4%
CHE -35.7% -46.8%
CHN -7.7% -14.4%
GBR -1.0% 21.7%
DEU -13.0% -14.6%
KOR -0.1% 15.5%
MEX 57.2% 87.8%
BRA 130.2% 173.0%
IND 125.6% 83.8%
TUR 2191.3% 3696.9%
二、BIS 实际有效汇率(广义,2020 年 = 100),1994–2025(年平均)
美国:最高 109.5(2025 年),最低 80.1(2011 年),最高是最低的 1.37 倍;1994 年 86.5,2025 年 109.5
日本:最高 174.4(1995 年),最低 71.5(2024 年),最高是最低的 2.44 倍;1994 年 172.6,2025 年 72.5
中国:最高 104.3(2015 年),最低 55.9(1994 年),最高是最低的 1.87 倍;1994 年 55.9,2025 年 88.6
逐段看:
- 长期,相当好:回归的斜率 0.90(95% 区间 0.82–0.98),R² = 0.84。通胀高 1%,本币,贬值约 0.9%。分三组看:通胀,最高的那 1/3,每年,比美国多出约 7.0%,货币每年,贬值 6.1%;通胀最低的 1/3,比美国低 0.5%,货币,每年,升值 0.3%。通胀的差距,解释了,大部分的汇率的变化。
- 数据处理:加入欧元区或改用美元的 11 个经济体,2000 年的汇率,用的是旧货币的单位,不能比,我去掉了(代码里,列出来了)。
- 有系统的偏离:斜率,略小于 1(0.90);有些国家,偏离,很大:日本,累计通胀,比美国低 38.7%(按平价,日元,应该升值),可是,日元/美元的汇率数字,反而,上涨了 30.4%(日元,实际贬值);瑞士,通胀,比美国低 35.7%,瑞郎/美元的数字,下降了 46.8%(瑞郎,升值得,比平价预测的,还多);中国,通胀,比美国低 7.7%,元/美元的数字,下降了 14.4%(人民币,升值)。
- 短期和中期,偏离很大,也很久:BIS 的实际有效汇率(2020 年 = 100):日本,1995 年 174,2024 年 72,最高是最低的 2.44 倍;中国,1994 年 56,2015 年 104;美国,2011 年 80,2025 年 110。**如果,购买力平价,成立,实际汇率,应该,不动。**它动了,而且,动得很大。
3.3 一个"谜":偏离,为什么,这么久才消失
Kenneth Rogoff 1996 年(《购买力平价之谜》,Journal of Economic Literature,34 卷,647–668 页):据摘要,实际汇率,偏离平价之后,向平价回归的"半衰期",约 3 到 5 年;这对"物价黏性"能解释的速度(约 1 到 2 年),太慢了;而短期的波动,又太大。这就是"谜"。(半衰期的估计,是一类研究的汇总,不是一个精确的数;也有后续研究,估计更短,或者,区间极宽。)
两个常被提到的理论,值得知道:
- 过度反应(overshooting):Rudiger Dornbusch 1976 年(Journal of Political Economy,84 卷 6 期,1161–1176 页):如果,商品的价格,黏,而资产的价格(汇率),快,那么,货币政策的冲击(比如,降息),会让汇率,先冲过头,再慢慢回来。(和第 32 讲的价格黏性,同一个思想。)
- 汇率,几乎是随机游走:Richard Meese 和 Kenneth Rogoff 1983 年(Journal of International Economics,14 卷,3–24 页):据转述,70 年代的结构性汇率模型,在样本外,预测汇率,不比"随机游走"(明天 = 今天)更好;这个结果,在短期预测上,尤其明显。这和第 38 讲:有效市场,是同一个味道。
四、国际收支:一个国家的账本
4.1 账本怎么记
国际收支(balance of payments),记录,一个国家,和世界其他地方,之间,所有的经济交易。分两大块:
- 经常账户:(1)货物和服务的进出口(贸易余额);(2)初次收入(对外投资的收益,和劳动报酬);(3)二次收入(转移,比如,侨汇、援助)。
- 资本和金融账户:买卖资产:直接投资、证券投资、其他投资(贷款、存款)、和央行的外汇储备。
它们,有一个恒等式:经常账户余额 + 资本和金融账户(净流出)= 0(加上统计误差)。直觉:你,花得比挣得多(经常账户逆差),多出来的钱,必须,从别处来:向外国人借,或者,卖掉资产给外国人。反过来:顺差,你,对外国人,是净的贷出者、买资产的人。所以,逆差,必然伴随,资产的净流入,两者,是同一件事的两面。
4.2 另一个视角:储蓄和投资
第 27 讲:GDP 的支出法,Y = C + I + G + NX。把它,重新排:NX = Y − C − G − I = S − I,其中,S = Y − C − G,是国民储蓄。(把"收入汇回"之类,先忽略)。所以:
经常账户余额(≈ NX)= 储蓄 − 投资
直觉:逆差,就是,国内的投资,超过了国内的储蓄,差的部分,由外国人的储蓄,来补。顺差,是,储蓄,超过了国内投资,多出来的,借给外国人。 一个国家,经常账户的状况,是它储蓄和投资的故事,不只是"贸易"的故事。
我们用世界银行的数据,检验这个恒等式,并看几个大国。
import numpy as np
# 数据:世界银行 WDI。DATA:2023 年,每个经济体,(经常账户余额,国民总储蓄,总投资),都是占 GDP 的%。共 157 个经济体。
DATA = {
"ABW": (5.2, 13.9, 18.4), "AGO": (3.9, 16.1, 12.4), "ALB": (-1.7, 22.2, 23.4), "ARE": (13.9,
33.3, 26.6), "ARG": (-3.4, 16.2, 19.4), "ARM": (-3.5, 20.2, 22.9), "AUS": (-0.4, 23.8,
23.9), "AUT": (1.3, 27.7, 26.0), "AZE": (11.5, 29.5, 17.7), "BEL": (0.4, 25.7, 25.3), "BEN":
(-8.2, 30.3, 34.5), "BFA": (-5.1, 13.7, 20.3), "BGD": (-1.6, 34.9, 31.0), "BGR": (-1.2,
20.6, 19.8), "BHR": (5.8, 35.1, 29.2), "BHS": (-7.0, 18.9, 22.9), "BIH": (-2.3, 20.8, 27.0),
"BLR": (-1.0, 26.5, 24.7), "BLZ": (-0.6, 20.6, 18.9), "BMU": (15.3, 43.4, 11.2), "BOL":
(-0.1, 14.0, 19.0), "BRA": (-1.2, 15.0, 15.8), "BRN": (12.9, 45.9, 29.6), "BTN": (-33.9,
17.6, 45.3), "BWA": (1.5, 33.3, 30.1), "CAN": (-0.7, 21.9, 23.6), "CHE": (5.9, 34.3, 28.6),
"CHL": (-3.1, 20.1, 23.3), "CHN": (1.4, 42.6, 41.1), "CIV": (-8.1, 16.5, 24.5), "CMR":
(-4.1, 14.9, 19.3), "COD": (-5.6, 31.7, 34.1), "COL": (-2.3, 13.2, 16.4), "COM": (-1.7,
12.0, 13.3), "CPV": (-2.8, 20.8, 21.7), "CRI": (-1.4, 13.2, 15.8), "CYP": (-9.7, 11.7,
21.5), "CZE": (-0.1, 28.8, 28.2), "DEU": (5.5, 27.6, 22.0), "DJI": (18.5, 14.8, -3.7),
"DNK": (9.7, 34.7, 23.6), "DOM": (-3.7, 24.1, 27.8), "DZA": (2.6, 40.8, 37.6), "ECU": (2.0,
22.5, 20.7), "EGY": (-3.2, 14.8, 16.5), "ESP": (2.7, 23.9, 21.1), "EST": (-1.5, 23.8, 25.1),
"ETH": (-3.5, 20.1, 22.2), "FIN": (-0.9, 22.1, 23.0), "FJI": (-6.6, 13.2, 19.8), "FRA":
(-0.9, 21.8, 22.9), "GBR": (-3.6, 14.9, 18.5), "GEO": (-5.5, 19.4, 25.0), "GHA": (-0.9, 9.2,
10.1), "GIN": (8.5, 9.3, 23.4), "GMB": (-5.0, 19.0, 27.4), "GNB": (-7.7, 18.3, 26.2), "GRC":
(-6.8, 9.1, 16.2), "GTM": (3.1, 19.6, 16.5), "HKG": (8.4, 24.6, 16.2), "HND": (-4.2, 17.5,
22.2), "HRV": (0.7, 25.4, 24.6), "HTI": (-3.5, 13.1, 13.9), "HUN": (-0.0, 26.2, 26.2),
"IDN": (-0.1, 35.9, 30.3), "IND": (-0.9, 34.4, 34.5), "IRL": (7.9, 34.1, 26.7), "IRQ":
(10.6, 41.1, 20.3), "ISL": (-1.4, 24.2, 25.4), "ISR": (2.4, 29.6, 26.4), "ITA": (0.3, 23.3,
23.1), "JPN": (3.6, 31.4, 27.8), "KAZ": (-3.2, 26.9, 28.2), "KEN": (-2.8, 16.0, 16.6),
"KGZ": (-44.9, 9.7, 34.5), "KHM": (1.3, 38.8, 33.3), "KIR": (-1.8, 16.8, 24.7), "KOR": (1.8,
33.4, 31.9), "KWT": (31.1, 48.8, 17.8), "LBN": (-28.1, -12.5, 1.9), "LBY": (4.2, 25.9,
16.9), "LKA": (1.7, 26.0, 24.3), "LSO": (-7.7, 21.1, 27.1), "LTU": (1.1, 23.7, 22.6), "LUX":
(6.9, 15.8, 16.4), "LVA": (-5.6, 20.7, 24.7), "MAC": (29.3, 44.6, 15.3), "MAR": (-1.0, 28.0,
29.0), "MDA": (-11.1, 8.8, 20.1), "MDG": (-2.6, 15.5, 21.4), "MDV": (-21.1, 12.2, 33.1),
"MEX": (-0.6, 19.9, 23.3), "MHL": (15.7, 29.3, 19.3), "MKD": (0.3, 30.0, 29.6), "MLI":
(-6.5, 14.9, 21.7), "MLT": (6.5, 26.1, 19.9), "MNE": (-11.1, 14.2, 25.4), "MNG": (0.6, 33.5,
33.9), "MOZ": (-10.5, 2.7, 19.5), "MRT": (-9.0, 32.1, 44.5), "MUS": (-5.0, 20.7, 19.9),
"MWI": (-12.3, 2.5, 14.5), "MYS": (1.1, 23.9, 22.8), "NAM": (-15.0, 11.5, 28.1), "NER":
(-13.8, 17.4, 30.1), "NIC": (8.2, 29.9, 22.2), "NLD": (9.6, 29.5, 20.1), "NOR": (17.2, 37.2,
23.6), "NPL": (2.5, 36.2, 31.1), "NZL": (-6.1, 18.6, 24.1), "OMN": (2.0, 29.0, 26.7), "PAK":
(-0.3, 13.1, 14.0), "PAN": (-3.2, 35.0, 37.5), "PER": (0.5, 20.2, 19.6), "PHL": (-2.8, 27.3,
23.4), "PLW": (-48.6, -13.0, 35.7), "POL": (1.5, 19.1, 17.7), "PRT": (0.6, 20.7, 20.5),
"PRY": (0.3, 20.5, 20.3), "PSE": (-15.5, 14.6, 25.1), "ROU": (-7.0, 19.4, 26.2), "RUS":
(2.4, 30.3, 27.3), "RWA": (-11.1, 23.1, 38.4), "SAU": (2.1, 31.9, 29.8), "SDN": (-5.2, 7.9,
2.2), "SEN": (-19.8, 22.9, 42.3), "SGP": (16.4, 37.9, 21.1), "SLB": (-11.8, 5.7, 21.2),
"SLE": (-7.9, 11.6, 19.7), "SLV": (-1.7, 17.3, 21.5), "SMR": (22.0, 38.6, 16.6), "SRB":
(-2.4, 22.6, 24.6), "STP": (-11.2, 2.2, 6.2), "SVK": (-3.0, 17.2, 19.7), "SVN": (4.5, 27.4,
22.5), "SWE": (6.2, 31.2, 25.3), "SWZ": (2.2, 24.3, 20.8), "SYC": (-7.1, 7.1, 24.4), "THA":
(1.6, 25.6, 22.4), "TJK": (4.8, 35.3, 31.7), "TLS": (-9.3, -8.5, 20.5), "TON": (-5.1, 18.0,
25.9), "TUN": (-2.3, 4.9, 8.2), "TUR": (-3.7, 31.7, 34.6), "TZA": (-3.7, 36.2, 41.0), "UGA":
(-7.4, 20.5, 22.8), "UKR": (-5.8, 12.8, 18.1), "URY": (-3.0, 14.7, 17.7), "USA": (-3.3,
17.1, 21.6), "UZB": (-7.3, 29.8, 33.0), "VEN": (0.6, 17.4, 5.3), "VNM": (5.9, 35.0, 31.7),
"WSM": (3.8, 26.2, 36.1), "XKX": (-7.2, 26.6, 33.9), "ZAF": (-1.1, 14.7, 15.4), "ZMB":
(-3.0, 34.5, 31.4), "ZWE": (0.4, 12.1, 10.0)
}
# SERIES:四个大经济体,1990–2023 年,同样三个指标。个别年份,没有数据。
SERIES = {
"USA": {
"ca": {1990: -1.3, 1991: 0.0, 1992: -0.8, 1993: -1.2, 1994: -1.7, 1995: -1.5, 1996: -1.5, 1997: -1.6, 1998: -2.4, 1999: -2.9, 2000: -3.8, 2001: -3.6, 2002: -4.1, 2003: -4.5, 2004: -5.1, 2005: -5.6, 2006: -5.8, 2007: -5.0, 2008: -4.6, 2009: -2.5, 2010: -2.7, 2011: -2.8, 2012: -2.4, 2013: -1.9, 2014: -2.0, 2015: -2.1, 2016: -2.0, 2017: -1.8, 2018: -2.0, 2019: -1.9, 2020: -2.8, 2021: -3.6, 2022: -3.7, 2023: -3.3},
"sav": {1990: 18.8, 1991: 18.8, 1992: 17.7, 1993: 17.1, 1994: 17.9, 1995: 18.8, 1996: 19.7, 1997: 20.8, 1998: 21.4, 1999: 20.9, 2000: 20.8, 2001: 19.7, 2002: 18.4, 2003: 17.4, 2004: 17.7, 2005: 18.1, 2006: 19.2, 2007: 17.4, 2008: 15.1, 2009: 13.9, 2010: 15.4, 2011: 16.3, 2012: 18.4, 2013: 18.6, 2014: 19.7, 2015: 19.7, 2016: 18.6, 2017: 19.0, 2018: 19.2, 2019: 19.5, 2020: 18.4, 2021: 17.7, 2022: 18.3, 2023: 17.1},
"inv": {1990: 21.5, 1991: 20.1, 1992: 20.1, 1993: 20.4, 1994: 21.3, 1995: 21.3, 1996: 21.7, 1997: 22.4, 1998: 23.0, 1999: 23.4, 2000: 23.7, 2001: 22.2, 2002: 21.7, 2003: 21.7, 2004: 22.7, 2005: 23.4, 2006: 23.5, 2007: 22.6, 2008: 21.0, 2009: 17.8, 2010: 18.7, 2011: 19.0, 2012: 20.0, 2013: 20.4, 2014: 20.9, 2015: 21.4, 2016: 20.9, 2017: 21.2, 2018: 21.6, 2019: 21.7, 2020: 21.4, 2021: 21.4, 2022: 22.0, 2023: 21.6},
},
"CHN": {
"ca": {1990: 3.3, 1991: 3.5, 1992: 1.5, 1993: -2.6, 1994: 1.2, 1995: 0.2, 1996: 0.8, 1997: 3.8, 1998: 3.0, 1999: 1.9, 2000: 1.7, 2001: 1.3, 2002: 2.4, 2003: 2.6, 2004: 3.5, 2005: 5.7, 2006: 8.3, 2007: 9.8, 2008: 9.0, 2009: 4.7, 2010: 3.8, 2011: 1.8, 2012: 2.5, 2013: 1.5, 2014: 2.2, 2015: 2.6, 2016: 1.7, 2017: 1.5, 2018: 0.2, 2019: 0.6, 2020: 1.5, 2021: 1.6, 2022: 2.2, 2023: 1.4},
"sav": {1990: 36.6, 1991: 38.4, 1992: 40.5, 1993: 41.6, 1994: 41.6, 1995: 39.4, 1996: 38.6, 1997: 39.5, 1998: 38.2, 1999: 36.4, 2000: 35.6, 2001: 37.1, 2002: 38.7, 2003: 42.2, 2004: 45.4, 2005: 45.5, 2006: 47.8, 2007: 49.8, 2008: 51.3, 2009: 49.9, 2010: 50.8, 2011: 48.6, 2012: 48.2, 2013: 47.0, 2014: 47.3, 2015: 45.1, 2016: 43.9, 2017: 44.3, 2018: 43.8, 2019: 43.3, 2020: 43.5, 2021: 44.7, 2022: 44.8, 2023: 42.6},
"inv": {1990: 34.1, 1991: 35.5, 1992: 39.3, 1993: 43.5, 1994: 40.3, 1995: 39.1, 1996: 37.8, 1997: 35.7, 1998: 35.0, 1999: 34.2, 2000: 33.6, 2001: 35.5, 2002: 36.1, 2003: 39.4, 2004: 41.6, 2005: 40.2, 2006: 39.7, 2007: 40.2, 2008: 42.0, 2009: 44.9, 2010: 46.1, 2011: 46.3, 2012: 45.8, 2013: 45.9, 2014: 45.3, 2015: 42.7, 2016: 42.1, 2017: 42.5, 2018: 43.3, 2019: 42.7, 2020: 42.6, 2021: 42.7, 2022: 42.4, 2023: 41.1},
},
"DEU": {
"ca": {1990: 2.6, 1991: -1.5, 1992: -1.3, 1993: -1.0, 1994: -1.6, 1995: -1.3, 1996: -0.8, 1997: -0.6, 1998: -0.8, 1999: -1.4, 2000: -1.8, 2001: -0.4, 2002: 1.7, 2003: 1.3, 2004: 4.3, 2005: 4.4, 2006: 5.5, 2007: 6.5, 2008: 5.4, 2009: 5.7, 2010: 5.6, 2011: 6.1, 2012: 7.0, 2013: 6.6, 2014: 7.2, 2015: 8.1, 2016: 8.9, 2017: 8.1, 2018: 8.4, 2019: 7.9, 2020: 6.3, 2021: 6.9, 2022: 4.1, 2023: 5.5},
"sav": {1990: 24.8, 1991: 24.0, 1992: 23.7, 1993: 22.6, 1994: 22.8, 1995: 23.2, 1996: 22.7, 1997: 22.8, 1998: 23.2, 1999: 22.3, 2000: 22.1, 2001: 22.3, 2002: 21.8, 2003: 20.8, 2004: 23.3, 2005: 23.1, 2006: 25.4, 2007: 27.3, 2008: 26.3, 2009: 23.6, 2010: 25.1, 2011: 27.4, 2012: 26.5, 2013: 26.3, 2014: 27.4, 2015: 27.6, 2016: 28.7, 2017: 28.7, 2018: 30.0, 2019: 29.3, 2020: 28.0, 2021: 29.5, 2022: 27.0, 2023: 27.6},
"inv": {1990: 25.3, 1991: 26.2, 1992: 25.6, 1993: 24.2, 1994: 24.6, 1995: 24.5, 1996: 23.5, 1997: 23.4, 1998: 24.1, 1999: 23.8, 2000: 24.0, 2001: 22.8, 2002: 20.2, 2003: 19.6, 2004: 19.0, 2005: 18.7, 2006: 19.9, 2007: 20.8, 2008: 20.9, 2009: 18.0, 2010: 19.5, 2011: 21.3, 2012: 19.5, 2013: 19.8, 2014: 20.1, 2015: 19.5, 2016: 19.7, 2017: 20.7, 2018: 21.7, 2019: 21.4, 2020: 21.7, 2021: 22.7, 2022: 23.3, 2023: 22.0},
},
"JPN": {
"ca": {1996: 1.4, 1997: 2.1, 1998: 2.8, 1999: 2.4, 2000: 2.6, 2001: 1.9, 2002: 2.6, 2003: 3.0, 2004: 3.7, 2005: 3.5, 2006: 3.8, 2007: 4.6, 2008: 2.8, 2009: 2.7, 2010: 3.8, 2011: 2.1, 2012: 0.9, 2013: 0.9, 2014: 0.7, 2015: 3.0, 2016: 3.9, 2017: 4.0, 2018: 3.4, 2019: 3.4, 2020: 2.9, 2021: 3.8, 2022: 2.0, 2023: 3.6},
"sav": {1996: 34.9, 1997: 34.7, 1998: 33.4, 1999: 31.7, 2000: 32.2, 2001: 30.9, 2002: 29.8, 2003: 29.8, 2004: 30.3, 2005: 30.4, 2006: 30.8, 2007: 31.3, 2008: 29.7, 2009: 26.4, 2010: 27.3, 2011: 26.5, 2012: 25.9, 2013: 26.2, 2014: 27.1, 2015: 29.5, 2016: 30.1, 2017: 30.6, 2018: 30.5, 2019: 30.6, 2020: 29.7, 2021: 31.0, 2022: 30.2, 2023: 31.4},
"inv": {1990: 37.5, 1991: 37.0, 1992: 35.0, 1993: 33.7, 1994: 32.3, 1995: 32.3, 1996: 33.5, 1997: 32.7, 1998: 30.7, 1999: 29.3, 2000: 29.7, 2001: 29.0, 2002: 27.2, 2003: 26.8, 2004: 26.7, 2005: 27.0, 2006: 27.1, 2007: 26.8, 2008: 27.0, 2009: 23.7, 2010: 23.6, 2011: 24.5, 2012: 25.0, 2013: 25.4, 2014: 26.3, 2015: 26.6, 2016: 26.2, 2017: 26.6, 2018: 27.1, 2019: 27.3, 2020: 26.9, 2021: 27.3, 2022: 28.3, 2023: 27.8},
},
}
codes = sorted(DATA)
ca = np.array([DATA[k][0] for k in codes]); sav = np.array([DATA[k][1] for k in codes]); inv = np.array([DATA[k][2] for k in codes])
gap = sav - inv
# 一、恒等式:经常账户余额 ≈ 储蓄 − 投资
print(f"一、{len(codes)} 个经济体,2023 年:经常账户余额(占 GDP%),对(储蓄 − 投资)(占 GDP%)")
b, a = np.polyfit(gap, ca, 1)
print(f" 相关系数 {np.corrcoef(gap, ca)[0, 1]:.2f};回归 经常账户 = {a:+.2f} + {b:.2f} × (储蓄 − 投资);两者之差的中位数 {np.median(np.abs(gap - ca)):.1f} 个百分点,平均 {np.mean(np.abs(gap - ca)):.1f}")
print(" (两者,不会完全相等:国民储蓄,里面有汇回的收入、转移,统计口径,和误差;但,是同一件事的两个面。)")
print(f" {'':<6}{'经常账户':>9}{'储蓄':>8}{'投资':>8}{'储蓄−投资':>10}")
for k, nm in (("CHN", "中国"), ("DEU", "德国"), ("JPN", "日本"), ("KOR", "韩国"), ("IND", "印度"), ("BRA", "巴西"), ("GBR", "英国"), ("USA", "美国")):
print(f" {nm:<4}{DATA[k][0]:>9.1f}{DATA[k][1]:>8.1f}{DATA[k][2]:>8.1f}{DATA[k][1] - DATA[k][2]:>10.1f}")
# 二、几十年的变化
print("\n二、四个大经济体(占 GDP%):经常账户余额(储蓄、投资)")
yrs = (1990, 2000, 2006, 2010, 2015, 2023)
print(f" {'':<6}" + "".join(f"{y:>16}" for y in yrs))
for k, nm in (("USA", "美国"), ("CHN", "中国"), ("DEU", "德国"), ("JPN", "日本")):
cells = []
for y in yrs:
if y in SERIES[k]["ca"]:
cells.append(f"{SERIES[k]['ca'][y]:+5.1f}({SERIES[k]['sav'][y]:.0f},{SERIES[k]['inv'][y]:.0f})")
else:
cells.append("—")
print(f" {nm:<4}" + "".join(f"{c:>16}" for c in cells))
# 极值
for k, nm in (("USA", "美国"), ("CHN", "中国"), ("DEU", "德国")):
s = SERIES[k]["ca"]
ymax, ymin = max(s, key=s.get), min(s, key=s.get)
print(f" {nm}:经常账户,最高 {s[ymax]:+.1f}%({ymax} 年),最低 {s[ymin]:+.1f}%({ymin} 年)")
输出:
一、157 个经济体,2023 年:经常账户余额(占 GDP%),对(储蓄 − 投资)(占 GDP%)
相关系数 0.89;回归 经常账户 = -0.41 + 0.88 × (储蓄 − 投资);两者之差的中位数 0.6 个百分点,平均 2.4
(两者,不会完全相等:国民储蓄,里面有汇回的收入、转移,统计口径,和误差;但,是同一件事的两个面。)
经常账户 储蓄 投资 储蓄−投资
中国 1.4 42.6 41.1 1.5
德国 5.5 27.6 22.0 5.6
日本 3.6 31.4 27.8 3.6
韩国 1.8 33.4 31.9 1.5
印度 -0.9 34.4 34.5 -0.1
巴西 -1.2 15.0 15.8 -0.8
英国 -3.6 14.9 18.5 -3.6
美国 -3.3 17.1 21.6 -4.5
二、四个大经济体(占 GDP%):经常账户余额(储蓄、投资)
1990 2000 2006 2010 2015 2023
美国 -1.3(19,22) -3.8(21,24) -5.8(19,24) -2.7(15,19) -2.1(20,21) -3.3(17,22)
中国 +3.3(37,34) +1.7(36,34) +8.3(48,40) +3.8(51,46) +2.6(45,43) +1.4(43,41)
德国 +2.6(25,25) -1.8(22,24) +5.5(25,20) +5.6(25,20) +8.1(28,20) +5.5(28,22)
日本 — +2.6(32,30) +3.8(31,27) +3.8(27,24) +3.0(30,27) +3.6(31,28)
美国:经常账户,最高 +0.0%(1991 年),最低 -5.8%(2006 年)
中国:经常账户,最高 +9.8%(2007 年),最低 -2.6%(1993 年)
德国:经常账户,最高 +8.9%(2016 年),最低 -1.8%(2000 年)
逐段看:
- 恒等式,大体成立:157 个经济体,2023 年,经常账户,对(储蓄 − 投资),相关系数 0.89,斜率 0.88;两者之差的中位数,只有 0.6 个百分点(平均 2.4,因为口径、小经济体、统计误差)。图里,点,几乎,贴着 45 度线。
- 谁借,谁贷(2023):中国,储蓄 42.6%,投资 41.1%,经常账户 +1.4%;德国,储蓄 27.6%,投资 22.0%,+5.5%;日本,+3.6%;美国,储蓄 17.1%,投资 21.6%,−3.3%;英国,−3.6%。
- 几十年:美国,经常账户,一直,是负的,2006 年最低,−5.8%;中国,从 1990 年的 +3.3%,到 2007 年 +9.8%(最高),2023 年 +1.4%;德国,从 2000 年的 −1.8%,到 2016 年 +8.9%。
- 回答问题 2 的一部分:逆差,不是"输":它是,一个国家,投资,超过,储蓄。至于这是好事,还是坏事,要看,借来的钱,做了什么(第六节)。
五、汇率制度,和货币危机
5.1 三种制度
- 浮动汇率:汇率,由市场,供求决定;央行,不干预(或很少干预)。
- 固定(钉住)汇率:央行,承诺,把汇率,固定在某个水平(比如,1 美元 = 25 铢),并随时,用外汇储备,买卖,来维持它。
- 管理浮动:介于两者之间,央行,可以干预,但没有承诺一个固定的水平。
5.2 三元悖论
Robert Mundell 1963 年(Canadian Journal of Economics and Political Science,29 卷 4 期,475–485 页)和 Marcus Fleming 1962 年(IMF Staff Papers,9 卷;页码,各来源,略有出入,没有核对)的分析,后来,常被总结为"不可能三角"(三元悖论):下面三件事,不能同时拥有:
- 固定汇率(汇率稳定);
- 资本自由流动;
- 独立的货币政策(自己,决定利率)。
直觉:如果,汇率,固定,资本,又能自由进出,那么,你的利率,必须,和别国(比如,美国)的一样,否则,资本,会,涌向,利率高的地方,让你的汇率,守不住。你,要么放弃固定汇率,要么放弃资本自由流动,要么放弃独立的货币政策。 Maurice Obstfeld、Jay Shambaugh 和 Alan Taylor 2005 年(Review of Economics and Statistics,87 卷 3 期,423–438 页)用 100 多年的数据,检验了这个"三元悖论",他们的结论,大体,支持它的逻辑(据摘要)。
Hélène Rey 2013 年(Jackson Hole 会议论文)提出一个批评:由于全球的"金融周期"(和美国的货币政策、全球的风险情绪,有关),即使,汇率,是浮动的,独立的货币政策,也只有在管理资本流动时,才可能,所以,三元,变成了"二难"。(这一点,有争议。)
5.3 货币危机:一个最小的模型
为什么,固定汇率,会突然崩溃?Paul Krugman 1979 年(《国际收支危机的模型》,Journal of Money, Credit and Banking,11 卷 3 期,311–325 页)给了一个最简单的解释(“第一代"模型):
- 央行,要维持固定汇率,需要有外汇储备;
- 可是,政府,一直,在用国内信贷,给财政赤字融资(印钱),国内信贷,不断增长,要保持货币供给不变,储备,就被一点一点,消耗掉;
- 储备,终有用完的那一天。聪明的投机者,预见到,储备,会用完,不会等到那一天:他们,会在之前,一次性,把央行的储备,买光(“攻击”)。因为,如果,等到储备用完,汇率,必然贬值,早买外币的人,赚钱。所以,攻击,会比储备耗尽,更早发生。
import math
# 一、第一代货币危机模型(Krugman 1979,最简化的版本)
# 一个国家,固定汇率 e = 1。央行手里:国内信贷 D,外汇储备 R。货币供给 M = D + R,钉死在 M̄ = 100(固定汇率下,货币需求不变)。
# 政府,为了给赤字融资,让国内信贷,每年增长 μ(D 越多,储备 R = 100 − D,就越少:储备,在为赤字买单)。
# 如果,储备用完,汇率,就浮动。浮动时(R = 0,M = D),"影子汇率" = 如果现在就让它浮动,汇率会是多少:ln(影子汇率) = ln D − ln M̄ + α μ。
# 当影子汇率,涨到 = 固定汇率(1)时,投机者,会一次性,把储备,全部买光:攻击发生,早于储备"自然耗尽"。α:货币需求,对预期贬值的敏感度。
M_BAR, D0, ALPHA = 100.0, 40.0, 5.0
print(f"一、固定汇率下,国内信贷增长,拖垮储备:M̄ = {M_BAR:.0f},D₀ = {D0:.0f},R₀ = {M_BAR - D0:.0f},α = {ALPHA:.0f}")
print(f" {'信贷增速 μ':>12}{'储备自然耗尽(年)':>18}{'攻击发生(年)':>14}{'攻击时,储备剩下':>16}{'提前':>8}")
for mu in (0.03, 0.05, 0.08, 0.12):
T_exhaust = math.log(M_BAR / D0) / mu
D_attack = M_BAR * math.exp(-ALPHA * mu) # 影子汇率 = 1 时的 D
T_attack = math.log(D_attack / D0) / mu
print(f" {mu:>12.0%}{T_exhaust:>18.1f}{T_attack:>14.1f}{M_BAR - D_attack:>16.1f}{T_exhaust - T_attack:>8.1f}")
mu = 0.05
print(f"\n μ = {mu:.0%} 时,逐年:(看起来,一切正常,直到攻击)")
print(f" {'年':>4}{'国内信贷 D':>10}{'储备 R':>8}{'影子汇率':>10}")
D_attack = M_BAR * math.exp(-ALPHA * mu); T_attack = math.log(D_attack / D0) / mu
for t in (0, 3, 6, 9, 12, 13):
D = D0 * math.exp(mu * t); shadow = math.exp(math.log(D) - math.log(M_BAR) + ALPHA * mu)
print(f" {t:>4}{D:>10.1f}{M_BAR - D:>8.1f}{shadow:>10.3f}")
print(f" 第 {T_attack:.1f} 年:影子汇率 = 1.000,投机者,一次性,买光剩下的 {M_BAR - D_attack:.1f} 的储备;之后,汇率,浮动,贬值。")
# 二、真实的几次:汇率,在几个日子里,发生了什么(数据:FRED,日度,美联储)
# 每一行:(名称,序列怎么报价,日期 1,值 1,日期 2,值 2)
EPISODES = [
("泰国 1997:放弃钉住美元", "泰铢/美元", "1997-07-01", 24.52, "1997-07-02", 30.18),
("泰国 1997:之后", "泰铢/美元", "1997-06-30", 25.15, "1998-01-12", 56.10),
("英国 1992:退出汇率机制(ERM)", "美元/英镑", "1992-09-15", 1.8715, "1992-12-31", 1.5130),
("瑞士 2015:取消对欧元的汇率下限", "瑞郎/美元", "2015-01-14", 1.0172, "2015-01-16", 0.8488),
("日本 1985:广场协议之后", "日元/美元", "1985-09-20", 240.10, "1987-12-31", 121.25),
("中国 2005:汇改", "元/美元", "2005-07-21", 8.2765, "2005-07-22", 8.1111),
("中国 2015:811 汇改", "元/美元", "2015-08-10", 6.2094, "2015-08-13", 6.3982),
]
print("\n二、真实的几个日子(日度数据):")
print(f" {'事件':<24}{'区间':<26}{'汇率':<22}{'该货币对美元的价值':>14}")
for name, quote, d1, v1, d2, v2 in EPISODES:
value_change = (v2 / v1 - 1) if quote.endswith("英镑") else (v1 / v2 - 1) # 美元/英镑:数字变大,英镑升值;其他,是 本币/美元:数字变大,本币贬值
print(f" {name:<22}{d1} → {d2:<12}{v1:>8g} → {v2:<8g}{value_change:>+14.1%}")
print(" ('该货币对美元的价值':正数,是升值;负数,是贬值。)")
输出:
一、固定汇率下,国内信贷增长,拖垮储备:M̄ = 100,D₀ = 40,R₀ = 60,α = 5
信贷增速 μ 储备自然耗尽(年) 攻击发生(年) 攻击时,储备剩下 提前
3% 30.5 25.5 13.9 5.0
5% 18.3 13.3 22.1 5.0
8% 11.5 6.5 33.0 5.0
12% 7.6 2.6 45.1 5.0
μ = 5% 时,逐年:(看起来,一切正常,直到攻击)
年 国内信贷 D 储备 R 影子汇率
0 40.0 60.0 0.514
3 46.5 53.5 0.597
6 54.0 46.0 0.693
9 62.7 37.3 0.806
12 72.9 27.1 0.936
13 76.6 23.4 0.984
第 13.3 年:影子汇率 = 1.000,投机者,一次性,买光剩下的 22.1 的储备;之后,汇率,浮动,贬值。
二、真实的几个日子(日度数据):
事件 区间 汇率 该货币对美元的价值
泰国 1997:放弃钉住美元 1997-07-01 → 1997-07-02 24.52 → 30.18 -18.8%
泰国 1997:之后 1997-06-30 → 1998-01-12 25.15 → 56.1 -55.2%
英国 1992:退出汇率机制(ERM) 1992-09-15 → 1992-12-31 1.8715 → 1.513 -19.2%
瑞士 2015:取消对欧元的汇率下限 2015-01-14 → 2015-01-16 1.0172 → 0.8488 +19.8%
日本 1985:广场协议之后 1985-09-20 → 1987-12-31 240.1 → 121.25 +98.0%
中国 2005:汇改 2005-07-21 → 2005-07-22 8.2765 → 8.1111 +2.0%
中国 2015:811 汇改 2015-08-10 → 2015-08-13 6.2094 → 6.3982 -3.0%
('该货币对美元的价值':正数,是升值;负数,是贬值。)
逐段看:
- 模型:国内信贷,每年,增长 5%,储备,从 60,一路,降低;储备,“自然"耗尽,要 18.3 年;但,投机者,在第 13.3 年,就发动攻击,那时,储备,还有 22.1;攻击,比储备耗尽,提前了 5.0 年,恰好,等于 α(货币需求,对预期贬值的敏感度)。信贷,增长得越快,越早:μ = 12%,只要 2.6 年。
- “一切正常,直到崩溃”:逐年看,储备,一直,有很多;没有任何一个"警报”,直到攻击的那一刻,一次性归零。
- 真实的几个日子(FRED 日度数据):泰国,1997 年 7 月 2 日,放弃钉住美元:一天,从 24.52,到 30.18,铢,贬值了 18.8%;到 1998 年 1 月 12 日,56.1 铢/美元,相对于 1997 年 6 月 30 日,铢的美元价值,下降了 55.2%。英国,1992 年,退出汇率机制(9 月 16 日),到年底,英镑,贬值 19.2%。瑞士,2015 年 1 月,取消对欧元的汇率下限,两天里,瑞郎,对美元,升值了 19.8%。日本,1985 年广场协议之后(到 1987 年底),日元,从 240,到 121,升值了 98%。中国,2005 年 7 月 21 日到 22 日(数据里),汇改,人民币,一天,升值 2.0%;2015 年 8 月 10 日到 13 日,贬值 3.0%。
- 这些,是描述:每一次,背后,原因,不一样(政策的转变、投机、协议),我这里,没有一一展开。
第二代模型(Maurice Obstfeld 1996 年,European Economic Review,40 卷,1037–1047 页,据摘要)强调,危机,可以是自我实现的:如果,大家,都认为,政府,守不住,就都去攻击,政府,真的,守不住;如果,大家,不攻击,政府,就守得住。这和第 35 讲的银行挤兑,是同一个逻辑:多重均衡。
六、有争议的问题
按"理论预测 → 证据与局限 → 分歧在哪 → 价值判断留给读者"来写。这里,有两个问题。
6.1 问题 A:经常账户逆差,是不是问题
理论预测什么:逆差,是,国内投资,超过储蓄;本身,没有好坏。一个国家,借钱,去投资,只要,投资的回报,超过,借钱的成本,就是好事(第 34 讲,r 和 g 的比较);如果,借钱,只是,用于消费,而且,一直借,外债,会越来越重,可能,走向危机(第五节)。
证据怎么说:
- 美国:几十年的逆差,没有崩溃,而且,据 Pierre-Olivier Gourinchas 和 Hélène Rey(2005 年工作论文,2007 年收入 NBER 的 G7 Current Account Imbalances 一书,11–66 页):美国,对外持有的资产,回报,高于,外国人持有的美国的资产(“过高的特权”,exorbitant privilege);美国,在世界上,像是一个"风险投资家”:借入(回报低的、安全的)债券,投出(回报高的)股权和直接投资。他们的研究,据摘要,用 1952 年起的市场价值数据。
- 其他的例子:1997 年的泰国:逆差,加上固定汇率,加上以外币借的债,常被总结为,这类危机的共同特征(第五节;我没有展开)。德国、日本、中国,长期的顺差,也不是"赢":本国的储蓄,借给了外国人,要等将来,才能"收回"。
- 局限:(1)美国,是储备货币的发行者,世界各国,愿意,持有美元资产,这个"特权",别的国家,没有;(2)一个国家,是否会遇到"突然停止"(外国资金,突然,不再流入),取决于,债务是用什么币种,借的、期限多长;(3)这里,没有统计"双赤字"(财政赤字,和经常账户赤字,是否,联动),各研究,结论,不一致,我不引用具体的数字。
分歧在哪:
- “全球储蓄过剩”:Ben Bernanke 2005 年 3 月 10 日(在里士满的 Sandridge 讲座):美国的逆差,不全是"美国自己造成的",而是,由于,世界上其他地方(尤其是,一些新兴经济体,和石油出口国),储蓄,超过了投资,资金,流向了美国。
- “国内的低储蓄”:另一种看法:美国自己的低储蓄,和金融体系的因素,才是主因。(这是常见的争论,我没有核对具体的研究。)
- 这两种说法,在数据上,看起来,是同一个恒等式的两面(第 4.2 节:S − I),所以,区分"谁是因,谁是果",很难。
价值判断(留给你):
- 顺差,是不是"该调整"的责任? 逆差国,要减少花费;顺差国,要增加花费、或者减少储蓄;谁,该先调整?责任,对称吗?
- 汇率,该由市场,还是政府管? 把汇率,压得更低,对出口行业,有利,对进口品的消费者、持有本币资产的储蓄者,不利;这个取舍,谁来做?
- 资本,该不该自由流动? 自由,让资金,更有效率地,流动,也让危机,更容易传染(5.2 节)。你,更看重哪个?
- 外债,多少,算太多? 经济学,能算,利息、增长、币种;“多大的风险,值得承担”,是价值判断。
6.2 问题 B:汇率,能不能被预测
理论预测什么:无抛补的利率平价(UIP):如果,两国的资产,风险相同,市场,没有套利机会,那么,高利率的货币,预期,会贬值,贬值的幅度,正好,抵消利率差。所以,利率差,不会,让你,白赚钱。(和第 38 讲,有效市场,是同一个逻辑。)
证据怎么说:Eugene Fama 1984 年(Journal of Monetary Economics,14 卷 3 期,319–338 页):据转述,用远期汇率,检验,发现,斜率,不是 1,而是负的:也就是说,高利率的货币,反而倾向于升值,和 UIP,相反(“远期溢价之谜”)。我们,用 FRED 的数据,做一个简单的检验。
import io, math, urllib.request
import numpy as np
# 数据:FRED(圣路易斯联储),月度。汇率:月平均;利率:OECD 的三个月银行间利率(%,年率)。区间:2000-01 至 2024-12。需要联网;FRED 偶尔修订数据,小数位可能有极小差别。
def fred(sid):
txt = urllib.request.urlopen(f"https://fred.stlouisfed.org/graph/fredgraph.csv?id={sid}", timeout=60).read().decode()
out = {}
for line in txt.splitlines()[1:]:
d, v = line.split(",")[:2]
if v not in ("", "."):
out[d[:7]] = float(v)
return out
months = [f"{y}-{m:02d}" for y in range(2000, 2025) for m in range(1, 13)]
# 每个货币:(名称,汇率序列,是不是"美元/外币"(否则,是"外币/美元"),利率序列)
CUR = [("日元", "EXJPUS", False, "IR3TIB01JPM156N"), ("英镑", "EXUSUK", True, "IR3TIB01GBM156N"), ("瑞郎", "EXSZUS", False, "IR3TIB01CHM156N"),
("加元", "EXCAUS", False, "IR3TIB01CAM156N"), ("澳元", "EXUSAL", True, "IR3TIB01AUM156N"), ("欧元", "EXUSEU", True, "IR3TIB01EZM156N")]
i_us = fred("IR3TIB01USM156N")
H = 3 # 持有期:3 个月(和三个月利率匹配)
data = {}
for name, sx, usd_per_foreign, si in CUR:
fx, ir = fred(sx), fred(si)
S = {m: (fx[m] if usd_per_foreign else 1 / fx[m]) for m in months if m in fx} # S = 1 单位外币,值多少美元
rows = []
for k in range(0, len(months) - H, H): # 不重叠:每隔 3 个月,取一个点
m0, m1 = months[k], months[k + H]
if m0 in S and m1 in S and m0 in ir and m0 in i_us:
rows.append((math.log(S[m1] / S[m0]), (i_us[m0] - ir[m0]) / 100 * H / 12, (ir[m0] - i_us[m0]) / 100 * H / 12))
data[name] = np.array(rows)
# 一、"抛补之外的利率平价"(UIP):外币升值的幅度 = 美国利率 − 外国利率(单位:每个持有期)。检验:Δs = a + b × (i_美 − i_外),UIP:b = 1。
def ols(x, y):
xc = x - x.mean(); b = (xc * (y - y.mean())).sum() / (xc @ xc); a = y.mean() - b * x.mean()
res = y - a - b * x; se = math.sqrt((res @ res) / (len(x) - 2) / (xc @ xc))
return a, b, se
print("一、利率高的货币,会贬值吗?Δ ln(外币的美元价格),对(美国利率 − 外国利率),三个月,不重叠")
print(f" {'货币':<6}{'样本(季)':>8}{'斜率 b':>9}{'标准误':>8}{'b = 1 的 t':>11}{'b = 0 的 t':>11}")
allx, ally = [], []
for name, *_ in CUR:
r = data[name]; x, y = r[:, 1], r[:, 0]
a, b, se = ols(x, y); allx.append(x); ally.append(y)
print(f" {name:<4}{len(x):>10d}{b:>9.2f}{se:>8.2f}{(b - 1) / se:>11.1f}{b / se:>11.1f}")
x, y = np.concatenate(allx), np.concatenate(ally)
a, b, se = ols(x, y)
print(f" 合并:{len(x)} 个观测,斜率 {b:.2f},标准误 {se:.2f}(简单 OLS;各货币的观测,有相关,所以,标准误,偏小)")
print(" UIP 预测 b = 1。如果,b ≈ 0:利率差,对汇率的变化,没有预测力;如果 b < 0:高利率的货币,反而,倾向于升值。")
# 二、"套息交易":借美元,投到利率更高的货币,每季度,等权重,不计成本、不计保证金
print("\n二、一条规则:每个季度,对每种货币,利率比美国高,就借美元、买入外币;比美国低,就借外币、买入美元(不计交易成本)")
n = min(len(data[nm]) for nm, *_ in CUR)
port = np.zeros(n)
for name, *_ in CUR:
r = data[name][:n]
pos = np.sign(r[:, 2]) # 利率比美国高:+1
port += pos * (r[:, 2] + r[:, 0]) # 利差的收入 + 汇率变化
port /= len(CUR)
ann = port.mean() * 4; vol = port.std(ddof=1) * 2
print(f" {n} 个季度(2000–2024):平均年化收益 {ann:.2%},年化波动 {vol:.2%},夏普比率 {ann / vol:.2f}")
yr = port[: (n // 4) * 4].reshape(-1, 4).sum(axis=1)
print(f" 年度收益:最好 {yr.max():+.1%},最差 {yr.min():+.1%}({2000 + int(np.argmin(yr))} 年);亏钱的年份:{int((yr < 0).sum())}/{len(yr)}")
print(f" 最差的一个季度:{port.min():+.1%}")
输出:
一、利率高的货币,会贬值吗?Δ ln(外币的美元价格),对(美国利率 − 外国利率),三个月,不重叠
货币 样本(季) 斜率 b 标准误 b = 1 的 t b = 0 的 t
日元 89 0.85 1.14 -0.1 0.7
英镑 98 0.38 1.49 -0.4 0.3
瑞郎 98 -0.19 1.29 -0.9 -0.2
加元 98 -0.42 1.98 -0.7 -0.2
澳元 98 -1.11 1.33 -1.6 -0.8
欧元 98 -0.55 1.43 -1.1 -0.4
合并:579 个观测,斜率 0.09,标准误 0.43(简单 OLS;各货币的观测,有相关,所以,标准误,偏小)
UIP 预测 b = 1。如果,b ≈ 0:利率差,对汇率的变化,没有预测力;如果 b < 0:高利率的货币,反而,倾向于升值。
二、一条规则:每个季度,对每种货币,利率比美国高,就借美元、买入外币;比美国低,就借外币、买入美元(不计交易成本)
89 个季度(2000–2024):平均年化收益 0.92%,年化波动 4.18%,夏普比率 0.22
年度收益:最好 +14.5%,最差 -6.4%(2008 年);亏钱的年份:12/22
最差的一个季度:-6.6%
逐段看:
- 检验:6 种货币对美元,每 3 个月,一个观察(不重叠),共 579 个。UIP 预测,斜率 = 1。结果:合并的斜率,0.09(标准误 0.43)。各货币:日元 0.85,英镑 0.38,瑞郎 −0.19,加元 −0.42,澳元 −1.11,欧元 −0.55;标准误,都很大(1.1 到 2.0)。
- 怎么读:我们的数据,既不能拒绝 UIP(b = 1),也不能拒绝 b = 0:25 年,每种货币,不到 100 个季度,汇率,波动,很大,检验的力量,太弱。合并的估计,接近 0,说明:利率差,对未来 3 个月的汇率变化,几乎,没有预测力。(Fama 的样本,更早,得到负的斜率;Bussiere 等人 2017 年的 NBER 论文《新的 Fama 之谜》,据摘要:对 8 个汇率,重新检验,这个拒绝,在 2008 年金融危机期间,和之后十年,不再成立。)
- 一条规则:套息交易(借低利率的货币,投高利率的货币):不计成本,等权重,2000–2024,年化 0.92%,波动 4.18%,夏普 0.22;最差的一年,2008 年,−6.4%;亏钱的年份,12/22。平均,有一点正的收益,但,很弱,也很颠簸,且,集中,在危机时亏钱(和第 38 讲:动量,有崩溃,同一个味道)。
- 局限:我用的是 OECD 的三个月银行间利率,和汇率的月平均,不是,真实的、可交易的远期价格;没有成本。
分歧在哪:高利率货币的"超额收益",是对风险的补偿(危机时,会亏),还是,市场的错误?这又是第 38 讲的"联合假设"。另外,Meese–Rogoff(第三节):汇率,很难,被任何模型,预测。
价值判断:这里,主要是事实问题。涉及价值的,是,政策:该不该,对"套息交易"、短期的资本流动,加以限制(取决于,你,更看重,资本的自由,还是,金融的稳定)?
七、局限、常见误用
7.1 局限
- 模型是简化的:J 曲线、危机模型,用的是虚构的数字,只显示机制;
- 数据:购买力平价,用 CPI(包含,不可贸易品);一个国家的"贸易品"的价格,也许,更接近一价定律;
- 国际收支:只讲了恒等式,没有讲,各个子项、净国际投资头寸、估值效应;
- 文献:多数,引用的是摘要;Fleming 1962 的页码,没有核对;
- 这一讲没有讲:国际货币体系的历史(金本位、布雷顿森林);储备货币、美元的地位;数字货币;中国的汇率制度的细节、资本账户开放;欧元区;主权债务危机;
- 本讲,不是投资建议。
7.2 常见的误用
| 误用 | 正确的想法 |
|---|---|
| “汇率升值,就是变强了;贬值,就是变弱” | 升值、贬值,是价格的变化,不是"强弱";对出口行业、进口消费者、欠外币债的人,影响,不同 |
| “贬值,一定改善贸易余额” | 要看弹性(马歇尔–勒纳条件);短期,可能先变差(J 曲线) |
| “名义汇率不变,就是’稳定'” | 如果,国内,通胀更高,实际汇率,在升值,出口,在变难 |
| “购买力平价,是每天都成立的” | 长期,大体成立(斜率 0.90);中期,偏离,可以很大、很久 |
| “有贸易逆差,就是输了” | 逆差,是投资,超过储蓄;好坏,要看借来的钱,做了什么 |
| “顺差,就是赢了” | 顺差,是储蓄,借给了外国人;要将来,才能"收回";也可能,是国内投资,不足 |
| “固定汇率,更安全” | 固定汇率,会积累压力,崩溃时,可能很剧烈;不可能三角 |
| “高利率的货币,一定会贬值(所以,没有套利)” | 在数据里,利率差,对汇率,几乎,没有预测力;套息交易,有微弱的正收益,也有崩溃 |
八、小结
这一讲有六个想法,请带走:
- 汇率:1 单位外币,值多少本币;数字变大,是本币贬值;同一件事,“外币升值 5%",不等于,“本币贬值 5%"(是 4.76%)。
- 实际汇率:名义汇率,加上物价;通胀高,而名义汇率,不变,就是"实际升值”;贬值,要满足,马歇尔–勒纳条件,才改善贸易余额,短期,可能先变差。
- 购买力平价:长期,大体成立(146 个经济体,斜率 0.90,R² 0.84);中期,偏离,很大、很久(日元,实际有效汇率,1995 年 174,2024 年 72)。
- 国际收支:经常账户余额 ≈ 储蓄 − 投资(157 个经济体:相关 0.89);逆差,是投资,超过储蓄,借外国人的钱;好坏,看用途。
- 固定汇率,会突然崩溃:储备,一直,有很多,直到,攻击一次性,耗尽(提前 α 年);泰铢,一天,贬值 18.8%;不可能三角:固定汇率、资本自由、独立的货币政策,不能同时有。
- 有争议:逆差,是不是问题(全球储蓄过剩 vs 国内低储蓄);汇率,能不能被预测(利率差,几乎,预测不了;套息交易,年化 0.92%,夏普 0.22,2008 年亏 6.4%)。
下一讲,我们看,世界上,为什么,有的国家,富,有的国家,穷?发展、贫困与不平等:我们会回到第 29 讲的增长,看,穷国,能不能赶上,不平等,怎么测,下一讲:第 42 讲:发展、贫困与不平等。
思考题
1. 人民币,对美元,从 7.00 元/美元,变成 7.35 元/美元。一件 10 美元的进口品,人民币价格,变多少?美元,升值了几个百分点?人民币,贬值了几个百分点?
提示:10 × 7.35 = 73.5 元(原来 70 元);美元升值:7.35 ÷ 7.00 − 1 = 5%;人民币贬值:1 − 7.00 ÷ 7.35 ≈ 4.76%。不一样。
2. 一个国家,每年通胀 10%,美国 2%。按相对购买力平价,如果,它的货币,现在,是 1 单位本币/美元,5 年后,应该是多少?
提示:1 × (1.10 ÷ 1.02)^5 ≈ 1.459:贬值,约 46%(按"本币/美元"的数字上升)。5 年里,通胀,比美国,累计,多约 38%(对数),汇率,也应该,贬值同样的幅度。
3. 马歇尔–勒纳:起点,出口 = 进口 = 100;贬值 10%。(a)出口弹性 0.3,进口弹性 0.4,余额变成多少?(b)出口弹性 0.6,进口弹性 0.5,呢?
提示:(a)出口,100 × (1 + 0.3 × 0.1) = 103;进口,100 × 1.1 × (1 − 0.4 × 0.1) = 105.6;余额 −2.6(弹性之和 0.7 < 1,变差)。(b)出口 106;进口 110 × 0.95 = 104.5;余额 +1.5(之和 1.1 > 1,改善)。
4. 一个国家:GDP = 1000,消费 650,投资 250,政府购买 150。净出口、国民储蓄、经常账户,各是多少?这个国家,是借,还是贷?
提示:NX = 1000 − 650 − 250 − 150 = −50;储蓄 S = 1000 − 650 − 150 = 200;S − I = 200 − 250 = −50,等于 NX。逆差 50:投资,比储蓄,多 50,要向外国人借(或卖资产)50。
5. 货币危机模型:M̄ = 100,D₀ = 40,α = 5,信贷增速 μ = 10%。(a)储备,自然耗尽,要几年?(b)攻击,发生在第几年?(c)攻击时,储备,还剩多少?(d)攻击,比耗尽,提前几年?
提示:(a)ln(100 ÷ 40) ÷ 0.10 ≈ 9.16 年;(b)D_攻击 = 100 × e^(−αμ) = 100 × e^(−0.5) ≈ 60.65;ln(60.65 ÷ 40) ÷ 0.10 ≈ 4.16 年;(c)100 − 60.65 ≈ 39.3;(d)9.16 − 4.16 = 5.0 年:恰好是 α。
6. (开放题)一个国家,长期,有很大的经常账户逆差(占 GDP 的 5%)。请把下面的说法,分成事实问题和价值判断:(a)逆差,由外国人的储蓄,来补;(b)借来的钱,主要,用于投资,而不是消费;(c)这个国家,应该减少逆差;(d)如果,外国人,突然,不再借钱给它,会出现危机。
提示:(a)事实(恒等式);(b)事实,可以用数据检验(投资,占 GDP 多少,回报,如何);(c)价值判断(谁来调整、代价是什么),事实的部分,是:减少逆差,需要,储蓄上升、投资下降、或汇率调整,各自的代价;(d)事实:可以研究,什么情形,会发生"突然停止”(币种、期限、储备),但,是否,一定,会发生,取决于,具体情形。
参考与延伸
- Rogoff, K. (1996). The Purchasing Power Parity Puzzle. Journal of Economic Literature, 34, 647–668.
- Dornbusch, R. (1976). Expectations and Exchange Rate Dynamics. Journal of Political Economy, 84(6), 1161–1176.
- Meese, R. A., & Rogoff, K. (1983). Empirical Exchange Rate Models of the Seventies: Do They Fit Out of Sample? Journal of International Economics, 14, 3–24.
- Mundell, R. A. (1963). Capital Mobility and Stabilization Policy under Fixed and Flexible Exchange Rates. Canadian Journal of Economics and Political Science, 29(4), 475–485.
- Fleming, J. M. (1962). Domestic Financial Policies under Fixed and under Floating Exchange Rates. IMF Staff Papers, 9(页码没有核对)。
- Obstfeld, M., Shambaugh, J. C., & Taylor, A. M. (2005). The Trilemma in History: Tradeoffs among Exchange Rates, Monetary Policies, and Capital Mobility. Review of Economics and Statistics, 87(3), 423–438.
- Rey, H. (2013). Dilemma not Trilemma: The Global Financial Cycle and Monetary Policy Independence. Jackson Hole Economic Policy Symposium(会议论文)。
- Krugman, P. (1979). A Model of Balance-of-Payments Crises. Journal of Money, Credit and Banking, 11(3), 311–325.
- Obstfeld, M. (1996). Models of Currency Crises with Self-Fulfilling Features. European Economic Review, 40, 1037–1047.
- Gourinchas, P.-O., & Rey, H. (2007). From World Banker to World Venture Capitalist: US External Adjustment and the Exorbitant Privilege. In R. Clarida (Ed.), G7 Current Account Imbalances: Sustainability and Adjustment (pp. 11–66). University of Chicago Press.
- Bernanke, B. S. (2005). The Global Saving Glut and the U.S. Current Account Deficit. Sandridge Lecture, Virginia Association of Economists, Richmond, March 10, 2005(演讲)。
- Fama, E. F. (1984). Forward and Spot Exchange Rates. Journal of Monetary Economics, 14(3), 319–338.
- Bussière, M., Chinn, M., Ferrara, L., & Heipertz, J. (2017). The New Fama Puzzle. NBER Working Paper 24342(据摘要)。
- 世界银行 WDI:官方汇率(PA.NUS.FCRF)、消费者价格指数(FP.CPI.TOTL)、经常账户余额(BN.CAB.XOKA.GD.ZS)、国民总储蓄(NY.GNS.ICTR.ZS)、总投资(NE.GDI.TOTL.ZS),2026 年 10 月通过 API 下载;代码 B、C 里的数据,已嵌入。
- FRED(圣路易斯联储):日度汇率 DEXTHUS、DEXCHUS、DEXSZUS、DEXJPUS、DEXUSUK;月度汇率和 OECD 三个月银行间利率(代码 E 联网下载);国际清算银行(BIS)实际有效汇率 RBUSBIS、RBJPBIS、RBCNBIS(年平均,已嵌入代码 B)。