99.23 金融难点通俗解释:小卖部经营比喻PPI(生产者物价指数)vsCPI(消费者物价指数)
目录
- 0. 承前
- 1. 简述:价格指数对比
- 2. 比喻:两大指数对比
- 2.1 简单对比
- 2.2 生动比喻
- 3. 实际应用
- 3.1 价格传导现象
- 4. 总结
- 5. 有趣的对比
- 6. 数据获取实现代码
- 7. 数据可视化实现代码
0. 承前
本文主旨:
本文使用小卖部比喻PPI和CPI,目的是让大家对这两个知识点有一个更加通俗易懂、贴近生活的理解。并用数据实证了CPI和PPI的价格传导之谜:为什么进货价涨了10%,零售价却不敢跟着涨这么多?这个困扰着小卖部老板的问题,恰好反映了CPI和PPI的微妙关系。
数据显示,2023-2024年间,生产者价格指数(PPI)的波动幅度明显大于消费者价格指数(CPI)。这种"不完全传导"现象,正是市场竞争下商家利润调节的结果,也展现了宏观经济中价格传导的真实状态。
如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考:
0. 金融资产组合模型进化全图鉴
1. 简述:价格指数对比
- PPI含义:侧重于生产者层面的价格变化,展示了企业出售其产品时所面临的价格波动,这些波动可能会间接影响到消费者价格。比如:小卖部进货时的价格变化。
- CPI含义:关注的是消费者层面的价格变化,直接反映了普通家庭的生活成本变化。比如:小卖部卖给同学时的价格变化。
2. 比喻:两大指数对比
2.1 简单对比
- PPI关注"进货价格变化"
小明的小卖部进货价格变化:
薯片批发价:2元→2.2元(涨10%)
饮料进货价:1元→1.1元(涨10%)
文具采购价:5元→5.5元(涨10%)
PPI上涨10%
含义:进货成本普遍上涨10%
- CPI关注"售价变化"
小明的小卖部售价变化:
薯片售价:3元→3.2元(涨6.7%)
饮料售价:2元→2.1元(涨5%)
文具售价:8元→8.4元(涨5%)
CPI上涨约6%
含义:同学们买东西要多花6%
2.2 生动比喻
- PPI就像问:
"进货时要多花多少钱?"
- 批发市场的价格变化
- 工厂发货价的变化
- 还没加上店铺利润
- CPI就像问:
"同学们买东西要多花多少钱?"
- 小卖部标价的变化
- 实际购买价的变化
- 已经包含店铺利润
3. 实际应用
3.1 价格传导现象
进货价格上涨(PPI上涨):
- 薯片批发价涨了1角
- 饮料进价贵了1毛
- 文具采购成本增加
售价变化(CPI变化):
- 可能立即涨价
- 可能暂时不涨
- 可能部分涨价
4. 总结
关注点:
- PPI看"进货贵了多少"
- CPI看"卖价涨了多少"
就像小卖部:
- PPI是批发市场的价格变化
- CPI是小卖部标价的变化
5. 有趣的对比
小明的小卖部:
进货价(PPI)涨了10%:
- 以前进100元的货
- 现在要花110元
售价(CPI)涨了6%:
- 以前卖3元的薯片
- 现在卖3.2元
这就说明:
- 虽然进货价涨得多
- 但售价涨得少
- 小明承担了部分成本上涨
6. 数据获取实现代码
通过以下代码可以获取PPI和CPI数据。
# 导入tushare
import tushare as ts
def get_cpi_data(start_m, end_m):
"""
获取CPI数据
参数:
start_m: 开始月份,格式:'YYYYMM',如'202401'
end_m: 结束月份,格式:'YYYYMM',如'202412'
返回:
DataFrame: CPI数据,包含月份和同比等信息
"""
try:
# 初始化pro接口
pro = ts.pro_api('token')
# 获取CPI数据
df_cpi = pro.cn_cpi(start_m=start_m, end_m=end_m)
return df_cpi
except Exception as e:
print(f"获取CPI数据失败: {e}")
return None
def get_ppi_data(start_m, end_m):
"""
获取PPI数据
参数:
start_m: 开始月份,格式:'YYYYMM',如'202401'
end_m: 结束月份,格式:'YYYYMM',如'202412'
返回:
DataFrame: PPI数据,包含月份和同比等信息
"""
try:
# 初始化pro接口
pro = ts.pro_api('token')
# 获取PPI数据
df_ppi = pro.cn_ppi(start_m=start_m, end_m=end_m)
return df_ppi
except Exception as e:
print(f"获取PPI数据失败: {e}")
return None
注意:token需要自行申请。
7. 数据可视化实现代码
使用以上代码中的两个函数,结合以下代码,可实现数据可视化:
import matplotlib.pyplot as plt
import pandas as pd
def plot_cpi_ppi_trend(start_m, end_m):
"""
Plot CPI and PPI YoY trends
"""
# Get data
cpi_data = get_cpi_data(start_m, end_m)
ppi_data = get_ppi_data(start_m, end_m)
if cpi_data is None or ppi_data is None:
return
# Create figure
plt.figure(figsize=(12, 6))
# Plot CPI YoY
plt.plot(cpi_data['month'],
cpi_data['nt_yoy'],
marker='o',
color='#FF6B6B',
linewidth=2,
label='CPI YoY(%)')
# Plot PPI YoY
plt.plot(ppi_data['month'],
ppi_data['ppi_yoy'],
marker='s',
color='#4ECDC4',
linewidth=2,
label='PPI YoY(%)')
# Set title and labels
plt.title('CPI vs PPI YoY Trends (2023-2024)', fontsize=14, pad=15)
plt.xlabel('Month', fontsize=12)
plt.ylabel('YoY Change Rate(%)', fontsize=12)
# Rotate x-axis labels
plt.xticks(rotation=45)
# Add grid
plt.grid(True, linestyle='--', alpha=0.3)
# Add legend
plt.legend(loc='best', fontsize=10)
# Add zero line
plt.axhline(y=0, color='gray', linestyle='--', alpha=0.5)
# Adjust layout
plt.tight_layout()
# Show plot
plt.show()
# Example usage
if __name__ == "__main__":
# Set time range
start_m = '202301'
end_m = '202401'
# Plot trends
plot_cpi_ppi_trend(start_m, end_m)
数据可视化结果: