Skip to content

publish2026-jun02

Choose a tag to compare

@github-actions github-actions released this 02 Jun 08:18
· 43 commits to main since this release
6c511da
Add Maximum Sustainable Yield and Fishery Collapse lecture (#763)

* Add Maximum Sustainable Yield and Fishery Collapse lecture (#755)

New lecture lectures/msy_fishery.md, slotted under Nonlinear Dynamics
after solow. Builds the deterministic Schaefer MSY model (logistic
growth, 45-degree diagrams, sustainable yield, MSY via grid search and
optional calculus), then adds environmental randomness to show why a
constant MSY quota sits on a knife-edge and collapses, versus a
self-correcting constant-effort policy. Includes the Peruvian anchovy
and Atlantic cod collapses, plus exercises on precautionary quotas and
large-r logistic chaos.

Adds schaefer1954, gordon1954, may1976, clark1990 to quant-econ.bib.

Closes #755

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Revise MSY lecture: rename effort to e, yield to y*(e), add early graphic

- Rename effort symbol E -> e and sustainable yield Y(E) -> y*(e)
  throughout prose, math, and code, matching the x*(e) notation.
- Introduce y*(e) graphically with a growth-vs-harvest figure right
  where it is defined, marking x*(e) and y*(e) at effort e=20.
- Shrink the two 45-degree diagrams by 10% (figsize 5.5 -> 4.95).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Implement TODOs in revised first half of MSY lecture

- Add a figure showing the shape of the logistic growth curve G(x);
  move the G definition above it.
- Refactor plot_45 to take the one-year map as a function argument, so
  the no-fishing 45-degree diagram works before fishing/effort and the
  update() function are introduced; update both call sites to pass
  lambdas.
- Add the two-effort 45-degree diagram (staircases omitted) showing
  x*(e) falling with effort.
- Fix the multi-effort growth-vs-harvest figure: use explicit efforts
  [12.5, 25, 37.5] and G(K/2) for the y-limit (e_msy/MSY are not yet
  defined there), and fix the label typo.
- Restore the grid-search computation of e_msy, MSY, x_msy in the MSY
  section.
- Drop the under/over-fishing framing from the yield-effort curve per
  review note, since under randomness no constant policy is fully safe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Align MSY lecture with QuantEcon style guide; fix two typos

Following manual/styleguide (figures.md, math.md, references.md):

- Remove all embedded matplotlib titles (ax.set_title / fig.suptitle)
  and add mystnb figure captions + names to every figure cell.
- Keep the figure box: drop all ax.spines[...].set_visible(False).
- Standardize data-line widths to lw=2; drop figsize from standard
  single-panel charts (keep square figsize on the cobweb diagrams and
  the stacked stochastic panel as justified exceptions).
- Label the two policy panels with in-axes text rather than titles.
- Use {cite:t} for in-sentence citations (Schaefer/Gordon/Clark,
  Following Schaefer, analyzed by May); keep {cite} for parenthetical.
- Fix typos: "according the" -> "according to the"; "called
  intrinsic" -> "called the intrinsic".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Reflow msy-policies figure caption

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Fix LaTeX PDF build: drop figure floats inside solution blocks

The mystnb figure captions on the two code-cells inside the
{solution-start}/{solution-end} dropdowns produced LaTeX figure floats
nested in a directive, triggering "! LaTeX Error: Not in outer par
mode." Per the admonitions style guide (use image, not figure floats,
inside exercise/solution directives for PDF builds), remove the caption
metadata from those two solution cells; the top-level captioned figures
are unaffected. Verified with a local pdflatex build (24-page PDF, no
error).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Restructure MSY lecture around quotas; fix yield-effort build break

Reframe as "Fishery Management: Quotas and MSY": compute the MSY after
introducing the yield-effort dome, add Dynamics and Adding randomness
subsections, list x/r/K under the growth equation, and credit the
"Maths from the past" discussion.

Fix the reorder regression: the yield-effort figure referenced MSY in
set_ylim before MSY is computed (NameError); use y_grid.max() instead.
Also fix two typos ("sevaral" -> "several"; missing question mark).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* 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>

* Use default color cycle for data series; minor prose/tense fixes

Per QuantEcon convention, let matplotlib pick data-series colors (C0/C1
standard pair) instead of hard-coding C0/C3; reserve explicit color for
reference elements only (black 45-degree line/cobweb/markers/guides,
grey milestone lines). Markers now follow their line via get_color().
Lingcod overfishing band switched from red to neutral grey.

Also fold in the user's prose edits (overview rewording, G(x)
definition, hide-input on plot_45, simplified update equation, tightened
lingcod narrative) and fix a past/present tense slip in that narrative.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>