Phase Space AI

Financial Model Notes

Repligen Corporation [RGEN]

Repligen Corporation [RGEN] — Financial Model Notes

As of 2026-07-29 · framework v1.5.1

Every number in this memo, its source, and how it was derived. No workbook is shipped: the valuation is a reverse DCF plus an own-multiple percentile, both of which are single Python scripts reproduced below rather than a spreadsheet. Scripts live in work/ in the build worktree and are listed in the manifest.


1. Source documents

ID Document Accession Filed
A FY2025 Form 10-K 0001193125-26-076528 2026-02-26
B Q1 2026 Form 10-Q 0001193125-26-208954 2026-05-06
C Q2 2026 earnings 8-K, exhibit 99.1 (condensed BS / IS / CF + non-GAAP reconciliations) 0001193125-26-318853 2026-07-28
D BioLife merger 8-K + exhibits 2.1 / 99.1 0001193125-26-311402 2026-07-22
E Q1 2026 earnings 8-K, exhibit 99.1 0001193125-26-205011 2026-05-05
F SEC XBRL companyconcept, CIK 0000730272 — Revenues, RevenueFromContractWithCustomerIncludingAssessedTax, OperatingIncomeLoss, NetIncomeLoss pulled 2026-07-29
G 12 further quarterly 8-K exhibit 99.1 releases, Q4-2022 → Q1-2026, for the mention-frequency series and the organic reconciliations see RGEN_Research.md §3.3
H2 8-K Item 4.02 non-reliance on previously issued financial statements 0001193125-24-221406 2024-09-18
H3 NT 10-Q (late Q3-2024 filing notification) 0001193125-24-255987 2024-11-12
H4 10-K/A FY2023 + five 10-Q/A (Q1/Q2/Q3-2023, Q1/Q2-2024), all filed the same day 0000950170-24-127842 et al. 2024-11-18
H5 NT 10-K (late FY2024 filing notification) 0001193125-25-044191 2025-03-03
H Alpaca /v2/stocks/RGEN/bars (1,509 daily bars, 2020-07-27 → 2026-07-29); /v2/options/contracts; /v1beta1/options/snapshots pulled 2026-07-29

Alpha Vantage: no data. Returned the 25/day rate-limit response on 2026-07-29. No consensus figure is used anywhere in this memo.


2. Derived line items — every step shown

2.1 TTM revenue to 2026-06-30

FY2025 total revenue          738,256   [A, C]
+ H1 2026 total revenue       398,383   [C]
− H1 2025 total revenue       351,538   [C]
= TTM revenue                 785,101

The screen's $763,339k is the same construction one quarter earlier (738,256 + 194,255 − 169,172) and is arithmetically correct — but 119 days stale at scan date and superseded on 2026-07-28.

2.2 Quarterly revenue series, with Q4 derived

US registrants do not tag Q4 separately, so Q4 = FY − (Q1+Q2+Q3). Derived Q4s:

Q4 2021 = 670,534 − (142,837+162,960+178,216) = 186,521
Q4 2022 = 801,536 − (206,400+207,633+200,741) = 186,762
Q4 2023 = 632,362 − (165,380+159,169+141,192) = 166,621
Q4 2024 = 634,439 − (153,182+158,839+154,871) = 167,547
Q4 2025 = 738,256 − (169,172+182,366+188,805) = 197,913

Cross-check, Q4-2025: derived $197,913k against the release's "fourth quarter revenue of $198 million" — ✅ ties.

Cross-check, Q4-2023: it does NOT tie, and the reason is a restatement. The Q4-2023 release (2024-02-21) reported Q4 total revenue of $155,743k and FY2023 of $638,764k. Current XBRL gives FY2023 $632,362k and a derived Q4 of $166,621k. The gap was traced to filing vintage:

FY2023 revenue, 10-K   filed 2024-02-22  =  638,764   ← as originally reported
FY2023 revenue, 10-K/A filed 2024-11-18  =  632,362   ← RESTATED, −6,402
FY2023 revenue, 10-K   filed 2025-03-14  =  632,362   ← carried forward
FY2023 revenue, 10-K   filed 2026-02-26  =  632,362   ← current

That −$6,402k reconciles to the −$6.6m FY2023 aggregate overstatement disclosed in the Item 4.02 non-reliance 8-K of 2024-09-18 (rounding and the royalty/other line account for the residual). Q4-2023 rose $10.9k thousand-scale against the disclosed +$10.7m. Every revenue figure used in this memo is the post-restatement series. See RGEN_Research.md §3.0. Anyone rebuilding this from press releases rather than current XBRL would inherit the pre-restatement numbers and overstate the 2023 base.

