目录
- 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数据。
python"># 导入tushare
import tushare as tsdef 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_cpiexcept Exception as e:print(f"获取CPI数据失败: {e}")return Nonedef 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_ppiexcept Exception as e:print(f"获取PPI数据失败: {e}")return None
注意:token需要自行申请。
7. 数据可视化实现代码
使用以上代码中的两个函数,结合以下代码,可实现数据可视化:
python">import matplotlib.pyplot as plt
import pandas as pddef plot_cpi_ppi_trend(start_m, end_m):"""Plot CPI and PPI YoY trends"""# Get datacpi_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 figureplt.figure(figsize=(12, 6))# Plot CPI YoYplt.plot(cpi_data['month'], cpi_data['nt_yoy'],marker='o',color='#FF6B6B',linewidth=2,label='CPI YoY(%)')# Plot PPI YoYplt.plot(ppi_data['month'], ppi_data['ppi_yoy'],marker='s',color='#4ECDC4',linewidth=2,label='PPI YoY(%)')# Set title and labelsplt.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 labelsplt.xticks(rotation=45)# Add gridplt.grid(True, linestyle='--', alpha=0.3)# Add legendplt.legend(loc='best', fontsize=10)# Add zero lineplt.axhline(y=0, color='gray', linestyle='--', alpha=0.5)# Adjust layoutplt.tight_layout()# Show plotplt.show()# Example usage
if __name__ == "__main__":# Set time rangestart_m = '202301'end_m = '202401'# Plot trendsplot_cpi_ppi_trend(start_m, end_m)
数据可视化结果: