▮ DFV TERMINAL
10Y 2Y CPI FEDFUNDS VIX SPX
--:--:-- UTC

Copy of Public release of my fundamentals sheet

marcus_fundamentals · ID 1Nwb6PdSA-sojVcpsAOwLi-0oVbhF3i6MO4Juo6G-wDg · Effort to rehab: medium

Tabs
10
Formulas
1,826
Error cells
211
External URLs
2

Purpose

Single-ticker deep-fundamentals workbench: 20-year matrix of revenues, margins, balance-sheet quality, cash flows, DCF inputs, and ratio averages on a frozen-header summary tab, fed by hidden per-statement data tabs that fetch FMP endpoints.

Infrastructure shape

_(not analyzed)_

Tabs (10)

TabStatusPurposeNotes

External dependencies

URL / endpointStatusPurposeReplacement
fmpcloud.io/api/v3/balance-sheet-statement/ dead_paid bs secfsdstools BalanceSheetStandardizer
fmpcloud.io/api/v3/cash-flow-statement/ dead_paid cf secfsdstools CashFlowStandardizer
fmpcloud.io/api/v3/income-statement/ dead_paid pl secfsdstools IncomeStatementStandardizer
fmpcloud.io/api/v3/profile/ dead_paid profile EDGAR submissions/CIK{cik}.json
fmpcloud.io/api/v3/ratios/ dead_paid derived compute locally from three standardizers
financialmodelingprep.com/api/v3/income-statement/ 401 is secfsdstools IncomeStatementStandardizer
sec.gov/cgi-bin/browse-edgar?CIK= alive_200 fundamentals
google.com/search?q= alive fundamentals
GOOGLEFINANCE alive fundamentals

Rehab strategy

Approach: VPS Python writer pushes standardizer DataFrames directly into bs/pl/cf/derived/profile data tabs via Sheets API, replacing the dead IMPORTDATA chain. Existing lookup-key cell topology is preserved verbatim.

Full markdown analysis (click to expand)

Marcus Fundamentals — Analysis

Sheet: Copy of Public release of my fundamentals sheet ID: 1Nwb6PdSA-sojVcpsAOwLi-0oVbhF3i6MO4Juo6G-wDg Slug: marcus_fundamentals 10 tabs, 1826 formulas, 211 errors, 0 named ranges, 0 IMPORTRANGE edges.

Purpose

A single-ticker deep fundamentals workbench. Operator types a ticker into screener!B3 (or implicitly via fundamentals!B5), and a 20-year matrix of revenues, margins, balance-sheet line items, cash flows, and DCF/quality ratios fans out across the fundamentals summary tab. Setup boilerplate identifies it as a recreation of the Roaring Kitty Universe idea narrowed to per-ticker fundamentals: this is the rare DFV-era sheet natively shaped like SEC EDGAR primary statements (IS/BS/CF/derived ratios), not a Yahoo summary screen. The fundamentals tab itself is a 49-row × ~30-column dashboard with a frozenRowCount=8 ticker header band, 235 conditional formats, and dense red-shaded cells that visually grade the company. Tabs is, bs, pl, cf, derived, profile, diamondMining are all hidden — they exist purely as data-feed staging tables that fundamentals and screener look up against by HLOOKUP/VLOOKUP on canonical field names.

Infrastructure shape

The data-acquisition pattern is identical across all hidden data tabs (bs, cf, pl, is, profile, derived, diamondMining): - A1 = base API URL stem - C1 = =UPPER(fundamentals!B5) (the ticker) - E1 = =Setup!B23 (the API key cell, empty) - H1 = =CONCATENATE(A1,C1,D1,E1) (full URL) - A2 = =IMPORTDATA(H1) — the actual fetch

Several tabs have a second fetch starting at row ~48–124 (bs!A64, bs!A124, pl!A42, cf!A50, diamondMining!A49, derived!A118) for annual + quarterly slices. bs also has six IMPORTHTML(..., "table", 12) blocks at row 124 cols Q/AG/AX/BO/CF/CW for peer comps.

