Methodology Version History
Current version is methodology@2026-05-21. Every prior version below remains valid and verifiable — PhaseFolio never rewrites history. If you hold a signed export, find the version it was stamped with to see exactly what the engine and methodology meant at that moment.
Every signed PhaseFolio export embeds the methodology version it was computed under. No version is ever retroactively changed or invalidated — older versions remain valid forever and continue to verify at /verify. Full-page immutable snapshots begin with methodology@2026-05-16; for versions before that, the change summary below is the public record and the value stamped in your export is the binding one. Both the earlier monthly form (@YYYY-MM) and the current daily form (@YYYY-MM-DD) are accepted indefinitely.
Added two new methodology sections disclosing the SG&A% and tax-rate priors that now seed the rNPV wizard's sga_pct and tax_rate inputs (both coarse, wide-band, user-overridable priors), and appended a multiplier-governance section to the PoS Calibration page stating the cohort-validation gate that decides which multipliers may score the engine. All three are additive disclosures — no engine math, no PoS equation, and no previously published number changed.
- New section 'Commercial-Model SG&A Benchmark' published at /methodology/sga-benchmark. SG&A% is keyed on the asset's COMMERCIAL MODEL, not its modality, because salesforce size, prescriber breadth, DTC, and patient-services intensity drive the ratio — not the molecule. Three tiers: Orphan/rare 32% (band 28–42%), Specialty 25% (20–34%), Primary care 25% (22–30%). Each tier carries a real FY2024 public-company comparable set computed from raw filings.
- Key disclosures in the SG&A section: (1) orphan is the counterintuitive HIGH tier — a small revenue denominator plus dedicated rare-disease commercial infrastructure pushes SG&A% above broad-market; (2) specialty and primary care share a ~25% central because the data does not support a meaningful gap (the real differentiation is orphan vs broad); (3) Vertex 13.2% is a mature mega-franchise low-end outlier, not the orphan central; (4) the bands are steady-state ratios — early-commercial SG&A% is inflated and can exceed 100% of net revenue; (5) override per asset with an asset-specific commercial plan.
- New section 'Tax Rate Benchmark' published at /methodology/tax-benchmark. The wizard defaults tax_rate to the US federal statutory 21% (26 U.S.C. §11(b)) — a transparent, jurisdiction-neutral, conservative anchor that is deliberately NOT keyed on modality or archetype (corporate tax is a function of jurisdiction, IP domicile, and NOL position, not the asset).
- Key disclosures in the tax section: (1) real pharma effective rates run far below statutory (~0–16%: Pfizer ~(0.4)%, Amgen ~11%, AbbVie ~15%) via IP domicile, GILTI, FDII, and R&D credits, so 21% over-taxes vs a real acquirer and understates NPV — the conservative direction for a VC; (2) the post-2017 §172 cap limits NOL offset to 80% of taxable income, so an accumulated-NOL company still pays tax on ≥20% of profit — 'clinical-stage means 0% tax' is wrong; (3) the user should adjust the rate down toward the mid-teens to model an acquirer with offshore IP.
- Appended a 'Guarding against overfitting' section to the PoS Calibration methodology (/methodology/pos-calibration) stating the multiplier-governance gate: a multiplier may score the engine only if a held-out cohort containing both approvals and failures can validate it; a signal that fires only on a cohort's failures, with no approved counterexample, is demoted to a non-scored, display-only risk flag. The antimicrobial backtest is the worked proof — a pre-publication ablation demoted two of three candidate multipliers, and the published scored AUC is the defensible 0.629 from the one validatable factor, not the uncheckable 0.797 the unvalidated pair would have shown. This formalizes in one place a discipline the engine already followed; no number changed.
- No rNPV engine change, no PoS equation change, and no numeric output moved. No engine_version bump. The PoS Calibration body gained the governance section above as additive prose with zero numeric effect; its prior state is frozen as the pos-calibration@2026-04 snapshot. The prior global version methodology@2026-05-20 (the Modality COGS Benchmark) is also captured as a full-page immutable snapshot so any export stamped under it stays resolvable. Exports stamped under earlier methodology versions remain valid and continue to verify at /verify.
Added a new methodology section disclosing the per-modality COGS% prior that now seeds the rNPV wizard's cogs_pct input. The prior is a constructed, disclosed ratio — steady-state fully-burdened manufacturing cost divided by a stated reference net price — covering 7 modalities. No engine math, PoS equation, or existing section body changed; this is an additive disclosure only.
- New section 'Modality COGS Benchmark' published at /methodology/cogs-benchmark. Covers Small Molecule (8%, 5–15%), Peptide (12%, 8–20%), Monoclonal Antibody (18%, 12–25%), Bispecific (22%, 15–30%), ADC (20%, 13–30%), Cell Therapy (22%, 17–28%), and Gene Therapy (13%, 2–25% bimodal). Both manufacturing cost anchor and reference net price disclosed per row.
- Key disclosures in the new section: (1) COGS% is price-dominated — the denominator (price) drives the ratio far more than manufacturing cost; same CAR-T ≈ 24% at $400k vs ~10% at $1M; same AAV cost is ~2–5% of a $2.1M Zolgensma course but ~12–25% of a $400–850k course. (2) Constructed ratio, not a 10-K figure: 10-Ks report blended portfolio margins; pre-profit CGT shows launch-distorted 60–90% COGS from under-absorbed suites — values use steady-state. (3) Antibody naïve DS÷price floor (~1–3%) is not COGS% — it omits fill-finish, QC, yield loss, royalties, and reserves. (4) Bispecific cost premium (1.3–2× mAb) and peptide $/g are flagged as lower-confidence. (5) Gene therapy default deliberately re-centered to 13% (vs price-weighted ~8%) to avoid understating COGS at typical pricing; gene therapy must never be ranked above monoclonal antibody on COGS%.
- Prior purpose: wizard default only (cogs_pct was previously 0 — modality-blind). Override per asset with asset-specific cost and price. SG&A defaults to 0 and is user-supplied; the COGS prior implies no SG&A value.
- No rNPV engine change, no PoS equation change, no existing methodology section body changed. No engine_version bump. Exports stamped under earlier methodology versions remain valid and continue to verify at /verify.
The JHTV public-data case study's asset-specific deep-dive set was expanded from the top 10 to the top 50 of the same published ranking. No methodology version bump: no rubric weight, equation, subscore method, cited source, or dataset changed, and the ranking was not re-derived — this is a coverage and transparency change with zero effect on any previously published number.
- Deep-dive coverage expanded top 10 → top 50. Ranks 11–50 were read straight from the existing jhtv-portfolio@2026-Q2 ordering and worked up with the identical comparator-anchored method under the unchanged rubric@2026-Q2-v3 / methodology@2026-05-07. Methodology version deliberately NOT bumped (method unchanged) — same discipline as the 2026-05-16 transparency projection.
- rNPV engine provenance honestly re-stamped 1.0.0 → 2.1.0: the artifact is now produced by the current engine. A demo-invariance check confirmed every original top-10 rNPV / eNPV / cumulative-PoS / Monte-Carlo / tornado value reproduces bit-identically (delta $0.00) under 2.1.0, so the re-stamp is honest provenance, not a numeric change. Exports stamped under engine 1.0.0 remain valid and continue to verify.
- Ranks 11–50 skew toward enabling technologies, research tools, and basic-science discoveries; each carries an explicit asset-class and funding-path label plus a per-asset CMO defensibility audit (112 hard / 71 soft findings across 38 assets, every hard finding resolved in that asset's own thesis, key-risks, or archetype before publication). Deep-dive research models disclosed as Anthropic Claude Opus 4.7 (top 10 + 20 of ranks 11–50) and OpenAI GPT-5.5 (18 of ranks 11–50), each run as an autonomous tool-using agent; no MD/PhD review; every claim source-anchored and verifiable.
Added an explicit statement of what a backtest does and does not cover for any individual scenario, and began stamping per-stage PoS provenance (benchmark default vs user-adjusted) onto signed exports. No cohort, AUC, engine, or equation changed — this is a disclosure and transparency addition only.
- New 'Backtest coverage of a specific scenario' limitation: the backtests validate the default BIO/QLS-2021 benchmark probabilities only, and only within the three published cohorts (RA, NSCLC, antimicrobial). A scenario inherits that validation only where its stage probabilities are the benchmark defaults; any user-adjusted value is outside the backtested regime by definition.
- Stated explicitly that the platform does not infer whether a given asset falls inside a backtested cohort — scenarios are classified by broad indication bucket, not the sub-indication the cohorts are defined at — so no automated per-scenario 'validated' claim is ever made. Cohort applicability is left to the reader's judgment.
- Signed exports (PDF and Excel) now carry a per-stage PoS provenance line so a reviewer can see exactly which inputs the backtest evidence bears on.
- No numeric change: RA 0.625 / NSCLC 0.709 / antimicrobial 0.629 and every engine output are unchanged; engine_version unchanged. Exports stamped at earlier methodology versions remain valid forever and continue to verify at /verify.
Closed the antimicrobial cohort's discrimination gap with one cohort-validatable scored multiplier, and published the full ablation rather than the most flattering number. Same-day amendments refined the gate, disclosed the cross-cohort anchor rule, and reimagined the methodology page for readability.
- Antimicrobial pairwise AUC 0.524 → 0.629 (clears the conventional ≥0.60 PASS bar) — the lift is entirely the single-asset-sponsor-fragility multiplier, the one Sprint-1 signal the cohort can independently validate because it fires on three approvals as well as failures.
- Two other candidate signals (hepatotoxicity mechanism-class; sustained-clinical-response endpoint fragility) were deliberately demoted to non-scored risk flags after a pre-publication ablation showed they fire only on this cohort's failures. The full ablation (baseline 0.524 / M3-only 0.631 / M1+M2-only 0.797 / all-three 0.782) is published, not just the largest number.
- Same-day: limited-population-pathway gate fix (net −0.002; final 0.629); explicit cross-cohort anchor-selection disclosure (why the antimicrobial cohort is Phase-3-anchored while RA and NSCLC are Phase-2-anchored — a disclosed consequence of registry observability); engine-evolution and rheumatoid-arthritis trial-duration remediation declared; backtest methodology page reimagined for readability with an explicit LLM-CMO-grade (Claude Opus 4.7, not a human medical officer) verification disclosure and a new Back-Test Library directory.
- Rheumatoid arthritis (0.625) and NSCLC (0.709) were re-run as a regression and are number-identical — the antibacterial multipliers are no-ops outside the antimicrobial cohort.
Added the antimicrobial cohort as the third published backtest and introduced antibacterial-specific PoS modifiers. At this version the engine's Phase-3-entry probability was well-calibrated as a point estimate but did not yet discriminate approved from failed antibacterials.
- New cohort: 36 antibacterial Phase 3 entrants (2004–2019), 25 approved / 11 not approved. Initial pairwise AUC 0.531 — near no-skill at this version.
- Added antibacterial-specific probability modifiers (indication tier, QIDP designation, limited-population pathway).
- Locked in the unit-of-analysis (drug × Phase 3 indication program), the first-decision outcome definition, and the excluded-by-design list.
- Rheumatoid arthritis and NSCLC behaviour unchanged at their prior versions.
Dropped the IRA-exposure rubric dimension because it double-counted a risk the rNPV engine already models, and promoted the version-string format from monthly to daily granularity.
- IRA-exposure dimension removed from the scoring rubric (20% weight → 0%): the Inflation Reduction Act cliff is already modelled inside the rNPV engine's Year-9 / Year-13 terminal-value discount, so weighting it again in a scouting rubric counted the same effect twice; it also provided ~zero discrimination across the cohort.
- Weight redistributed across the retained dimensions — Clinical relevance 30% → 40%, Modality fit 25% → 30%, Competitive whitespace 25% → 30%. Cohort re-ranked within the already-researched inventory; no new research.
- Version-string format promoted from monthly (@YYYY-MM) to daily (@YYYY-MM-DD) from this release onward, after three same-month ships made the monthly form ambiguous. Earlier monthly-form strings remain valid forever.
Fixed the 'Modality fit' rubric normalizer, which had been dividing by a constant roughly 17× the true ceiling and crushing every asset into a narrow band where a 25%-weight dimension did almost no work.
- Modality-fit scores were compressed into 0.016–0.059 across all assets; now normalized against the actual modality-baseline ceiling. Spread widened from 0.043 to 0.730.
- Note on the version string: '@2026-06' predates the daily-format promotion and is the documented monthly-form ambiguity (it shipped 2026-05-06) that triggered the move to daily granularity. The string remains valid forever for any export stamped under it.
Added the JHTV public-data case-study scoring-rubric methodology section. Additive only — no existing section's body, equation, or cited source changed, and no per-section version was retroactively bumped.
- New methodology section published documenting the JHTV invention-scoring rubric. First published at methodology@2026-05.
Added the NSCLC cohort alongside rheumatoid arthritis and introduced the discrimination-vs-calibration framing the backtest pages still lead with.
- Added the NSCLC cohort summary (n=59, pairwise AUC 0.709, separation gap 4.7pp) alongside RA.
- New 'Discrimination vs. absolute calibration' framing — AUC and calibration answer different questions and have different sensitivities to cohort selection.
- Calibration section gained an explicit cohort-survivorship selection-bias caveat; per-cohort 'success definition' lines added (indication-specific FDA approval); added the Youden (1950) optimal-cutoff reference.
- Note: monthly-form string — valid forever for any export stamped under it.
Initial public methodology baseline and the start of version-stamping embedded in signed-export manifests.
- Backtest: rheumatoid-arthritis-only cohort (n=16, pairwise AUC 0.625), Wilson confidence interval on accuracy at the conventional ≥50% and the optimal ≥40% Youden cutoffs.
- PoS calibration: the three-dimensional benchmark matrix (11 indications × 8 modalities × 3 biomarker strategies = 264 cells) with the logistic odds-ratio multiplier method.
- Evidence standards, network benchmarks, and the IRA terminal-value framework published at baseline.
- Methodology-version stamping introduced and embedded in signed-export manifests from here on.
This is the public projection of PhaseFolio’s internal methodology changelog, scrubbed to plain language. To verify a signed export against the version it was computed under, use /verify. Full methodology: /methodology.