Spaces:
Sleeping
Sleeping
Commit History
-
feat: decompose the EPS headline and read the statements behind it
Two blocks on The Brief, both answering the question the headline raises and never settles: where did the number come from. analytics/eps_bridge.py partitions the year-on-year change in earnings per share into revenue, operating margin, interest, tax rate, share count and a residual carried openly as "other, non-operating". The identity holds by construction and is re-verified per computation; a bridge that fails its own checksum does not render. Five refusals keep it honest -- no prior-year comparable, a period without SEC lineage, a missing input, a diluted share count that moved more than 25% (a split, not dilution), and a residual larger than half the move. That last gate caught a real defect: Alphabet's quarterly EPS rows hold cumulative figures, so the panel withdraws for GOOGL rather than explain 8% of a move and invent the rest. analytics/statement_signals.py adds three figures that are always worth seeing -- incremental margin, two-year stack, cash conversion -- and a list o…bb3ad6b