Segment rollup
Skill JeffBrines/openfpa/examples/foxfactory/skills/generated/segment-rollup
Use when modeling a multi-segment company that discloses segment net sales and segment Adjusted EBITDA (ASU 2023-07) but not segment COGS or operating income - rolls segment P&Ls into a consolidated forecast and reconciles total segment Adjusted EBITDA to the disclosed total. Generated for Fox Factory (PVG/AAG/SSG).From its SKILL.md
npx -y skills add JeffBrines/openfpa --skill segment-rollupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.8 KB, 646 tokens by cl100k_base, as published. Nobody here has run it
Segment Roll-Up (generated for Fox Factory)
Why this skill exists
The standard openfpa skills model a single entity. Fox Factory reports three
segments (PVG, AAG, SSG) and, under ASU 2023-07, discloses net sales and
Adjusted EBITDA per segment - but not segment COGS or operating income
(.fpa/business-profile.md). The base engine has no segment concept, so this
skill was generated to bridge the gap. It cites these profile facts:
- Three reportable segments; segment metric is Adjusted EBITDA, not gross profit.
- Segment-level working capital, debt, and tax are not disclosed - those stay consolidated. So segments drive the P&L down to Adjusted EBITDA only; the consolidated layer owns everything below.
The model shape
segment net sales + Adj EBITDA margin (PVG, AAG, SSG)
│ roll_up_segments() → total net sales + total Adj EBITDA
│ segments_to_channels(cogs_pct)→ revenue channels for the engine
▼
consolidated EntityConfig (blended COGS%, opex, D&A, capex, WC days, debt, tax)
│ cashflow_from_config()
▼
consolidated P&L + indirect cash flow (revenue → … → FCF)
How to use
- Build one
pyfpa.Segmentper segment from disclosed net sales and Adjusted-EBITDA margin (adjusted_ebitda / net_sales). roll_up_segments(segments)→ total net sales + total Adjusted EBITDA. Reconcile that total to the disclosed segment-footnote total - it must tie.segments_to_channels(segments, cogs_pct=<consolidated blended rate>)→ revenue channels. The blended COGS% is applied to every segment (segment COGS isn't disclosed), so the channels sum back to consolidated COGS by construction.- Feed the channels into a consolidated
EntityConfigand runcashflow_from_config. Set the singleadjusted_opexline togross_profit − total_adjusted_ebitdaso engine EBITDA ties to segment Adj EBITDA. - Keep the goodwill impairment and discrete tax items out of the engine and in a documented bridge to GAAP net income - the lean engine models the operating business, not one-time non-cash charges.
Reference implementation
examples/foxfactory/foxf_model.py (reconciliation_config, phase_a_model,
forecast_year) and pyfpa.analysis.segments.
Guardrail
This skill lives in the client's skills/generated/ namespace - it is specific
to a three-segment, Adjusted-EBITDA-reporting company and must never be promoted
into the public openfpa template.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.