"""fundamental_snapshots.weighted_avg_diluted_shares — market-cap fallback Revision ID: 027 Revises: 026 Create Date: 2026-07-24 00:00:00.000000 Multi-class issuers report the cover-page share count per share class. That is a dimensional fact and Company Facts is non-dimensional, so it is absent entirely: META has never tagged it, CMCSA stops in 2009, BRK-B in 2011, CHTR in 2016 (when the Time Warner Cable deal made it multi-class). `shares_outstanding` is therefore null for a large slice of the mega-cap universe, which silently removes both `market_cap_est` and `fcf_yield`. The weighted-average diluted count is always present (EPS requires it) and is consolidated across classes. Measured against issuers where the true point-in-time count IS available, it lands within ~0.6%: GOOGL 0.9936, MRNA 1.0045, AAPL 0.9974, MSFT 0.9978. Stored as its own column rather than backfilled into `shares_outstanding`, so the point-in-time column keeps its strict meaning and the fallback stays an explicit, labelled read-time decision. Existing rows are null until a reparse. """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "027" down_revision: Union[str, None] = "026" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column( "fundamental_snapshots", sa.Column("weighted_avg_diluted_shares", sa.Float(), nullable=True), ) def downgrade() -> None: op.drop_column("fundamental_snapshots", "weighted_avg_diluted_shares")