Skip to content

Commit ab22a82

Browse files
jstacclaude
andcommitted
Add MSY success story: Pacific Coast lingcod recovery
Insert a new section before "Randomness, risk and collapse" so the lecture shows MSY-based management working before discussing its failures. Uses RAM Legacy Stock Assessment Database series for U.S. Pacific Coast lingcod (B/B_MSY and F/F_MSY, 1928-2009): sustained overfishing drives biomass to ~0.27 B_MSY, then an MSY-anchored rebuilding plan (overfished 1999, rebuilt 2005) pulls F below F_MSY and biomass recovers and overshoots -- the model's negative feedback in real data. Includes honest caveats that tee up the randomness section. Vendor the small series as datasets/lingcod_msy_recovery.csv (read locally, no build-time download); add pandas import and the ricard2012 bib entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 659f66f commit ab22a82

3 files changed

Lines changed: 207 additions & 0 deletions

File tree

lectures/_static/quant-econ.bib

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2957,3 +2957,14 @@ @book{clark1990
29572957
year={1990},
29582958
publisher={Wiley}
29592959
}
2960+
2961+
@article{ricard2012,
2962+
title={Evaluating the knowledge base and status of commercially exploited marine species with the {RAM} Legacy Stock Assessment Database},
2963+
author={Ricard, Daniel and Minto, Coilin and Jensen, Olaf P. and Baum, Julia K.},
2964+
journal={Fish and Fisheries},
2965+
volume={13},
2966+
number={4},
2967+
pages={380--398},
2968+
year={2012},
2969+
publisher={Wiley}
2970+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
year,B_over_Bmsy,F_over_Fmsy
2+
1928,3.859289617,0.12815534
3+
1929,3.842213115,0.177669903
4+
1930,3.825136612,0.198058252
5+
1931,3.790983607,0.19223301
6+
1932,3.756830601,0.142718447
7+
1933,3.756830601,0.224271845
8+
1934,3.705601093,0.14368932
9+
1935,3.705601093,0.170873786
10+
1936,3.671448087,0.133009709
11+
1937,3.671448087,0.173786408
12+
1938,3.654371585,0.146601942
13+
1939,3.637295082,0.127184466
14+
1940,3.637295082,0.145631068
15+
1941,3.637295082,0.117475728
16+
1942,3.637295082,0.067961165
17+
1943,3.654371585,0.131067961
18+
1944,3.654371585,0.132038835
19+
1945,3.654371585,0.130097087
20+
1946,3.637295082,0.216504854
21+
1947,3.603142077,0.430097087
22+
1948,3.50068306,0.462135922
23+
1949,3.398224044,0.413592233
24+
1950,3.31284153,0.45631068
25+
1951,3.227459016,0.453398058
26+
1952,3.142076503,0.350485437
27+
1953,3.090846995,0.246601942
28+
1954,3.073770492,0.290291262
29+
1955,3.056693989,0.308737864
30+
1956,3.039617486,0.355339806
31+
1957,3.005464481,0.526213592
32+
1958,2.920081967,0.539805825
33+
1959,2.851775956,0.466990291
34+
1960,2.800546448,0.417475728
35+
1961,2.74931694,0.449514563
36+
1962,2.698087432,0.386407767
37+
1963,2.663934426,0.391262136
38+
1964,2.629781421,0.340776699
39+
1965,2.612704918,0.413592233
40+
1966,2.578551913,0.518446602
41+
1967,2.527322404,0.57961165
42+
1968,2.476092896,0.612621359
43+
1969,2.407786885,0.575728155
44+
1970,2.339480874,0.850485437
45+
1971,2.237021858,1.077669903
46+
1972,2.117486339,1.563106796
47+
1973,1.929644809,1.766990291
48+
1974,1.741803279,1.951456311
49+
1975,1.572745902,1.951456311
50+
1976,1.449795082,2.077669903
51+
1977,1.321721311,1.485436893
52+
1978,1.270491803,1.941747573
53+
1979,1.166325137,2.718446602
54+
1980,1.00068306,3.378640777
55+
1981,0.840163934,3.378640777
56+
1982,0.712090164,3.504854369
57+
1983,0.594262295,2.67961165
58+
1984,0.544740437,2.805825243
59+
1985,0.488387978,3.951456311
60+
1986,0.403005464,3.854368932
61+
1987,0.37568306,4.019417476
62+
1988,0.37397541,4.310679612
63+
1989,0.358606557,4.834951456
64+
1990,0.3125,4.553398058
65+
1991,0.285177596,4.32038835
66+
1992,0.268101093,4.174757282
67+
1993,0.256147541,3.485436893
68+
1994,0.266393443,2.27184466
69+
1995,0.315915301,2.019417476
70+
1996,0.365437158,2.038834951
71+
1997,0.396174863,1.815533981
72+
1998,0.425204918,1.300970874
73+
1999,0.479849727,1.398058252
74+
2000,0.539617486,0.63592233
75+
2001,0.650614754,0.49223301
76+
2002,0.800887978,1.029126214
77+
2003,0.988729508,1.291262136
78+
2004,1.243169399,0.195145631
79+
2005,1.656420765,0.261165049
80+
2006,2.083333333,0.249514563
81+
2007,2.510245902,0.144660194
82+
2008,2.885928962,0.093203883
83+
2009,3.193306011,

lectures/msy_fishery.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Let's start with some standard imports.
4949

5050
```{code-cell} ipython3
5151
import numpy as np
52+
import pandas as pd
5253
import matplotlib.pyplot as plt
5354
```
5455

@@ -556,6 +557,118 @@ Over-fishing is then the exact analogue of over-saving (dynamic inefficiency):
556557
more of the control, less of the flow.
557558
```
558559
560+
## A success story: Pacific Coast lingcod
561+
562+
Before turning to the risks, it is worth seeing the MSY framework succeed.
563+
564+
A clean example is the lingcod (*Ophiodon elongatus*) fishery off the U.S.
565+
Pacific Coast.
566+
567+
Lingcod is managed using MSY-based reference points: a target biomass and a
568+
target fishing pressure that together define the maximum sustainable yield.
569+
570+
To follow the fishery we use two dimensionless ratios.
571+
572+
The first is $B / B_{MSY}$, the stock biomass relative to the biomass $B_{MSY}$
573+
that supports the MSY.
574+
575+
(In our model this reference stock is $x^* = K/2$.)
576+
577+
The second is $F / F_{MSY}$, fishing pressure relative to the pressure
578+
$F_{MSY}$ that achieves the MSY.
579+
580+
(In our model this is the MSY effort $e_{MSY}$.)
581+
582+
Each ratio is measured against its own MSY reference point, so the value $1$ is
583+
simultaneously the target and the limit.
584+
585+
The data come from the RAM Legacy Stock Assessment Database {cite:t}`ricard2012`.
586+
587+
```{code-cell} ipython3
588+
---
589+
mystnb:
590+
figure:
591+
caption: Pacific Coast lingcod recovery
592+
name: fig:lingcod
593+
---
594+
lingcod = pd.read_csv('datasets/lingcod_msy_recovery.csv')
595+
596+
fig, ax = plt.subplots()
597+
598+
ax.axhline(1.0, color='black', lw=1, ls='--')
599+
ax.text(1930, 1.05, r'MSY reference ($=1$)', fontsize=9, va='bottom')
600+
601+
ymax = max(lingcod['B_over_Bmsy'].max(), lingcod['F_over_Fmsy'].max()) * 1.06
602+
603+
# shade the years when fishing pressure exceeded the MSY level
604+
over = lingcod['F_over_Fmsy'] > 1
605+
ax.fill_between(lingcod['year'], 0, ymax, where=over,
606+
color='C3', alpha=0.08)
607+
608+
ax.plot(lingcod['year'], lingcod['B_over_Bmsy'], color='C0', lw=2,
609+
label=r'$B / B_{MSY}$ (biomass)')
610+
ax.plot(lingcod['year'], lingcod['F_over_Fmsy'], color='C3', lw=2,
611+
label=r'$F / F_{MSY}$ (fishing pressure)')
612+
613+
ax.axvline(1999, color='grey', lw=0.8, ls=':')
614+
ax.axvline(2005, color='grey', lw=0.8, ls=':')
615+
ax.text(2000, ymax * 0.97, 'overfished (1999)', ha='left', va='top',
616+
fontsize=8.5, color='dimgrey')
617+
ax.text(2000, ymax * 0.88, 'rebuilt (2005)', ha='left', va='top',
618+
fontsize=8.5, color='dimgrey')
619+
620+
ax.set_xlabel('year')
621+
ax.set_ylabel('ratio to MSY reference point')
622+
ax.set_xlim(lingcod['year'].min(), lingcod['year'].max())
623+
ax.set_ylim(0, ymax)
624+
ax.legend(loc='upper center', frameon=False)
625+
plt.tight_layout()
626+
plt.show()
627+
```
628+
629+
The story unfolds in three acts.
630+
631+
Through the 1960s the stock is lightly exploited: $F$ sits well below $F_{MSY}$
632+
and biomass drifts down slowly from a high level.
633+
634+
From the early 1970s fishing pressure climbs above $F_{MSY}$ and stays there for
635+
nearly three decades.
636+
637+
Biomass falls steadily, reaching a trough of about $0.27\,B_{MSY}$ in 1993 ---
638+
close to collapse.
639+
640+
In 1999 the stock was formally declared *overfished*, and a rebuilding plan cut
641+
catches sharply.
642+
643+
Fishing pressure dropped well below $F_{MSY}$, and biomass climbed back through
644+
$B_{MSY}$ by 2004.
645+
646+
The stock was declared fully *rebuilt* in 2005, ahead of schedule, and then
647+
overshot its target.
648+
649+
This is exactly the negative feedback built into the model.
650+
651+
Push fishing above the MSY level and the stock falls; pull it below and the
652+
stock recovers toward $B_{MSY}$.
653+
654+
Used as a steering target, the MSY reference point did its job.
655+
656+
A few caveats keep the story honest --- and set up the next section.
657+
658+
First, attribution is never clean: a strong 1999 year-class also helped, so the
659+
cut in fishing was necessary but recruitment luck set the speed of recovery.
660+
661+
Second, $B_{MSY}$ and $F_{MSY}$ are *estimated* quantities, revised at each
662+
assessment; the famous MSY failures are often failures of estimating the
663+
reference point rather than of the control rule itself.
664+
665+
Third, the recovery rode partly on coast-wide measures aimed at the whole
666+
groundfish community, a reminder that single-species MSY targets sit inside a
667+
multispecies system.
668+
669+
The next section takes these caveats seriously, and asks what randomness does to
670+
MSY-based management.
671+
559672
## Randomness, risk and collapse
560673
561674
As mentioned in the introduction to this lecture, MSY-based policies have not

0 commit comments

Comments
 (0)