第1章:电价时间序列分析
大家好,我是你们这门课的主讲人。做了这么多年电力市场和储能系统,我最大的体会就是——电价预测不准,储能套利就是瞎忙活。今天咱们就从最基础的电价时间序列分析开始聊。
核心观点:电价不是随机波动的,它有规律可循。找到这些规律,你就能在合适的时间充电,在合适的时间放电,赚取价差。
1.1 电价波动特征:它为什么忽高忽低?
我记得刚入行那会儿,看着电价曲线一头雾水。后来慢慢摸清了门道——电价波动主要受三个因素影响:负荷需求、可再生能源出力、机组启停成本。
咱们先看一个典型日的电价曲线:
# 模拟典型日电价数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成24小时电价数据(单位:元/MWh)
hours = range(24)
# 典型夏季工作日的电价模式
price = [280, 260, 240, 230, 225, 235, 280, 380,
450, 480, 490, 470, 430, 420, 440, 480,
520, 550, 530, 480, 420, 380, 340, 300]
plt.figure(figsize=(12, 5))
plt.plot(hours, price, 'b-o', linewidth=2)
plt.xlabel('小时')
plt.ylabel('电价 (元/MWh)')
plt.title('典型日电价曲线')
plt.grid(True, alpha=0.3)
plt.show()
你看这个曲线,有几个明显的特征:
- 双峰特性:上午10-11点和傍晚18-19点各有一个高峰。我在广东做项目时,下午还有个"午峰",因为空调负荷太大。
- 谷底平坦:凌晨2-5点电价最低,而且持续时间长。这时候充电最划算。
- 尖峰陡峭:晚高峰电价涨得特别快,有时候半小时能跳涨100元/MWh。
实战经验:我建议你重点关注每天16:00-20:00这个时段。这是储能放电的黄金窗口,价差往往最大。但也要小心——如果光伏出力突然下降,电价可能瞬间飙升,这时候放电要果断。
1.2 峰谷价差规律:套利的核心逻辑
说白了,储能套利就是低买高卖。但什么时候算"低",什么时候算"高"?这需要量化分析。
我习惯用峰谷价差比这个指标:
# 计算峰谷价差
peak_price = max(price[8:20]) # 8:00-20:00的峰值
valley_price = min(price[0:8]) # 0:00-8:00的谷值
spread_ratio = peak_price / valley_price
print(f"峰价: {peak_price} 元/MWh")
print(f"谷价: {valley_price} 元/MWh")
print(f"峰谷价差比: {spread_ratio:.2f}")
# 判断套利空间
if spread_ratio > 2.0:
print("套利空间充足,建议满充满放")
elif spread_ratio > 1.5:
print("套利空间一般,需优化充放电策略")
else:
print("套利空间不足,谨慎操作")
这里有个坑,我曾经踩过——只看峰谷价差还不够。为什么?因为储能系统有充放电效率损失,一般锂电是90%左右。你算账的时候得把效率算进去:
| 项目 | 数值 | 说明 |
|---|---|---|
| 谷时电价 | 225 元/MWh | 凌晨3点充电 |
| 峰时电价 | 550 元/MWh | 傍晚19点放电 |
| 充放电效率 | 90% | 锂电典型值 |
| 实际套利空间 | 550×0.9 - 225 = 270 元/MWh | 扣除效率损失 |
避坑指南:我曾经在西北某项目上,看到峰谷价差有3倍,觉得稳赚不赔。结果忽略了输配电价和容量电费分摊,实际到手利润少了一半。记住:电价≠结算价,一定要用实际结算数据做分析。
1.3 季节性模式识别:不同月份,不同玩法
电价不是一成不变的。你想想看,夏天和冬天的用电模式能一样吗?我整理了某省过去三年的数据,发现几个规律:
- 夏季(6-8月):峰谷价差最大,能达到3-4倍。因为空调负荷推高了峰值电价。这时候储能应该满充满放,一天两充两放。
- 冬季(12-2月):价差次之,约2-3倍。供暖负荷导致晚高峰延长。建议一充一放,充电时间可以提前到中午。
- 春秋季(3-5月、9-11月):价差最小,有时不到2倍。这时候要精打细算,甚至可以考虑不操作,避免亏本。
咱们用代码验证一下季节性规律:
# 季节性电价分析
import pandas as pd
import numpy as np
# 模拟一年数据(简化版)
np.random.seed(42)
dates = pd.date_range('2023-01-01', '2023-12-31', freq='D')
# 不同季节的基础电价
base_price = np.zeros(365)
base_price[0:90] = 350 # 冬季
base_price[90:180] = 300 # 春季
base_price[180:270] = 450 # 夏季
base_price[270:365] = 320 # 秋季
# 加入随机波动
price_annual = base_price + np.random.normal(0, 50, 365)
# 计算月均电价
df = pd.DataFrame({'date': dates, 'price': price_annual})
df['month'] = df['date'].dt.month
monthly_avg = df.groupby('month')['price'].mean()
print("月均电价(元/MWh):")
print(monthly_avg.round(0))
# 识别高电价月份
high_months = monthly_avg[monthly_avg > monthly_avg.mean() + monthly_avg.std()]
print(f"\n高电价月份:{list(high_months.index)}")
个人经验:我建议你至少分析过去2-3年的数据,才能找到稳定的季节性规律。另外,别忘了看节假日效应——春节、国庆期间电价通常偏低,这时候充电成本更低。
1.4 知识体系总览
说了这么多,咱们用一张图把本章的核心逻辑串起来:
这张图把咱们今天讲的内容串起来了。你看,从波动特征到价差规律,再到季节性模式,最终都指向一个目标——找到最优的充放电时机。
嗯,今天就先聊到这儿。记住一句话:电价分析不是算数学题,而是理解背后的物理规律和市场逻辑。下一章咱们会深入具体的预测方法,到时候见。
公众号:蓝海资料掘金营,微信deep3321