What works

  • Summary fundamentals layout is well thought out: row 7=shares, row 8=revenue, rows 9–20 are AVERAGE-3yr smoothed metrics, rows 21–28 balance-sheet quality (Net Excess Cash, Net Common Overhang, Book/sh, Tang Book/sh), rows 31–48 cash-flow & DCF inputs.
  • GOOGLEFINANCE(B5,"changepct") and GOOGLEFINANCE(B5,"name") (9 calls) still work.
  • Link tiles in fundamentals rows 1–3 (SeekingAlpha, TradingView, Nasdaq, OpenInsider, Yahoo options, SEC EDGAR by CIK) all build via CONCATENATE — URL probe confirms SEC EDGAR cgi-bin/browse-edgar?CIK= alive (200), Google search alive.
  • 1311 IFERROR wrappers cause graceful empty-string degradation.
  • HLOOKUP/VLOOKUP keys (revenue, totalAssets, bookValuePerShare, dividendsPaid, operatingCashFlow, simpleFreeCashFlow, EBITDA, EPS, Weightedaverageshsout, roic, grossProfitMargin, netCashFlow, acquisitionsNet, cashAndCashEquivalents, shortTermDebt, shortTermInvestments, totalCurrentAssets, totalCurrentLiabilities, totalNonCurrentLiabilities, tangibleBookValuePerShare) map ~1:1 to secfsdstools standardizer columns.

What's broken

  • Every IMPORTDATA call to fmpcloud.io and financialmodelingprep.com is dead. bs!A2, cf!A2, pl!A2, is!A2, profile!A2, derived!A2, diamondMining!A2 all #REF!/#ERROR!. URL probe confirms FMP returns 401. Setup!B23 empty.
  • 211 error cells, all downstream. fundamentals!AE/AF (3yr AVERAGE/STDEV) uniformly #DIV/0!.
  • 1359 empty-string formulas — starved, not broken.
  • is!A2 uses =ImportJSON(H1) — custom Apps Script not present.

External dependencies

Endpoint Status Replacement
fmpcloud.io/api/v3/balance-sheet-statement/ dead 401 secfsdstools BalanceSheetStandardizer
fmpcloud.io/api/v3/cash-flow-statement/ dead 401 secfsdstools CashFlowStandardizer
fmpcloud.io/api/v3/income-statement/ dead 401 secfsdstools IncomeStatementStandardizer
fmpcloud.io/api/v3/profile/ dead 401 EDGAR submissions JSON
fmpcloud.io/api/v3/ratios/ dead 401 derive locally
financialmodelingprep.com/api/v3/income-statement/ (is) 401 same
sec.gov/cgi-bin/browse-edgar?CIK= alive 200 keep
google.com/search?q= alive keep
GOOGLEFINANCE alive keep for live price/mktcap

Cross-sheet dependencies

Internal only — no IMPORTRANGE. - fundamentals!B5bs!C1, cf!C1, pl!C1, is!C1, profile!C1, derived!C1/BH1 (14×) - Setup!B23 → all 7 data tabs' E1 (15×) - screener!B3diamondMining!C1 - profile!K3 (CIK) → fundamentals!N1, N3 (SEC EDGAR deep links)

Rehab strategy — secfsdstools mapping

Stop populating data tabs via IMPORTDATA, have VPS Python writer push standardizer DataFrames straight into existing column layout (rows unchanged; col 20 ≈ most recent annual, col 3 ≈ oldest of 20-year window).

bs ← BalanceSheetStandardizer

  • totalAssetsfundamentals!E22:X22
  • totalCurrentAssets → E23 (current ratio)
  • totalCurrentLiabilities → E23
  • totalNonCurrentLiabilities → E24 (Net Common Overhang)
  • shortTermDebt, shortTermInvestments, cashAndCashEquivalents → E23/E24

pl ← IncomeStatementStandardizer

  • date → row 1, drives fundamentals!E5:X5
  • revenuefundamentals!E8:X8
  • grossProfit, grossProfitMargin → fundamentals row 11/15
  • EBITDAfundamentals!E33
  • EPSfundamentals!E36
  • Weightedaverageshsoutfundamentals!E7:X7 (drop the LEFT(...LEN-6) peel — standardizer outputs numeric)

cf ← CashFlowStandardizer

  • date → header
  • operatingCashFlow → row 40 (CFO Avg3 at fundamentals!E12)
  • dividendsPaid → drives E31 (keep *-1 sign flip)
  • netCashFlow → E47
  • simpleFreeCashFlow → E43 — not native; compute as operatingCashFlow + capitalExpenditure writer-side
  • acquisitionsNet → E46

derived ← computed locally

  • bookValuePerShare, tangibleBookValuePerShare (E25/E26) → equity/shares; (equity−intangibles)/shares
  • roic (E13) → NOPAT/invested capital
  • per-share metrics → divide by Weightedaverageshsout

profile ← EDGAR submissions JSON

Critically populate profile!K3 (CIK) so EDGAR deep links at fundamentals!N1/N3 keep working.

