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

Public Universe v0.7d

universe_v07d · ID 1s8cSSX2opwp6AbppXnowJWtI3ilf-8kh1xXhpS9LfzU · Effort to rehab: medium

Tabs
10
Formulas
865
Error cells
441
External URLs
1

Purpose

Ticker database for the SuperSpy/RK stack. User submits a ticker via the submit form; sheet enriches with name/sector/industry/GICS/SIC/NAICS/biz description/price via Yahoo Finance + QuickFS IMPORTJSON, appends row to db, and exposes a deduped latest-record view via the universe tab. Tracker / Metrics / Insider Buying sheets read from universe!A4:AE.

Infrastructure shape

10 tabs. start = setup wizard with IMPORTRANGE handshake to four downstream sheets (Prices, Insider Buying, Metrics, Tracker). submit = 22-slot data entry form, two rows per slot, ~836 formulas. db = 4789-row append log, 31 columns A-AE, mostly pure values + one IMPORTRANGE in K4 for live prices. universe = single ARRAYFORMULA dedupe-and-sort-by-date over db, plus IMPORTRANGE in AF4 pulling 15 derived metric columns. admin = config (API base URLs, dropdown sources, dynamic Yahoo URL pieces in S6/T6). GICS = static 4-level taxonomy (161 rows). exchanges = Yahoo/Google/QuickFS exchange symbol crosswalk (54 rows).

Tabs (10)

TabStatusPurposeNotes
start partial Setup wizard for downstream sheet URLs Works only if user pastes their own URLs. Templates point at SuperSpy's published copies.
submit broken 22-slot ticker enrichment form All IMPORTJSON Yahoo + QuickFS calls fail. GOOGLEFINANCE still works for major US tickers.
db partial Append-only ticker submissions log, 31 columns. Source-of-truth raw data. 4789 rows of intact data; 422 stale #REF! cells in cols V/Y/J from historical Yahoo IMPORTJSON failures.
universe partial Canonical deduped view of db, joined with derived price metrics Local ARRAYFORMULA in A4 works. AF4 IMPORTRANGE to Prices sheet fails when start!B7 unset.
toDo working Author notes Free-text
notes working Free-text notes
features working Reference matrix of country/exchange data coverage Static lookup table
admin partial Configuration: API key slots, dropdown sources, Yahoo URL pieces AD6/AE6 reference dead universeFields tab (#REF!). API Keys column empty — no credential leak.
GICS working Static GICS-2018 taxonomy 161 rows, no formulas
exchanges working Yahoo/Google/QuickFS exchange symbol crosswalk Static lookup, ~50 global exchanges

External dependencies

URL / endpointStatusPurposeReplacement
https://api.quickfs.net/stocks/ ✗ dead GICS/SIC/NAICS metadata via IMPORTJSON for non-US tickers (22 cells in submit). ConnectTimeout. secfsdstools sub.json (CIK->SIC) + local GICS tab as SIC->GICS map; NAICS via Census crosswalk on VPS.
https://query1.finance.yahoo.com/v10/finance/quoteSummary/{ticker} ✗ dead Profile/sector/industry/business summary/price/insider ownership. Assembled at runtime from admin!S6+ticker+admin!T6 in 110 IMPORTJSON cells. Probed dead in kleven_metrics analysis (500/404). VPS enrichment endpoint backed by SEC submissions API + secfsdstools.
GOOGLEFINANCE ✓ alive Live price/currency/marketcap snapshot in submit Keep as fallback; primary = VPS daily price feed.
IMPORTRANGE to user-pasted Prices/Insider Buying/Metrics/Tracker sheets ✗ dead Live price deltas for universe!AF:AS, db!K4 prices, start!D7-D14 access pings Single shared VPS-fed master Prices sheet.

Cross-sheet IMPORTRANGE dependencies (out)

FromTarget sheetRangePurpose
db!K4 via start!B7 (Prices) dbPrices!D4:F Live price array
universe!AF4 via start!B7 (Prices) universePrices!G4:U 15 derived metric columns
start!D7 via start!B7 (Prices) admin!AA3 Access handshake
start!D8 via start!B8 (Insider Buying) admin!AA3 Access handshake
start!D9 via start!B9 (Metrics) admin!AA3 Access handshake
start!D10 via start!B10 (Tracker) admin!AL3 Access handshake

Broken cells — root cause analysis

Total error cells: 441

Root causeCountExample addresses
Stale Yahoo IMPORTJSON failures hardened into db rows (gics col) 231 db!V366, db!V558
Stale Yahoo IMPORTJSON failures hardened into db rows (sector col) 113 db!Y720, db!Y862
Stale Yahoo IMPORTJSON failures hardened into db rows (Biz/longBusinessSummary) 78 db!J720
Bad ticker rows where lookup itself failed 13 db!C640, db!C862
References to deleted tab universeFields 2 admin!AD6, admin!AE6
VLOOKUP chain off start!B8 returns #N/A 4 admin!AB17, admin!AC17, admin!AD17, admin!AE17

Rehab strategy

Treat db cols A-Z as canonical schema. Map fields to VPS master: ticker -> SEC cik_tickers; name -> secfsdstools sub.name; sector taxonomy -> SIC->GICS map (local GICS tab is reusable); Biz -> SEC submissions JSON description; price/cur/mkt cap/exch -> VPS daily snapshot in Prices sheet; insider ownership -> OpenInsider rollups; gics/sic/naics -> SEC sub.json + Census crosswalk. Replace all 110 IMPORTJSON calls — VPS writes db rows directly via Sheets API, OR point IMPORTJSONs at a VPS enrichment endpoint. One-pass backfill of 422 stale #REF! cells in db!V/Y/J using SEC-derived data. Repoint start!B7 to a single shared VPS-fed Prices sheet. Delete admin!AD6/AE6 (universeFields tab gone). Decide whether to ship vetted IMPORTJSON Apps Script or migrate fully off it.

Named ranges

All 8 named ranges intact: 4 GICS taxonomy ranges (gicsSector/gicsIndustryGroup/gicsIndustry/gicsSubindustry), 4 admin dropdown sources (yesNo/tagsList/submitButton/confidence). Used purely as data-validation source ranges for submit form. No rehab work required.

Questions for you

  1. Do you want submit (manual ticker entry form) to stay alive, or should the universe be VPS-managed (auto-populated from a curated SEC ticker list)?
  2. Is the per-user copy model staying, or is the goal a single shared community sheet?
  3. Should we preserve QuickFS/Yahoo column semantics exactly so existing downstream consumers keep working, or is a schema change acceptable?
  4. Are the placeholder Analysis1-4 sheets in start!B11-B14 still planned, or should those rows be removed?
Raw analysis.json
{
  "broken_cells_summary": {
    "by_tab": {
      "admin": 6,
      "db": 435
    },
    "root_causes": [
      {
        "cause": "Stale Yahoo IMPORTJSON failures hardened into db rows (gics col)",
        "count": 231,
        "example_addrs": [
          "db!V366",
          "db!V558"
        ]
      },
      {
        "cause": "Stale Yahoo IMPORTJSON failures hardened into db rows (sector col)",
        "count": 113,
        "example_addrs": [
          "db!Y720",
          "db!Y862"
        ]
      },
      {
        "cause": "Stale Yahoo IMPORTJSON failures hardened into db rows (Biz/longBusinessSummary)",
        "count": 78,
        "example_addrs": [
          "db!J720"
        ]
      },
      {
        "cause": "Bad ticker rows where lookup itself failed",
        "count": 13,
        "example_addrs": [
          "db!C640",
          "db!C862"
        ]
      },
      {
        "cause": "References to deleted tab universeFields",
        "count": 2,
        "example_addrs": [
          "admin!AD6",
          "admin!AE6"
        ]
      },
      {
        "cause": "VLOOKUP chain off start!B8 returns #N/A",
        "count": 4,
        "example_addrs": [
          "admin!AB17",
          "admin!AC17",
          "admin!AD17",
          "admin!AE17"
        ]
      }
    ],
    "total": 441
  },
  "effort_rating": "medium",
  "external_dependencies": [
    {
      "alive": false,
      "purpose": "GICS/SIC/NAICS metadata via IMPORTJSON for non-US tickers (22 cells in submit). ConnectTimeout.",
      "replacement": "secfsdstools sub.json (CIK-\u003eSIC) + local GICS tab as SIC-\u003eGICS map; NAICS via Census crosswalk on VPS.",
      "url": "https://api.quickfs.net/stocks/"
    },
    {
      "alive": false,
      "purpose": "Profile/sector/industry/business summary/price/insider ownership. Assembled at runtime from admin!S6+ticker+admin!T6 in 110 IMPORTJSON cells. Probed dead in kleven_metrics analysis (500/404).",
      "replacement": "VPS enrichment endpoint backed by SEC submissions API + secfsdstools.",
      "url": "https://query1.finance.yahoo.com/v10/finance/quoteSummary/{ticker}"
    },
    {
      "alive": true,
      "purpose": "Live price/currency/marketcap snapshot in submit",
      "replacement": "Keep as fallback; primary = VPS daily price feed.",
      "url": "GOOGLEFINANCE"
    },
    {
      "alive": false,
      "purpose": "Live price deltas for universe!AF:AS, db!K4 prices, start!D7-D14 access pings",
      "replacement": "Single shared VPS-fed master Prices sheet.",
      "url": "IMPORTRANGE to user-pasted Prices/Insider Buying/Metrics/Tracker sheets"
    }
  ],
  "importrange_edges_out": [
    {
      "from": "db!K4",
      "purpose": "Live price array",
      "target_range": "dbPrices!D4:F",
      "target_sheet_id": "via start!B7 (Prices)"
    },
    {
      "from": "universe!AF4",
      "purpose": "15 derived metric columns",
      "target_range": "universePrices!G4:U",
      "target_sheet_id": "via start!B7 (Prices)"
    },
    {
      "from": "start!D7",
      "purpose": "Access handshake",
      "target_range": "admin!AA3",
      "target_sheet_id": "via start!B7 (Prices)"
    },
    {
      "from": "start!D8",
      "purpose": "Access handshake",
      "target_range": "admin!AA3",
      "target_sheet_id": "via start!B8 (Insider Buying)"
    },
    {
      "from": "start!D9",
      "purpose": "Access handshake",
      "target_range": "admin!AA3",
      "target_sheet_id": "via start!B9 (Metrics)"
    },
    {
      "from": "start!D10",
      "purpose": "Access handshake",
      "target_range": "admin!AL3",
      "target_sheet_id": "via start!B10 (Tracker)"
    }
  ],
  "infrastructure_shape": "10 tabs. start = setup wizard with IMPORTRANGE handshake to four downstream sheets (Prices, Insider Buying, Metrics, Tracker). submit = 22-slot data entry form, two rows per slot, ~836 formulas. db = 4789-row append log, 31 columns A-AE, mostly pure values + one IMPORTRANGE in K4 for live prices. universe = single ARRAYFORMULA dedupe-and-sort-by-date over db, plus IMPORTRANGE in AF4 pulling 15 derived metric columns. admin = config (API base URLs, dropdown sources, dynamic Yahoo URL pieces in S6/T6). GICS = static 4-level taxonomy (161 rows). exchanges = Yahoo/Google/QuickFS exchange symbol crosswalk (54 rows).",
  "name": "Public Universe v0.7d",
  "named_ranges_assessment": "All 8 named ranges intact: 4 GICS taxonomy ranges (gicsSector/gicsIndustryGroup/gicsIndustry/gicsSubindustry), 4 admin dropdown sources (yesNo/tagsList/submitButton/confidence). Used purely as data-validation source ranges for submit form. No rehab work required.",
  "purpose": "Ticker database for the SuperSpy/RK stack. User submits a ticker via the submit form; sheet enriches with name/sector/industry/GICS/SIC/NAICS/biz description/price via Yahoo Finance + QuickFS IMPORTJSON, appends row to db, and exposes a deduped latest-record view via the universe tab. Tracker / Metrics / Insider Buying sheets read from universe!A4:AE.",
  "questions_for_brad": [
    "Do you want submit (manual ticker entry form) to stay alive, or should the universe be VPS-managed (auto-populated from a curated SEC ticker list)?",
    "Is the per-user copy model staying, or is the goal a single shared community sheet?",
    "Should we preserve QuickFS/Yahoo column semantics exactly so existing downstream consumers keep working, or is a schema change acceptable?",
    "Are the placeholder Analysis1-4 sheets in start!B11-B14 still planned, or should those rows be removed?"
  ],
  "rehab_strategy": "Treat db cols A-Z as canonical schema. Map fields to VPS master: ticker -\u003e SEC cik_tickers; name -\u003e secfsdstools sub.name; sector taxonomy -\u003e SIC-\u003eGICS map (local GICS tab is reusable); Biz -\u003e SEC submissions JSON description; price/cur/mkt cap/exch -\u003e VPS daily snapshot in Prices sheet; insider ownership -\u003e OpenInsider rollups; gics/sic/naics -\u003e SEC sub.json + Census crosswalk. Replace all 110 IMPORTJSON calls \u2014 VPS writes db rows directly via Sheets API, OR point IMPORTJSONs at a VPS enrichment endpoint. One-pass backfill of 422 stale #REF! cells in db!V/Y/J using SEC-derived data. Repoint start!B7 to a single shared VPS-fed Prices sheet. Delete admin!AD6/AE6 (universeFields tab gone). Decide whether to ship vetted IMPORTJSON Apps Script or migrate fully off it.",
  "slug": "universe_v07d",
  "tabs": [
    {
      "name": "start",
      "notes": "Works only if user pastes their own URLs. Templates point at SuperSpy\u0027s published copies.",
      "purpose": "Setup wizard for downstream sheet URLs",
      "status": "partial"
    },
    {
      "name": "submit",
      "notes": "All IMPORTJSON Yahoo + QuickFS calls fail. GOOGLEFINANCE still works for major US tickers.",
      "purpose": "22-slot ticker enrichment form",
      "status": "broken"
    },
    {
      "name": "db",
      "notes": "4789 rows of intact data; 422 stale #REF! cells in cols V/Y/J from historical Yahoo IMPORTJSON failures.",
      "purpose": "Append-only ticker submissions log, 31 columns. Source-of-truth raw data.",
      "status": "partial"
    },
    {
      "name": "universe",
      "notes": "Local ARRAYFORMULA in A4 works. AF4 IMPORTRANGE to Prices sheet fails when start!B7 unset.",
      "purpose": "Canonical deduped view of db, joined with derived price metrics",
      "status": "partial"
    },
    {
      "name": "toDo",
      "notes": "Free-text",
      "purpose": "Author notes",
      "status": "working"
    },
    {
      "name": "notes",
      "notes": "",
      "purpose": "Free-text notes",
      "status": "working"
    },
    {
      "name": "features",
      "notes": "Static lookup table",
      "purpose": "Reference matrix of country/exchange data coverage",
      "status": "working"
    },
    {
      "name": "admin",
      "notes": "AD6/AE6 reference dead universeFields tab (#REF!). API Keys column empty \u2014 no credential leak.",
      "purpose": "Configuration: API key slots, dropdown sources, Yahoo URL pieces",
      "status": "partial"
    },
    {
      "name": "GICS",
      "notes": "161 rows, no formulas",
      "purpose": "Static GICS-2018 taxonomy",
      "status": "working"
    },
    {
      "name": "exchanges",
      "notes": "Static lookup, ~50 global exchanges",
      "purpose": "Yahoo/Google/QuickFS exchange symbol crosswalk",
      "status": "working"
    }
  ]
}