Conversation
Recreate Exhibit IV Sheets 2-4 (actual-versus-expected reported) without depending on Chapters 7-10 JSON. Co-authored-by: Cursor <cursoragent@cursor.com>
Pyright Type CompletenessView the full Project (full
Other symbols referenced but not exported by
Symbols without documentation:
Patch (exported symbols added or changed by this PR): no exported symbol type-completeness changes detected. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1224 +/- ##
=======================================
Coverage 91.79% 91.79%
=======================================
Files 96 96
Lines 5494 5494
Branches 707 707
=======================================
Hits 5043 5043
Misses 327 327
Partials 124 124
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
|
On the two questions: DC Insurer as a sample dataset. I would not add one in this PR. Sheets 2-4 only use the 12/31/2007 latest diagonal and the selected CDFs. The quarterly triangle in Sheet 1 was not reconstructable from the PDF extract, and the other Friedland samples exist because those chapters reuse the full triangle. Shipping Expected emergence as a Triangle property/method. I would not add one here either. Fitted objects already expose the next-period expected:
Friedland's formula is the incremental expected from |
this is not true. Based on the selected tail factor, we can safely assume there's no development beyond 36 months
this is also not true. there are single diagonal datasets from chapter 8 that are loaded as sample data.
please use the fitted object in the exhibit. the point is to use chainladder objects to produce matching exhibits, rather than demonstrating pandas manipulation. |
…d model Henry's review: ship the two diagonals like the chapter 8 single-diagonal samples, and take CY 2008 expected emergence from full_triangle_ instead of a numpy formula. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Those two claims were wrong. Chapter 8 already ships single-diagonal samples ( Pushed a follow-up that:
Sheet 4 still interpolates the quarterly percent-reported pattern because the sample is annual grain. No new Triangle method. |
|
|
@EKtheSage bump |
…rop the mojibake dashes, and build Sheet 2 from model_diagnostics. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Headings no longer use en/em dashes. friedland_dc_insurer is now the quarterly Sheet 1 triangle (ages 3-36), with the 12/31/2007 carry-forward (no development after 36 months) and the 12/31/2008 diagonal. The notebook prints that triangle and the selected CDFs. Sheet 2 Latest / CDF / Ultimate come from model_diagnostics on the fitted Chainladder model. |
|
looks good! please resolve conflict and i can approve. |
…5-monitoring Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # chainladder/utils/data/_manifest.py # docs/_toc.yml
|
"Merged upstream/main into this branch.\n\nConflict resolution:\n- docs/_toc.yml: keep both chapter 11 and chapter 15\n- chainladder/utils/data/_manifest.py: keep the DC Insurer sample, keep main\u0027s Incremental Paid Severity on xyz_auto_bi, drop xyz_disp. Module docstring is D213 so the new ruff select on this touched file is green." |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f927dc4. Configure here.
| "scale_feb = np.divide(\n", | ||
| " ibnr_jan, unreported_jan, out=np.zeros(len(ibnr)), where=unreported_jan > 0\n", | ||
| ")\n", | ||
| "expected_feb = np.round(scale_feb * (pct_feb - pct_jan), 0)\n", |
There was a problem hiding this comment.
February expected uses actuals not original IBNR
Medium Severity
February expected emergence is built from remaining IBNR after January actuals (Projected Ultimate minus reported_jan), while January expected and the notebook formula both use the original fitted ibnr_ and the 12/31/07 percent reported. When January actuals miss the interpolated pattern, February expected no longer matches the static selected-ultimate emergence used on Sheet 3 and in Friedland's worked formula, so the monthly actual-versus-expected test can disagree with the printed exhibit by a large amount.
Reviewed by Cursor Bugbot for commit f927dc4. Configure here.
There was a problem hiding this comment.
@EKtheSage can you please confirm this is hallucination?


Summary
docs/friedland/chapter_15_monitoring.ipynbrecreating Friedland Exhibit IV Sheets 2-4: selected ultimates at 12/31/2007, then annual and monthly actual-versus-expected reported claims.DevelopmentConstant/Chainladderfor the Sheet 2 ultimates and the printed reporting-pattern formula for expected emergence. No new sample CSV — Sheet 1's quarterly triangle is not required for the monitoring tests.Related to #588.
Test plan
pytest --nbmake docs/friedland/chapter_15_monitoring.ipynbMade with Cursor