is

Vestigial — only 4 formulas, dead ImportJSON. Either repoint fundamentals!E7 to pl or feed is from same writer.

diamondMining

Peer/screener feed via screener!B3. Same fix, lower priority — only 134 formulas.

Setup

Wipe API-key prompt UI; leave Setup!B23 empty; writer pushes via Sheets API and ignores H1 chain.

Effort rating

Medium — 2 to 3 writer days. Cell topology clean, lookup keys already match secfsdstools vocabulary, no IMPORTRANGE entanglements, all live external endpoints probe green. Work: per-ticker writer fetches three standardizers + EDGAR submissions JSON, reshapes to wide year-across-columns format, pushes via Sheets API. Delete dead IMPORTDATA/ImportJSON formulas after first push so refresh doesn't overwrite. simpleFreeCashFlow needs one-line computed override.

Raw analysis.json
{
  "author_attribution": "Marcus (anonymous, \u0027Public release of my fundamentals sheet\u0027, 2021)",
  "cross_sheet_dependencies": {
    "importrange_edges": [],
    "internal": [
      {
        "from": "fundamentals!B5",
        "occurrences": 14,
        "to": [
          "bs!C1",
          "cf!C1",
          "pl!C1",
          "is!C1",
          "profile!C1",
          "derived!C1",
          "derived!BH1"
        ],
        "via": "=UPPER(fundamentals!B5)"
      },
      {
        "from": "Setup!B23",
        "occurrences": 15,
        "to": [
          "bs!E1",
          "cf!E1",
          "pl!E1",
          "is!E1",
          "profile!E1",
          "derived!E1",
          "derived!BJ1",
          "diamondMining!E1"
        ],
        "via": "=Setup!B23"
      },
      {
        "from": "screener!B3",
        "to": [
          "diamondMining!C1"
        ],
        "via": "=UPPER(screener!B3)"
      },
      {
        "from": "profile!K3",
        "purpose": "CIK for SEC EDGAR deep links",
        "to": [
          "fundamentals!N1",
          "fundamentals!N3"
        ]
      }
    ]
  },
  "effort_rating": {
    "blockers": [],
    "estimated_writer_days": "2-3",
    "level": "medium",
    "rationale": "Clean cell topology, no IMPORTRANGE entanglements, lookup keys already match standardizer vocabulary, all live external endpoints (GOOGLEFINANCE, EDGAR, Google search) probe green. Work concentrated in one writer that pushes three standardizer DataFrames to a known cell grid.",
    "risks": [
      "secfsdstools field-name drift vs the FMP-style keys hard-coded in 514 VLOOKUPs - some may need a translation layer",
      "20-year history depth may exceed EDGAR coverage for some tickers (XBRL roughly 2009+)"
    ]
  },
  "error_count": 211,
  "external_dependencies": [
    {
      "endpoint": "fmpcloud.io/api/v3/balance-sheet-statement/",
      "replacement": "secfsdstools BalanceSheetStandardizer",
      "status": "dead_paid",
      "tab": "bs"
    },
    {
      "endpoint": "fmpcloud.io/api/v3/cash-flow-statement/",
      "replacement": "secfsdstools CashFlowStandardizer",
      "status": "dead_paid",
      "tab": "cf"
    },
    {
      "endpoint": "fmpcloud.io/api/v3/income-statement/",
      "replacement": "secfsdstools IncomeStatementStandardizer",
      "status": "dead_paid",
      "tab": "pl"
    },
    {
      "endpoint": "fmpcloud.io/api/v3/profile/",
      "replacement": "EDGAR submissions/CIK{cik}.json",
      "status": "dead_paid",
      "tab": "profile"
    },
    {
      "endpoint": "fmpcloud.io/api/v3/ratios/",
      "replacement": "compute locally from three standardizers",
      "status": "dead_paid",
      "tab": "derived"
    },
    {
      "endpoint": "financialmodelingprep.com/api/v3/income-statement/",
      "replacement": "secfsdstools IncomeStatementStandardizer",
      "status": "401",
      "tab": "is"
    },
    {
      "action": "keep",
      "endpoint": "sec.gov/cgi-bin/browse-edgar?CIK=",
      "status": "alive_200",
      "tab": "fundamentals"
    },
    {
      "action": "keep",
      "endpoint": "google.com/search?q=",
      "status": "alive",
      "tab": "fundamentals"
    },
    {
      "action": "keep_for_live_price_and_mktcap",
      "endpoint": "GOOGLEFINANCE",
      "status": "alive",
      "tab": "fundamentals"
    }
  ],
  "formula_count": 1826,
  "importrange_edges": 0,
  "name": "Copy of Public release of my fundamentals sheet",
  "named_ranges": 0,
  "purpose": "Single-ticker deep-fundamentals workbench: 20-year matrix of revenues, margins, balance-sheet quality, cash flows, DCF inputs, and ratio averages on a frozen-header summary tab, fed by hidden per-statement data tabs that fetch FMP endpoints.",
  "rehab_strategy": {
    "approach": "VPS Python writer pushes standardizer DataFrames directly into bs/pl/cf/derived/profile data tabs via Sheets API, replacing the dead IMPORTDATA chain. Existing lookup-key cell topology is preserved verbatim.",
    "edge_cases": [
      "is tab uses ImportJSON custom function; either feed it from same writer or repoint fundamentals!E7 lookup to pl (which also has weighted shares)",
      "diamondMining is screener-driven (screener!B3, separate ticker) - same fix, lower priority",
      "bs has six IMPORTHTML peer-comp tables at row 124 (cols Q/AG/AX/BO/CF/CW) - separate, optional",
      "dividendsPaid sign convention: FMP returns negative, sheet flips with *-1; secfsdstools also negative - keep the flip"
    ],
    "tabs_to_keep_live": [
      "GOOGLEFINANCE quote/name in fundamentals!B1:C3",
      "SEC EDGAR deep links fundamentals!N1/N3",
      "OpenInsider/SeekingAlpha/Nasdaq/TradingView link tiles"
    ],
    "tabs_to_rewrite_writer_side": [
      "bs",
      "pl",
      "cf",
      "is",
      "profile",
      "derived",
      "diamondMining"
    ],
    "writer_steps": [
      "Read fundamentals!B5 ticker, resolve to CIK via EDGAR ticker.txt",
      "Pull BalanceSheet, IncomeStatement, CashFlow standardizer DataFrames (annual + quarter)",
      "Compute simpleFreeCashFlow = operatingCashFlow + capitalExpenditure",
      "Compute derived ratios (bookValuePerShare, tangibleBookValuePerShare, roic, per-share metrics)",
      "Pull EDGAR submissions JSON for profile (CIK, sector via SIC code, description)",
      "Reshape each into wide year-across-columns layout matching the row-keyed VLOOKUP/HLOOKUP expectations",
      "Push to bs!A2:, pl!A2:, cf!A2:, derived!A2:, profile!A2: via Sheets API",
      "Delete the dead IMPORTDATA/ImportJSON formulas in row 2 of each data tab so refresh doesn\u0027t overwrite",
      "Leave Setup!B23 empty; remove API-key UI prompt"
    ]
  },
  "secfsdstools_mapping": {
    "BalanceSheetStandardizer": {
      "fields": {
        "cashAndCashEquivalents": "fundamentals!E23/E24",
        "shortTermDebt": "fundamentals!E24",
        "shortTermInvestments": "fundamentals!E23/E24",
        "totalAssets": "fundamentals!E22:X22",
        "totalCurrentAssets": "fundamentals!E23 (current-ratio test)",
        "totalCurrentLiabilities": "fundamentals!E23",
        "totalNonCurrentLiabilities": "fundamentals!E24 (Net Common Overhang)"
      },
      "target_tab": "bs"
    },
    "CashFlowStandardizer": {
      "fields": {
        "acquisitionsNet": "fundamentals!E46",
        "date": "header",
        "dividendsPaid": "fundamentals!E31 (sign-flipped *-1 in cell)",
        "netCashFlow": "fundamentals!E47",
        "operatingCashFlow": "fundamentals!E12 (CFO Avg3)",
        "simpleFreeCashFlow": "fundamentals!E43 - NOT NATIVE; compute writer-side as operatingCashFlow + capitalExpenditure"
      },
      "target_tab": "cf"
    },
    "IncomeStatementStandardizer": {
      "fields": {
        "EBITDA": "fundamentals!E33",
        "EPS": "fundamentals!E36",
        "Weightedaverageshsout": "fundamentals!E7:X7 (drop the LEFT/LEN-6 peel since standardizer outputs numeric)",
        "date": "fundamentals!E5:X5 (year header)",
        "grossProfit": "fundamentals!row 11/15",
        "grossProfitMargin": "fundamentals row 11",
        "revenue": "fundamentals!E8:X8"
      },
      "target_tab": "pl"
    },
    "computed_locally": {
      "fields": {
        "bookValuePerShare": "fundamentals!E25 - equity/shares",
        "per_share_metrics": "Revs/sh, Assets/sh, etc - divide by Weightedaverageshsout",
        "roic": "fundamentals!E13 - NOPAT/invested_capital",
        "tangibleBookValuePerShare": "fundamentals!E26 - (equity - intangibles)/shares"
      },
      "target_tab": "derived"
    },
    "edgar_submissions_json": {
      "fields": {
        "CIK": "profile!K3 (drives SEC EDGAR deep links at fundamentals!N1/N3)",
        "description": "fundamentals!D4",
        "sector": "fundamentals!B7"
      },
      "target_tab": "profile"
    }
  },
  "sheet_id": "1Nwb6PdSA-sojVcpsAOwLi-0oVbhF3i6MO4Juo6G-wDg",
  "slug": "marcus_fundamentals",
  "tab_count": 10,
  "tabs": {
    "Setup": {
      "errors": 0,
      "formulas": 0,
      "notes": "API key slot at B23 wired into every data tab via Setup!B23. Empty in this copy.",
      "role": "config",
      "rows": 26
    },
    "bs": {
      "errors": 9,
      "formulas": 409,
      "hidden": true,
      "role": "data_feed_balance_sheet",
      "rows": 200,
      "source": "fmpcloud.io/api/v3/balance-sheet-statement; also IMPORTHTML peer tables at row 124"
    },
    "cf": {
      "errors": 74,
      "formulas": 227,
      "hidden": true,
      "role": "data_feed_cash_flow",
      "rows": 94,
      "source": "fmpcloud.io/api/v3/cash-flow-statement"
    },
    "derived": {
      "errors": 7,
      "formulas": 22,
      "hidden": true,
      "role": "data_feed_ratios",
      "rows": 621,
      "source": "fmpcloud.io/api/v3/ratios"
    },
    "diamondMining": {
      "errors": 4,
      "formulas": 134,
      "hidden": true,
      "role": "data_feed_peer",
      "rows": 355,
      "source": "fmpcloud.io/api/v3/cash-flow-statement quarter"
    },
    "fundamentals": {
      "conditional_formats": 235,
      "errors": 78,
      "formulas": 964,
      "frozen_cols": 3,
      "frozen_rows": 8,
      "notes": "User-facing tab. B5 = ticker. Columns E:X = 20 historical years. Rows 7-48 = lookup-driven metrics.",
      "role": "summary_dashboard",
      "rows": 49
    },
    "is": {
      "errors": 1,
      "formulas": 4,
      "hidden": true,
      "role": "data_feed_income_statement_v2",
      "rows": 53,
      "source": "financialmodelingprep.com/api/v3/income-statement via ImportJSON (custom Apps Script, missing)"
    },
    "pl": {
      "errors": 34,
      "formulas": 55,
      "hidden": true,
      "role": "data_feed_income_statement",
      "rows": 87,
      "source": "fmpcloud.io/api/v3/income-statement"
    },
    "profile": {
      "errors": 1,
      "formulas": 4,
      "hidden": true,
      "role": "data_feed_company_profile",
      "rows": 3,
      "source": "fmpcloud.io/api/v3/profile; populates K3=CIK used by SEC EDGAR deep links"
    },
    "screener": {
      "errors": 3,
      "formulas": 7,
      "notes": "B3 = ticker for diamondMining peer feed.",
      "role": "secondary_input",
      "rows": 3
    }
  },
  "what_broken": [
    "All fmpcloud.io and financialmodelingprep.com IMPORTDATA calls dead - confirmed 401 Unauthorized in url_probe (paid-only since 2023)",
    "Setup!B23 API key slot empty in this copy",
    "is!A2 uses =ImportJSON which is a custom Apps Script not present in this copy",
    "211 error cells, all downstream of dead source feeds",
    "fundamentals!AE7:AF20 (3yr AVERAGE/STDEV columns) all #DIV/0! due to empty source rows",
    "1359 formulas evaluate to empty string - data-starved, not logic-broken"
  ],
  "what_works": [
    "GOOGLEFINANCE quote/name calls (9 occurrences) - alive",
    "Link tiles in fundamentals!1:3 - SEC EDGAR endpoint probed alive (200), Google search alive",
    "Formula discipline: 1311 IFERROR wrappers cause graceful degradation",
    "Lookup keys (revenue, totalAssets, bookValuePerShare, operatingCashFlow, EBITDA, EPS, etc.) already match GAAP/standardizer vocabulary",
    "Cell topology and 20-year column layout are clean and consistent across data tabs"
  ]
}