2.3 TTM GAAP EBIT to 2026-06-30

FY2025 income from operations   55,167   [C]
+ H1 2026                       29,916   [C]
− H1 2025                       20,474   [C]
= TTM GAAP EBIT                 64,609
TTM GAAP operating margin = 64,609 / 785,101 = 8.23%

2.4 Net cash — the figure the screen got wrong

Cash and cash equivalents           606,783   [C, 2026-06-30]
+ Marketable securities             203,666   [C]
= Cash + securities                 810,449
− Convertible notes, FACE           600,000   [A, note 13]
= NET CASH (face basis)             210,449   ← used throughout

Alternative on carrying value:
− Convertible notes, net carrying    551,046   [C]
= Net cash (carrying)               259,403

Face value is used because the obligation is $600.0m of cash at 2028-12-15 (conversion price $203.06, stock 28.6% below), not the $551.0m discounted carrying amount. This is the conservative and economically correct choice, and it is 2.4% of EV.

Screen's $36,065k = 606,783 (at 3/31: 582,650) + 0 − 546,585. Reproduced exactly; see RGEN_Research.md §1.1.

2.5 Enterprise value

EV = 145.00 × 56,427,067 − 210,449,000 = 8,181,924,715 − 210,449,000 = 7,971,475,715
   = $7,971.5m

2.6 Multiples

EV / TTM Sales          = 7,971.5 / 785.1  = 10.15x
EV / TTM GAAP EBIT      = 7,971.5 / 64.6   = 123.4x
EV / FY26E adj EBIT     = 7,971.5 / 131.0  =  60.9x   (guide midpoint $128–134m)
P / FY26E adj EPS       = 145.00 / 2.06    =  70.4x   (guide $2.03–2.09)

2.7 ROIC

NOPAT      = 64,609 × (1 − 0.22)                     =   50,395
Invested   = equity 2,112,032 + debt(face) 600,000
             − cash & securities 810,449             = 1,901,583
ROIC (GAAP)                                          =     2.65%
ROIC on FY26E adjusted EBIT 131,000 × 0.78 = 102,180 =     5.37%
Goodwill 1,104,183 + intangibles 357,622 = 1,461,805 = 76.9% of invested capital

2.8 Demonstrated revenue CAGR — all windows, so the choice is visible

3.0y  TTM Jun-23 712,052 → TTM Jun-26 785,101   = (1.10259)^(1/3)−1  =  +3.30%   ← primary
3.5y  FY2022 801,536     → TTM Jun-26 785,101   = (0.97950)^(1/3.5)−1 = −0.59%
5.5y  FY2020 366,260     → TTM Jun-26 785,101   = (2.14356)^(1/5.5)−1 = +15.00%
9.5y  FY2016 104,541     → TTM Jun-26 785,101   = (7.50999)^(1/9.5)−1 = +22.90%

TTM Jun-23 = Q3'22 200,741 + Q4'22 186,762 + Q1'23 165,380 + Q2'23 159,169 = 712,052

The 3.0-year figure is primary because it is the like-for-like construct with what the screen claimed to be computing (n = min(3, len(revs)−1)). The 5.5y and 9.5y windows both span the COVID boom and are reported for completeness, not used.

The screen's 30.5% reproduced: (141,236 / 63,443)^(1/3) − 1 = 30.57% → 30.5%, i.e. FY2014 → FY2017.

2.9 Screen's 39.1% operating margin reproduced

55,167 (FY2025 OperatingIncomeLoss) / 141,236 (FY2017 Revenues) = 39.06%  →  39.1%
15,974 (FY2016 OperatingIncomeLoss) / 104,541 (FY2016 Revenues) = 15.28%
39.06 − 15.28 = 23.78pp  →  the screen's op_margin_delta_pp of 23.8

3. The own-multiple series — construction

work/own_multiple.py. For each of 1,509 daily bars from 2020-07-27:

  1. TTM revenue as known at that date — the sum of the four quarters whose results had been published by then, using the actual earnings-release dates (not period-end dates). This avoids look-ahead.
  2. Shares (56,427,067) and net cash ($210.4m) held at today's verified values, so the series isolates multiple movement — which is what a percentile is for.
  3. EV/Sales = (close × shares − net cash) / TTM revenue.

Usable window begins 2022-02-23 (the first date on which four consecutive quarters had been published from the series), giving n = 1,111. Percentile = share of days at or below today's 10.15x.

