Skip to content

Commit

Permalink
Merge pull request #163 from carbonplan/add-buffer-decline-post
Browse files Browse the repository at this point in the history
Add buffer decline post
  • Loading branch information
Shane98c authored Apr 5, 2024
2 parents d92b4d3 + 4a8b4ab commit 97c579d
Show file tree
Hide file tree
Showing 3 changed files with 166 additions and 0 deletions.
7 changes: 7 additions & 0 deletions components/mdx/page-components.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@ import dynamic from 'next/dynamic'
// NOTE: This is a dynamically generated file based on the config specified under the
// `components` key in each post's frontmatter.
const components = {
'carb-buffer-decline': {
BufferBalance: dynamic(() =>
import('../../posts/carb-buffer-decline/buffer-balance.js').then(
(mod) => mod.BufferBalance || mod.default
)
),
},
'vcl-update-v2024.04.0': {
VCLChart: dynamic(() =>
import('../../posts/vcl-update-v2024.04.0/vcl-chart.js').then(
Expand Down
34 changes: 34 additions & 0 deletions posts/carb-buffer-decline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
version: 1.0.0
title: California’s shrinking buffer pool
authors:
- Grayson Badgley
date: 04-05-2024
summary: New data released by the California Air Resources Board shows that California’s forest offset buffer pool has shrunk two quarters in a row.
card: carb-buffer-decline
components:
- name: BufferBalance
src: ./buffer-balance.js
---

New data released yesterday by the California Air Resources Board (CARB) shows that California's forest carbon buffer pool shrank by 0.97 million credits, compared to Q4 2023. This marks the second quarter in a row where CARB’s official reporting has shown the buffer pool decreasing in size. In the previous quarter, the buffer pool lost more than 3.4 million credits. The quarterly losses from these official reports from CARB are consistent with our previous attempts to independently track carbon losses on a project-by-project basis.

California’s forest offsets program uses a sort of self-insurance program, called a buffer pool, to insure carbon losses that stem from unexpected events, like wildfire. All projects pay into the pool when they’re issued new credits. The regulator retires credits from the pool when something goes wrong. While we’ve [regularly](https://carbonplan.org/research/offset-project-fire) [covered](https://www.frontiersin.org/articles/10.3389/ffgc.2022.930426/full) [carbon](https://carbonplan.org/blog/bootleg-fire-update) [losses](https://carbonplan.org/blog/buffer-update-two) at the scale of individual projects, this update looks at CARB’s [Compliance Instrument Reports](https://ww2.arb.ca.gov/our-work/programs/cap-and-trade-program/program-data/compliance-instrument-report), which provide an official accounting of the current size of California’s forest offset buffer pool. These data provide additional context about the significance of carbon loss events over the years at a program-wide scale (Figure 1).

<Figure>
<BufferBalance />
<FigureCaption number={1}>
The size of California’s forest offset buffer pool, based on quarterly
Compliance Instrument Reports released by the California Air Resources
Board. For much of the program’s history, the buffer pool has steadily
grown. The two most recent quarters mark a change in that pattern.
</FigureCaption>
</Figure>

From the program’s outset, California’s buffer pool has steadily grown because the number of new credits added each year has exceeded the number lost. The size of the buffer pool peaked in Q3 2023 with 31.64 million credits. Along the way, California has dipped into the pool, resulting in quarter-to-quarter declines a few times over the years. Those previous declines, however, have tended to be both small and transient. Prior to these last two reports, the largest net quarterly decline occurred back in 2017, when the buffer pool experienced a loss of 0.54 million credits between Q2 and Q3. Despite these blips, the buffer pool has invariably bounced back by the next quarter.

This newest report, however, marks the first time the buffer pool has declined over two consecutive quarters. Around 4.38 million credits were lost over the last two quarters. By comparison, a total of 2.74 million credits were added to the buffer pool in all of 2022 and 2023, combined.

Meanwhile, the buffer pool is already on the hook for additional losses that are still making their way through verification. We estimate that wildfire losses from two projects, [ACR260](https://carbonplan.org/research/offsets-db/projects/acr260) and [ACR255](https://carbonplan.org/research/offsets-db/projects/acr255), will eventually remove around 4.5 million credits from the buffer pool once they have been officially counted. Absent a sudden infusion of credits from new project development, we should expect the buffer pool to continue to shrink in the quarters ahead.

The buffer pool still has more than 27 million credits in the bank. But after a decade of steady growth, these two quarters of decline should serve as a wake up call. The impacts of climate change are expected to get worse and the buffer pool can’t outrun those risks forever.
125 changes: 125 additions & 0 deletions posts/carb-buffer-decline/buffer-balance.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
import { Box } from 'theme-ui'
import { format } from 'd3-format'
import {
Chart,
Ticks,
TickLabels,
Axis,
AxisLabel,
StackedBar,
Plot,
Grid,
Point,
} from '@carbonplan/charts'

const data = {
'2014-04-01': null,
'2014-07-01': 1193461.0,
'2014-10-01': 1238339.0,
'2015-01-01': 1699634.0,
'2015-04-01': 1816791.0,
'2015-07-01': 2443254.0,
'2015-10-01': 3822389.0,
'2016-01-01': 4104963.0,
'2016-04-01': 4167304.0,
'2016-07-01': 5255109.0,
'2016-10-01': 6267389.0,
'2017-01-01': 6412926.0,
'2017-04-01': 7937763.0,
'2017-07-01': 7395709.0,
'2017-10-01': 9854044.0,
'2018-01-01': 12642852.0,
'2018-04-01': 13592716.0,
'2018-07-01': 14103294.0,
'2018-10-01': 17802767.0,
'2019-01-01': 19690569.0,
'2019-04-01': 20025522.0,
'2019-07-01': 20933077.0,
'2019-10-01': 21746192.0,
'2020-01-01': 22276604.0,
'2020-04-01': 24079774.0,
'2020-07-01': 24637128.0,
'2020-10-01': 27392548.0,
'2021-01-01': 28706601.0,
'2021-04-01': 28578968.0,
'2021-07-01': 29053336.0,
'2021-10-01': 29819664.0,
'2022-01-01': 30215556.0,
'2022-04-01': 30374173.0,
'2022-07-01': 30484812.0,
'2022-10-01': 30942686.0,
'2023-01-01': 30910407.0,
'2023-04-01': 31057039.0,
'2023-07-01': 31637009.0,
'2023-10-01': 28233448.0,
'2024-01-01': 27222924.0,
}

const keys = Object.keys(data)
const counts = keys.map((k, index) => {
const [year, month] = k.split('-').map(Number)
const x = year + (month - 1) / 12
const previousIndex = index - 1
const previousValue = data[keys[previousIndex]] ?? 0
return [
x,
0,
data[k] ?? 0,
data[k] ?? 0,
previousValue > data[k] ? previousValue : 0,
]
})

const BufferBalance = () => {
const formatter = format('~s')

return (
<Box sx={{ width: '100%', height: ['275px', '350px', '350px', '350px'] }}>
<Chart x={[2014.25, 2024.25]} y={[0, 40000000]} padding={{ left: 60 }}>
<Ticks left />
<Ticks
bottom
count={10}
sx={{ display: ['none', 'inherit', 'inherit', 'inherit'] }}
/>
<Ticks
bottom
count={5}
sx={{ display: ['inherit', 'none', 'none', 'none'] }}
/>
<TickLabels left format={formatter} />
<TickLabels
bottom
count={10}
sx={{ display: ['none', 'inherit', 'inherit', 'inherit'] }}
/>
<TickLabels
bottom
count={5}
sx={{ display: ['inherit', 'none', 'none', 'none'] }}
/>
<Axis left bottom />
<Grid horizontal count={5} />
<AxisLabel left>Credits</AxisLabel>
<AxisLabel bottom>Year</AxisLabel>
<Plot>
<StackedBar data={counts} color={['grey', 'grey', 'red']} />
</Plot>
<Point x={2024.125} y={35000000} align='right' verticalAlign='bottom'>
<Box
sx={{
color: 'red',
textTransform: 'uppercase',
fontFamily: 'mono',
fontSize: [0, 1, 1, 1],
}}
>
Buffer Pool Declines
</Box>
</Point>
</Chart>
</Box>
)
}

export default BufferBalance

0 comments on commit 97c579d

Please sign in to comment.