3、单因素敏感性分析(上):核心变量识别与变化范围设定
各位同学,咱们今天聊点实在的。
做储能项目,最怕什么?最怕算账算得挺美,一落地全变样。我见过太多项目,可行性报告上IRR(内部收益率)漂亮得很,结果运营两年,收益率直接腰斩。问题出在哪?出在变量上。
今天这节,咱们就专门来啃这块硬骨头——单因素敏感性分析。说白了,就是一次只动一个变量,看看它对项目收益的影响有多大。
3.1 核心变量识别:哪些是“命门”?
一个储能项目的财务模型,变量少说几十个。但真正能左右项目生死的,其实就四个。我个人习惯,每次做敏感性分析,先盯死这四个变量。
3.1.1 电价(峰谷价差)
这是储能项目的“心脏”。
你想想看,储能赚的是什么钱?低买高卖的差价。如果峰谷价差不够大,你充放电效率再高、衰减再慢,也是白搭。
为什么它敏感?因为电价直接决定了单次循环的毛利。价差每波动1分钱,对全生命周期收益的影响可能是百万级的。
3.1.2 充放电次数(循环寿命)
储能电池不是永动机。它是有寿命的。
通常我们说的“6000次循环”,指的是在特定条件下(比如25°C、0.5C充放)的寿命。但实际运营中,受温度、充放电深度、倍率影响,真实循环次数可能打八折甚至七折。
为什么它敏感?因为循环次数直接决定了电池能用多少年。次数少了,折旧成本就摊到更短的时间里,每年的固定成本就高了。
3.1.3 系统效率(RTE,Round Trip Efficiency)
充进去100度电,能放出来多少?这就是系统效率。
目前主流储能系统的RTE在85%~92%之间。别小看这百分之几的差距。充放一次,效率差1%,一年下来可能就是几十万度的电损。
为什么它敏感?因为效率是乘数效应。效率越低,你实际卖出去的电就越少,收入自然就缩水了。
3.1.4 衰减率(容量保持率)
电池用一年,容量会掉。这是物理规律,谁也逃不掉。
通常磷酸铁锂电池的年衰减率在2%~5%之间。但要注意,衰减不是线性的。前两年可能快一些,中间几年平缓,后期又加速。
为什么它敏感?因为衰减直接影响的是“未来能卖多少电”。第一年容量100%,第五年可能只剩85%。你算收益的时候,如果按线性衰减算,后期收入会高估不少。
3.2 变量变化范围设定:±30% 怎么来的?
确定了核心变量,下一步就是设定它们的变化范围。
为什么是±30%?不是±10%或±50%?
嗯,这里有个讲究。
- ±10%:太保守了。实际运营中,电价波动、效率衰减,幅度往往超过10%。用±10%做分析,容易低估风险。
- ±50%:又太极端了。除非遇到政策巨变或技术颠覆,否则变量很少波动这么大。用±50%分析,结果可能过于悲观,反而失去参考价值。
- ±30%:这是一个“黄金区间”。它既能覆盖大多数实际波动情况(比如电价波动20%~30%很常见),又不会让结果过于夸张。我个人习惯,做敏感性分析时,±30%是首选。
具体到每个变量,变化范围可以这样设定:
| 变量 | 基准值 | 下限(-30%) | 上限(+30%) | 说明 |
|---|---|---|---|---|
| 电价(元/kWh) | 0.80 | 0.56 | 1.04 | 覆盖大部分省份的峰谷价差波动 |
| 充放电次数(次) | 6000 | 4200 | 7800 | 覆盖不同电池技术和工况 |
| 系统效率(%) | 88% | 61.6% | 114.4% | 注意上限超过100%不合理,实际取100% |
| 衰减率(%/年) | 3% | 2.1% | 3.9% | 覆盖主流磷酸铁锂电池的衰减范围 |
3.3 知识体系:单因素敏感性分析的核心逻辑
为了让大家更直观地理解,我画了一张图。这张图展示了单因素敏感性分析的核心逻辑:
这张图很清楚地展示了整个流程:先识别四个核心变量,然后给每个变量设定±30%的变化范围,接着分别计算每个变量变动时对项目收益(IRR或NPV)的影响,最后画出敏感性曲线,看看哪个变量最“要命”。
3.4 实操示例:用Python快速跑一遍
光说不练假把式。咱们用Python写个简单的敏感性分析函数。代码不长,但很实用。
# 单因素敏感性分析函数
def sensitivity_analysis(base_params, variable, change_range):
"""
base_params: 基准参数(电价、次数、效率、衰减率)
variable: 要变动的变量名
change_range: 变动范围(如±30%)
"""
results = []
for pct in change_range:
# 复制基准参数
params = base_params.copy()
# 变动目标变量
params[variable] = base_params[variable] * (1 + pct)
# 计算IRR(假设有计算函数)
irr = calculate_irr(params)
results.append((pct, irr))
return results
# 基准参数
base = {
'电价': 0.80,
'充放电次数': 6000,
'系统效率': 0.88,
'衰减率': 0.03
}
# 分析电价在±30%范围内的敏感性
price_sensitivity = sensitivity_analysis(base, '电价', [-0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3])
print(price_sensitivity)
3.5 避坑指南:我踩过的三个坑
做敏感性分析这么多年,我踩过不少坑。分享三个最常见的,你们以后遇到可以绕开走。
- 变量范围设得太窄:我刚开始做分析时,觉得±10%就够了。结果项目运营后,电价波动了25%,直接打脸。现在我的习惯是,至少±30%,宁可多算,不能漏算。
- 忽略了变量之间的相关性:单因素分析假设其他变量不变,但现实中变量会联动。比如电价低了,充放电策略可能调整,循环次数也会变。单因素分析只是第一步,后面还要做多因素分析。
- 基准值选错了:基准值应该是“最可能发生的情况”,而不是“最乐观的情况”。我见过有人把基准值设成最优工况,结果敏感性分析出来全是风险,根本没法看。
好了,这节的内容就到这。核心变量识别和变化范围设定,是敏感性分析的地基。地基打不牢,后面算再多也是白搭。下节咱们接着聊,怎么把这些变量变动转化成具体的IRR和NPV变化,画出那条“要命”的敏感性曲线。
公众号:蓝海资料掘金营,微信deep3321