Lab Research 景気循環と経済指標——景気循環の仕組み、主要経済指標、景気予測の基礎
目次
「経済は感情である」——ジョン・メイナード・ケインズの言葉が示すように、経済は数値だけでなく、人々の心理や期待によって動く。景気循環を理解し、経済指標を正しく読むことは、投資判断だけでなく、ビジネス戦略においても不可欠なスキルだ。本稿では、景気循環の仕組みと主要経済指標の見方を体系的に解説する。
経済分析の 3 つの柱
| 柱 | 指標 | 説明 |
|---|---|---|
| 成長 | GDP、鉱工業生産 | 経済活動の規模と拡大・縮小 |
| 雇用 | 失業率、雇用者数 | 労働市場の健全性 |
| 物価 | CPI、PPI、コアインフレ | インフレ・デフレの動向 |
1. 景気循環の仕組み
1.1 景気循環の段階
景気は拡張→後退→縮小→回復のサイクルを繰り返す。
景気拡張局
/\
/ \
/ \ 後退
/ \
/ \
回復 / \ 縮小
/ \
/ \
/ \
/ \
景気底入れ 景気ピーク
| 段階 | 特徴 | 経済状況 |
|---|---|---|
| 拡張 | GDP 成長加速、雇用改善、設備投資増加 | 好景気、インフレ圧力 |
| 後退 | 成長鈍化、在庫増加、利益率悪化 | 転換点、金融引き締め影響 |
| 縮小 | GDP 減少、失業率上昇、設備投資減少 | 不況、デフレ圧力 |
| 回復 | 減少幅縮小、雇用底打ち、在庫調整完了 | 底入れ、金融緩和効果 |
1.2 景気循環の原因
| 理論 | 説明 | 政策含意 |
|---|---|---|
| 需給ショック | 需要または供給の急変が景気変動を引き起こす | 需要管理政策 |
| 金融サイクル | 信用拡大・縮小が資産価格と実体経済に影響 | 金融政策重視 |
| 在庫サイクル | 在庫調整(3-4 年)が短期的変動を引き起こす | 自動安定化装置 |
| 設備投資サイクル | 設備投資の波(7-10 年)が中期的変動を形成 | 産業政策 |
| 技術革新サイクル | 技術革新の波(50-60 年)が長期的変動を形成 | 成長戦略 |
1.3 景気循環の計量化
import numpy as np
import pandas as pd
def calculate_business_cycle_phase(gdp_growth_rates, window=4):
"""GDP 成長率から景気循環の段階を判定"""
# 移動平均でトレンドを抽出
trend = pd.Series(gdp_growth_rates).rolling(window=window).mean()
# 景気拡大・縮小の判定
phases = []
for i in range(len(gdp_growth_rates)):
if i < window:
phases.append("判定不能")
continue
current_growth = gdp_growth_rates[i]
prev_growth = gdp_growth_rates[i-1]
if current_growth > 0 and prev_growth > 0 and current_growth > prev_growth:
phases.append("拡張")
elif current_growth > 0 and prev_growth > 0 and current_growth < prev_growth:
phases.append("後退")
elif current_growth < 0 and prev_growth < 0 and current_growth < prev_growth:
phases.append("縮小")
elif current_growth < 0 and prev_growth < 0 and current_growth > prev_growth:
phases.append("回復")
else:
phases.append("転換点")
return phases
# 例:四半期 GDP 成長率(前四半期比、年率換算)
gdp_data = [2.1, 2.5, 1.8, 0.5, -0.8, -1.5, -0.5, 0.3, 1.2, 2.0]
phases = calculate_business_cycle_phase(gdp_data)
for i, (growth, phase) in enumerate(zip(gdp_data, phases)):
print(f"Q{i+1}: 成長率 {growth}%, 局面:{phase}")
2. GDP(国内総生産)
2.1 GDP の構成
GDP は一国で生産された付加価値の総額だ。
GDP = 個人消費 + 企業投資 + 政府支出 + 純輸出(輸出 - 輸入)
C + I + G + (X - M)
| 構成要素 | 比率(日本) | 説明 |
|---|---|---|
| 個人消費(C) | 約 55% | 家計の最終消費支出 |
| 企業投資(I) | 約 25% | 設備投資、住宅投資、在庫変動 |
| 政府支出(G) | 約 20% | 政府消費、公共投資 |
| 純輸出(X-M) | 約 0-5% | 輸出から輸入を差し引いた額 |
2.2 実質 GDP と名目 GDP
| 指標 | 説明 | 用途 |
|---|---|---|
| 名目 GDP | 現在の価格で評価 | 金額ベースの経済規模 |
| 実質 GDP | 基準年の価格で評価(物価調整済み) | 実際の生産量変化 |
def calculate_real_gdp(nominal_gdp, price_index, base_year_index=100):
"""実質 GDP の計算"""
return (nominal_gdp / price_index) * base_year_index
def calculate_gdp_growth_rate(current_gdp, previous_gdp):
"""GDP 成長率の計算"""
return ((current_gdp - previous_gdp) / previous_gdp) * 100
# 例:名目 GDP 550 兆円、GDP デフレーター 98(基準年=100)
nominal_gdp = 550 # 兆円
price_index = 98
real_gdp = calculate_real_gdp(nominal_gdp, price_index)
print(f"実質 GDP: {real_gdp:.1f}兆円(基準年価格)")
# 成長率計算
gdp_q1 = 545
gdp_q2 = 550
growth_rate = calculate_gdp_growth_rate(gdp_q2, gdp_q1)
print(f"GDP 成長率:{growth_rate:.2f}%")
2.3 GDP の限界
GDP は経済活動の規模を示すが、福祉や豊かさは測定できない。
| 測定できないもの | 説明 |
|---|---|
| 家計労働 | 育児、介護、家事など無償労働 |
| 環境コスト | 公害、資源枯渇、生物多様性の損失 |
| 所得分配 | 格差、貧困の状況 |
| 幸福度 | 生活の質、満足度 |
3. 雇用指標
3.1 失業率
失業率は労働力人口に占める失業者の割合だ。
失業率 = 失業者数 / 労働力人口 × 100
労働力人口 = 就業者数 + 失業者数
| 分類 | 定義 |
|---|---|
| 就業者 | 仕事をしている人(週 1 時間以上) |
| 失業者 | 仕事を探しているが見つからない人 |
| 労働力人口 | 就業者 + 失業者(15 歳以上) |
| 非労働力人口 | 学生、主婦、高齢者など |
def calculate_unemployment_rate(employed, unemployed):
"""失業率の計算"""
labor_force = employed + unemployed
if labor_force == 0:
return 0
return (unemployed / labor_force) * 100
# 例:就業者 6,700 万人、失業者 170 万人
employed = 67_000_000
unemployed = 1_700_000
unemployment_rate = calculate_unemployment_rate(employed, unemployed)
print(f"失業率:{unemployment_rate:.2f}%") # 約 2.48%
3.2 完全失業率と実質失業率
| 指標 | 定義 | 日本(目安) |
|---|---|---|
| 完全失業率 | 就業者を完全に失っている | 2-3% |
| 広義失業率 | 不完全雇用を含む | 5-7% |
3.3 雇用率と労働参加率
def calculate_labor_force_participation_rate(labor_force, working_age_population):
"""労働参加率の計算"""
return (labor_force / working_age_population) * 100
def calculate_employment_rate(employed, working_age_population):
"""雇用率の計算"""
return (employed / working_age_population) * 100
# 例:労働力人口 6,870 万人、生産年齢人口(15-64 歳)7,500 万人
labor_force = 68_700_000
working_age_pop = 75_000_000
participation_rate = calculate_labor_force_participation_rate(labor_force, working_age_pop)
print(f"労働参加率:{participation_rate:.1f}%") # 約 91.6%
3.4 非農業部門雇用者数(米国)
米国の非農業部門雇用者数は毎月第 1 金曜日に発表され、世界中の市場に影響を与える。
| 項目 | 説明 |
|---|---|
| 発表 | 米国労働省、毎月第 1 金曜日 21:30(日本時間) |
| 対象 | 農業を除く約 14 万 5000 の事業所 |
| 市場影響 | 株価、為替、債券価格に即時反応 |
4. 物価指標
4.1 消費者物価指数(CPI)
CPI は家計が購入する財・サービスの価格変動を測定する。
CPI = (基準年を 100 とした時の)現在の価格水準
インフレ率 = (当期 CPI - 前期 CPI)/ 前期 CPI × 100
def calculate_inflation_rate(current_cpi, previous_cpi):
"""インフレ率の計算"""
return ((current_cpi - previous_cpi) / previous_cpi) * 100
def calculate_core_inflation(all_items_cpi, food_energy_cpi):
"""コアインフレ率(食料・エネルギーを除く)"""
# 実際の計算はより複雑(ウェイト調整が必要)
return all_items_cpi # 簡略化
# 例:CPI 前年同月比
cpi_current = 102.5
cpi_previous = 100.0
inflation_rate = calculate_inflation_rate(cpi_current, cpi_previous)
print(f"インフレ率:{inflation_rate:.2f}%") # 2.50%
4.2 コア CPI とコアコア CPI
| 指標 | 除く項目 | 目的 |
|---|---|---|
| CPI 総合 | なし | 家計の総合的な物価負担 |
| コア CPI | 生鮮食品 | 短期的な変動要因を除去 |
| コアコア CPI | 生鮮食品・エネルギー | 基調的なインフレを把握 |
4.3 企業物価指数(PPI)
PPI は企業が販売する財・サービスの価格変動を測定する。
# PPI から CPI への転嫁度
def calculate_pass_through_rate(cpi_change, ppi_change):
"""物価転嫁率"""
if ppi_change == 0:
return 0
return (cpi_change / ppi_change) * 100
# 例:PPI 上昇 5%、CPI 上昇 2%
ppi_change = 5.0
cpi_change = 2.0
pass_through = calculate_pass_through_rate(cpi_change, ppi_change)
print(f"物価転嫁率:{pass_through:.1f}%") # 40%(企業コスト上昇の 40% が消費者へ転嫁)
5. 景気先行指標
5.1 主要先行指標
| 指標 | 先行期間 | 説明 |
|---|---|---|
| 株式価格 | 6-12 ヶ月 | 企業収益期待の先行き |
| 新規求人数 | 3-6 ヶ月 | 雇用環境の先行き |
| マネーサプライ | 6-12 ヶ月 | 金融環境の先行き |
| 住宅着工件数 | 3-6 ヶ月 | 設備投資・消費の先行き |
| 消費者信頼感 | 1-3 ヶ月 | 個人消費の先行き |
| PMI(購買担当者景気指数) | 1-3 ヶ月 | 製造業・サービス業の景況感 |
5.2 長短金利差(イールドカーブ)
長短金利差は景気後退の有力な先行指標だ。
def yield_curve_spread(long_term_rate, short_term_rate):
"""イールドカーブのスプレッド(10 年 -2 年)"""
return long_term_rate - short_term_rate
# 解釈
# スプレッド > 0: 順イールド(景気拡大予想)
# スプレッド < 0: 逆イールド(景気後退予想)
# 例:10 年国債利回り 1.5%、2 年国債利回り 2.0%
spread = yield_curve_spread(1.5, 2.0)
print(f"イールドスプレッド:{spread:.2f}%") # -0.50%(逆イールド)
if spread < 0:
print("警告:逆イールド状態、景気後退の可能性")
| スプレッド | 解釈 | 歴史的精度 |
|---|---|---|
| 正(順イールド) | 景気拡大継続 | - |
| 負(逆イールド) | 景気後退の先行き | 過去 50 年で 7 回中 7 回的中 |
5.3 PMI(購買担当者景気指数)
PMI は企業の購買担当者の景況感を数値化したものだ。
def interpret_pmi(pmi_value):
"""PMI の解釈"""
if pmi_value > 50:
return "景気拡大(50 より大きいほど拡大ペースが速い)"
elif pmi_value < 50:
return "景気後退(50 より小さいほど縮小ペースが速い)"
else:
return "横ばい"
# 例:製造業 PMI 52.5
pmi = 52.5
interpretation = interpret_pmi(pmi)
print(f"PMI {pmi}: {interpretation}")
| PMI 値 | 解釈 |
|---|---|
| 55 以上 | 景気拡大が明確 |
| 50-55 | 緩やかな拡大 |
| 50 | 横ばい |
| 45-50 | 緩やかな後退 |
| 45 未満 | 景気後退が明確 |
6. 金融政策と景気
6.1 中央銀行の政策手段
| 手段 | 説明 | 効果 |
|---|---|---|
| 政策金利 | 短期金利の誘導 | 経済活動の調整 |
| 量的緩和 | 国債等の大量購入 | 長期金利低下、資産価格上昇 |
| フォワードガイダンス | 将来の政策方針の示唆 | 期待形成の誘導 |
| マイナス金利 | 当座預金に金利課税 | 銀行の貸出促進 |
6.2 テイラー・ルール
テイラー・ルールは適切な政策金利を算出する指針だ。
政策金利 = 中立金利 + インフレ率 + 0.5 × (インフレ率 - 目標インフレ率) + 0.5 × GDP ギャップ
def taylor_rule(neutral_rate, inflation_rate, inflation_target, gdp_gap):
"""テイラー・ルールによる適切な政策金利の計算"""
return (
neutral_rate +
inflation_rate +
0.5 * (inflation_rate - inflation_target) +
0.5 * gdp_gap
)
# 例:中立金利 2%、インフレ率 1.5%、目標 2%、GDP ギャップ -1%
appropriate_rate = taylor_rule(
neutral_rate=0.02,
inflation_rate=0.015,
inflation_target=0.02,
gdp_gap=-0.01
)
print(f"適切な政策金利:{appropriate_rate*100:.2f}%") # 約 3.25%
6.3 金融政策の伝達経路
政策金利引き下げ
↓
短期金利低下 → 長期金利低下
↓
資産価格上昇(株式、不動産)
↓
家計・企業の富増加
↓
消費・投資増加
↓
GDP 成長加速
7. 景気予測の手法
7.1 エコノメトリック・モデル
import statsmodels.api as sm
def build_gdp_forecast_model(historical_data):
"""GDP 予測モデル(簡易版)"""
# 説明変数:金利、財政支出、輸出
X = historical_data[['interest_rate', 'fiscal_spending', 'exports']]
y = historical_data['gdp_growth']
# 回帰分析
X = sm.add_constant(X)
model = sm.OLS(y, X).fit()
return model
# 予測
def forecast_gdp(model, future_values):
"""GDP 成長率の予測"""
X_future = sm.add_constant(future_values)
prediction = model.predict(X_future)
return prediction[0]
# 使用例(擬似データ)
import pandas as pd
data = pd.DataFrame({
'gdp_growth': [1.5, 2.0, 1.8, 0.5, -0.8, 1.2, 2.5, 1.9],
'interest_rate': [0.1, 0.1, 0.5, 1.0, 1.5, 1.0, 0.5, 0.3],
'fiscal_spending': [100, 105, 110, 115, 120, 118, 115, 112],
'exports': [70, 72, 68, 65, 60, 63, 70, 73]
})
model = build_gdp_forecast_model(data)
print(model.summary())
7.2 景気一致指数と先行指数
| 指数 | 目的 | 構成要素 |
|---|---|---|
| 景気一致指数 | 現在の景気状況を把握 | 生産、出荷、雇用など |
| 景気先行指数 | 将来の景気を予測 | 株式、新規求人、長短金利差など |
7.3 リセッション・インジケーター
def recession_indicator(yield_spread, leading_index, pmi):
"""景気後退確率の簡易計算"""
# 各指標のスコア(0-1、1 に近いほど後退確率高)
yield_score = 1.0 if yield_spread < 0 else 0.2
leading_score = 1.0 if leading_index < 95 else 0.3
pmi_score = 1.0 if pmi < 45 else (0.5 if pmi < 50 else 0.2)
# 加重平均
recession_prob = (
0.4 * yield_score +
0.3 * leading_score +
0.3 * pmi_score
)
return recession_prob
# 例:イールド逆転、先行指数低下、PMI50 割れ
prob = recession_indicator(
yield_spread=-0.5, # 逆イールド
leading_index=93, # 低下
pmi=48 # 50 割れ
)
print(f"景気後退確率:{prob*100:.1f}%") # 約 67%
8. 経済指標の見方・使い方
8.1 指標の重要性ランキング
| ランク | 指標 | 市場影響 | 発表頻度 |
|---|---|---|---|
| 1 | 雇用統計(米国) | 非常に高い | 月次 |
| 2 | CPI(インフレ) | 非常に高い | 月次 |
| 3 | GDP | 高い | 四半期 |
| 4 | 中央銀行政策金利 | 非常に高い | 随時 |
| 5 | PMI | 中〜高い | 月次 |
| 6 | 小売売上高 | 中 | 月次 |
| 7 | 鉱工業生産 | 中 | 月次 |
8.2 市場予想との比較
経済指標は予想値との乖離が重要だ。
def analyze_economic_data(actual, forecast, previous):
"""経済指標の分析"""
# 予想との乖離
surprise = actual - forecast
surprise_pct = (surprise / forecast) * 100 if forecast != 0 else 0
# 前回との変化
mom_change = actual - previous
mom_pct = (mom_change / previous) * 100 if previous != 0 else 0
# 評価
if surprise > 0:
assessment = "ポジティブサプライズ(予想上振れ)"
elif surprise < 0:
assessment = "ネガティブサプライズ(予想下振れ)"
else:
assessment = "予想通り"
return {
'surprise': surprise,
'surprise_pct': surprise_pct,
'mom_change': mom_change,
'mom_pct': mom_pct,
'assessment': assessment
}
# 例:米国雇用統計
result = analyze_economic_data(
actual=250000, # 実際
forecast=200000, # 予想
previous=180000 # 前回
)
print(f"サプライズ:{result['surprise']:+,}人({result['surprise_pct']:+.1f}%)")
print(f"前回比:{result['mom_change']:+,}人({result['mom_pct']:+.1f}%)")
print(f"評価:{result['assessment']}")
8.3 改定値への注意
経済指標は速報値→確報値で改定されることが多い。
| 指標 | 改定幅(目安) | 注意点 |
|---|---|---|
| GDP | ±0.5%pt | 確報値まで注意が必要 |
| 雇用統計 | ±3 万人 | 翌月以降の改定をチェック |
| CPI | ほとんどなし | 季節調整の再計算に注意 |
まとめ
景気循環と経済指標の核心を整理する:
- 景気循環: 拡張→後退→縮小→回復のサイクルを理解
- GDP: 経済活動の総合指標、実質と名目を区別
- 雇用指標: 失業率、労働参加率で労働市場を把握
- 物価指標: CPI、コア CPI、PPI でインフレを測定
- 先行指標: イールドカーブ、PMI で景気の先行きを予測
- 金融政策: 中央銀行の政策が景気に与える影響を理解
- 指標の使い方: 予想値との乖離、改定値に注意
経済指標は「完璧な予言者」ではない。複数の指標を総合的に判断し、文脈を理解することが、正確な景気予測につながる。
免責事項 — 当記事は情報提供を目的としており、特定の金融商品の売買を推奨するものではありません。投資判断はご自身の責任で行ってください。