Deliberate limitation, stated: holding net cash constant back-dates today's balance sheet onto 2022 prices. Net cash was larger in 2022 (pre-2023 convert issuance the company had no debt), so the 2022–23 multiples in this series are marginally overstated relative to a true point-in-time build. That biases the current percentile upward — i.e. the true percentile is, if anything, lower than 14.5. The direction of the bias works against the conclusion drawn from it, which is why it is acceptable.


4. The reverse DCF

assets/reverse_dcf.py via work/implied_path.py. project_ev is deliberately terminal-only:

revenue_T    = revenue_0 × (1 + cagr)^years
terminal_EV  = revenue_T × terminal_margin × exit_multiple
PV           = terminal_EV / (1 + wacc)^years

Bisection on the single unknown (monotone in every parameter). Terminal value is 100% of EV by construction, which is why valuation.md makes the reverse DCF mandatory as the primary long-horizon output here and no forward DCF is run.

Fixed: EV $7,971.5m · revenue₀ $785.1m · 5 years · WACC 10% · terminal margin 18.6% · exit 26.2x EV/EBIT. Solved: required revenue CAGR 27.40%.

Peer-set construction for the two anchors

work/peers.py, over the 4,018 status == OK records in reports/scan_final/. Growth band ±50% around 12.5% (RGEN's corrected organic rate), i.e. 6.25%–18.75%; ev_ebit restricted to 0 < x < 200 to exclude negative-EBIT artefacts; SIC2 in {28, 38}; market cap > $1bn. n = 51. Median EV/EBIT 26.2x, median operating margin 18.6%.

Caveat carried forward, and it matters. That peer set is drawn from the same scanner whose op_margin_pct this memo has just shown to be corruptible by the annual_series tag-recency defect. Any peer that migrated its revenue tag has an inflated margin and hence a deflated ev_ebit. The direction of that bias makes the peer median EV/EBIT too LOW, so a corrected peer set would give a higher exit multiple and a lower required CAGR. The 26.2x anchor is therefore conservative against the long case in the wrong direction, and the §3.4 sensitivity extends to 40.0x — where the required CAGR is still 17.06% against 12–13% delivered. The FAIL survives the caveat with room. This is flagged as a systematic defect requiring a universe rerun, not repaired here.


5. The mention-frequency series

work/mention_freq.py. Regex counts over the 15 consecutive quarterly 8-K exhibit 99.1 earnings releases, Q4-2022 → Q2-2026, each stripped of HTML to plain text. Case-insensitive except OPUS. Release lengths 20,915–30,933 characters, so raw counts are comparable without normalisation; character counts are recorded in the output for anyone who wants to normalise.

Not transcripts. Earnings-call transcripts were not available in this run. Press releases are a filing-grade primary source and carry the headline bullets and the CEO quote, which is where a retired disclosure shows up first — but Q&A colour is absent and that limitation is stated rather than papered over.


6. Figures deliberately NOT modelled

Why
FY2027+ revenue beyond the guided organic rate No consensus available. The single FY2027 figure used ($923m) is FY2026 guidance × the guided organic midpoint and is flagged as a house number at every appearance.
BioLife pro-forma income statement The S-4 with pro-forma financials has not been filed. Only the disclosed deal terms, BLFS's own XBRL revenue, and management's stated synergies are used.
Synergy realisation Management's $20m/$30m figures are quoted, never assumed into a target.
Segment margins Repligen reports one segment.
Working-capital / cash-flow build The valuation is multiple-based over 12 months and terminal-only over 5 years; a working-capital build would add false precision to neither.
Intangible amortisation runoff schedule Not disclosed by vintage; and BioLife will replenish the balance materially.

7. Reproduction

work/fetch_pr.py       # 15 quarterly 8-K exhibit 99.1 releases -> /tmp/rgen_pr/
work/mention_freq.py   # the mention-frequency table
work/prices.py RGEN    # 1,509 daily bars -> /tmp/RGEN_bars.json
work/own_multiple.py   # EV/Sales history + percentile
work/peers.py          # growth-matched exit multiple + terminal margin
work/implied_path.py   # reverse DCF, both sensitivities
work/target12m.py      # 12-month target, standalone and pro forma
work/mkt.py            # momentum, realised vol, liquidity, options chain

All read only primary data (data.sec.gov, Alpaca) plus reports/scan_final/ for the peer set. work/env.sh sources credentials; no credential value is printed by any script.