绿电投研:一个微信小程序里的新能源投资模型
缘起
光伏和风电的投资测算,过去几乎都是在 Excel 里完成的。一个 .xlsx 文件,十几个 sheet,上百个公式,换个参数要等半分钟的重算。发给同事要解释半天哪个格子能动、哪个不能动。投资人在项目现场想看个 IRR,还得先翻出笔记本电脑。
这不是效率问题,这是工具问题。
绿电投研就是在这个念头下开始的。一个微信小程序,打开即用,光伏、风电、独立储能三种技术路线,完整的 Excel 级财务模型,不需要下载,不需要注册,数据不上传服务器。算完即走,结果留在本地。

财务模型:不止是 LCOE
很多新能源投资工具只输出一个 LCOE 就结束了。但在实际的项目决策中,LCOE 只是起点。投资人需要知道:资本金 IRR 和全投资 IRR 差多少?贷款还清后现金流怎么变?增值税“三免三减半”对 IRR 的影响有多大?
绿电投研的财务模型覆盖了这些需求。核心计算链路是:
装机容量 × 单位投资 → 总投资
年发电量 × 上网电价(含峰平谷加权) → 年收入
年收入 + 碳交易收入 → 总收入
总收入 - 运维费(6项分解) - 折旧 - 利息 - 增值税 - 所得税 → 净利润
净利润 + 折旧 + 残值回收 → 经营现金流
经营现金流 + 融资现金流(贷款/还款) → 资本金现金流
几个值得展开的细节:
增值税链。 模型区分了电力销项税、服务进项税、设备进项税、施工进项税,进项税在建设期抵扣,销项税在运营期征收。光伏享受增值税即征即退 50% 的政策,风电按全额征收。这个差异在 Excel 里是一列公式,在小程序里是一个 if (isPV) 的分支。
三免三减半。 新能源项目前三年免征所得税,后三年减半征收。模型在计算应纳税所得额时,根据运营年份自动切换税率。折旧年限和项目寿命的差异也会影响税盾,这些在代码里都做了逐年的处理。
等额本金还款。 贷款部分支持等额本息和等额本金两种还款方式,带宽限期。宽限期内只还利息不还本金,宽限期后恢复正常还款。这个逻辑在 finance.js 的 amortize 函数里实现,牛顿迭代 + 二分法 fallback 计算 IRR,同时计算项目 IRR 和资本金 IRR 两个口径。
六项运维分解。 运维费不是按比例一乘了事,而是拆成了土地租金、管理费、保险费、检测费、大修费、日常运维六项,每项独立计算,支持通胀率调整。大修费按周期触发(比如每五年一次),在对应年份产生一笔额外支出。
碳交易。 按 CO2、SO2、NOx 三种排放因子和碳价计算减排收入,碳价支持年增长率。
独立储能:一个模块的诞生
储能模块是基础版上线之后才加入的。最初的首页只有光伏和风电两张卡片,其余四张(光储、风储、独立储能、风光储)都锁着,点击弹出“专业版功能”提示。
但用户反馈显示,独立储能的 LCOE 测算是一个真实且高频的需求,不依赖光储组合,有独立的商业逻辑。于是决定把它加入基础版。
储能 LCOE 的计算逻辑和光伏、风电有本质区别。光伏和风电的 LCOE 是“总成本现值 / 总发电量现值”,储能的 LCOE 是“总成本现值 / 总放电量现值”,而放电量又受效率、放电深度、逐年衰退的复合影响。模型层面,第 t 年的放电量为:
年放电量 = 储能容量 × 放电深度 × 年循环次数 × (1 - 衰退率)^(t-1)
换电逻辑是另一个差异点。锂离子电池和钠离子电池在寿命期内需要更换,换电时点在代码里不是硬编码的,而是由用户输入循环寿命(次)和年运行次数,系统自动推导:Math.floor(replace_cycles / cycles_per_year)。液流电池和抽水蓄能不需要换电,对应参数自动隐藏。
模块覆盖了五种储能类型:锂离子电池、钠离子电池、液流电池、压缩空气储能、抽水蓄能。每种类型都有独立的预设参数,一键切换。结果页提供两种视图模式,简要模式看环形饼图和龙卷风敏感性图,详细模式看双 Y 轴折线图(年上网电量 + 累计现值)和逐年数据明细表。敏感性测试幅度可以通过滑块在 ±10% 到 ±50% 之间拖动,图表实时重绘。
设计:克制是一种选择
小程序的视觉语言借鉴了 iOS 的设计系统。全局背景色是 #F2F2F7(iOS 系统灰),卡片圆角 12px,导航栏用毛玻璃效果(backdrop-filter: blur),图标用 CSS 背景图 + base64 SVG 渲染。
字体方面,正文使用明朝体系列(font-family: var(--font-serif)),小字(24rpx 以下)使用无衬线作为 fallback。这个选择有明确的功能考虑:明朝体的衬线在正文字号下提高了识别度,但在小字号下会发虚,所以小字切回无衬线。
交互上,所有卡片点击、按钮提交、关键操作都有轻振动反馈(wx.vibrateShort({ type: 'light' }))。空状态页面(历史和结果页)有 CSS 渲染的 SVG 图标,不是一个无趣的“暂无数据”文字。结果页的施工周期表用提取的 CSS 类名而不是内联样式,方便后续维护。
基础版与专业版的分界
基础版和专业版的分工是经过深思熟虑的。基础版免费,目标是让用户打开小程序就能完成一次完整的测算,不需要任何外部依赖。计算全部在本地完成,数据存 wx.storage,不上传服务器。
专业版在这个基础上增加四样东西:一是 PySAM 物理仿真,用精确的气象数据和组件模型计算发电量,而不是简单的利用小时数估算;二是联合运行方案,光储、风储、风光储三种组合的协同计算;三是高级分析和报告输出,PDF 和 Word 格式的可研报告、多场景对比矩阵、盈亏平衡曲线;四是扩展财务模型,建设期分年投入、流动资金、偿债准备金等更细粒度的财务科目。
基础版不包含专业版的任何代码,finance.js 里没有 sensitivity.js 和 report.js 的引用,simulation.js 用 try/catch 懒加载,在基础版中永远返回 false。首页的锁定卡片点击后弹出说明弹窗,而不是报错。
写在最后
绿电投研不是一个“大而全”的 SaaS 平台,它只是一个工具。一个打开就能用、用完就能走的工具。它的价值不在于功能多,而在于把 Excel 里那些复杂的公式和链接,变成手机上几个输入框和一张图表。
它没有用到什么前沿的技术,正因为基础,所以稳定——不需要处理兼容性,不需要考虑网络异常,不需要担心数据泄露。
有时候,最简单的技术栈,就是最合适的技术栈。