SPB Git

spb/firc0001_uqo

Public
7.8 KB · 111 lines latex
1% ============================================================================2\begin{appendices}3% ============================================================================45\section{Taxonomy}\label{app:taxonomy}67\begin{table}[H]8\centering\small9\caption{The 21-category SPID project taxonomy (\texttt{spid/taxonomy.py}, unchanged since the June 2026 release)}\label{tab:taxonomy}10\input{tables/tab_taxonomy}11\end{table}1213\section{Extraction contract}\label{app:prompt}1415The system prompt below is passed verbatim to the chat-completion endpoint, with the 21 taxonomy codes and labels substituted at the placeholder. The user message is the string ``\texttt{SECTION: <section\_name>}'' followed by the focused section text, truncated to 14{,}000 characters. Decoding parameters: temperature 0, JSON-object response format, 2{,}000 completion tokens. Model identifier recorded during the October 2026 run: \texttt{gpt-4o-mini-2024-07-18}.1617\input{tables/prompt}1819\noindent The candidate gate is the case-insensitive regular expression \texttt{\textbackslash b(project|initiative|program|invest|expan|construct|build|launch|develop|deploy|implement|acqui|partner|facilit|capacity|capital|migrat|transform|pipeline|plant|data ?cent|automat|sustainab|renewable|restructur)\textbackslash w*}. Sections without a match, or with fewer than 30 words, are not submitted.2021\section{Data dictionary and data-model audit}\label{app:dictionary}2223\begin{table}[H]24\centering\footnotesize25\caption{Tables required by the research design, current implementation and status}\label{tab:datamodel}26\begin{tabularx}{\textwidth}{lXl}27\toprule28Required table & Current implementation (database, table, key fields) & Status \\29\midrule30\texttt{universe\_snapshots} & \texttt{data/metadata/universe.json} + \texttt{companies} (CIK, ticker(s), name, sector, flags \texttt{in\_sp500}/\texttt{in\_russell3000}, fund weight, SIC, state, exchange, FYE, shard); snapshot date and source URL recorded & Partial: no file hash, no membership dates, no match confidence \\31\texttt{issuers} & \texttt{companies} (one row per CIK; former names from SEC header stored in metadata JSON only) & Partial: no name history, no parent/subsidiary links \\32\texttt{filings} & \texttt{filings} (accession PK, CIK FK, form, filing/report dates, SEC URL, local path, size, download and parse status) & Implemented; no acceptance timestamp, no checksum \\33\texttt{sections} & \texttt{filing\_sections} (UUID PK, accession FK, name, item, order, text, counts) & Implemented; no character offsets into raw HTML \\34\texttt{project\_mentions} & \texttt{project\_mentions} (SHA-1 id, accession, CIK, section id, name, type, description, objective, amount, raw amount, lists, years, status, confidence, backend, issuer context) & Implemented; no evidence span, no prompt hash, no five-way label \\35\texttt{projects} & \texttt{projects} (MD5 of CIK$|$type$|$location-or-name, representative fields, max amount, counts, first/last seen and cited years) & Implemented (deterministic key) \\36\texttt{project\_mention\_links} & implicit in the key (every mention maps to exactly one project) & Proposed: explicit table with score, resolver version, adjudication \\37\texttt{project\_events} & \texttt{project\_timeline} (one row per mention: date, form, status, amount, confidence, snippet) & Partial: mention rows, not typed events \\38\texttt{project\_amounts} & \texttt{amount\_usd}/\texttt{amount\_raw} on mentions; max on projects & Proposed: type, currency, scale, basis, realization flag \\39\texttt{extraction\_runs} & \texttt{extracted\_sections} ledger (section, accession, backend, n\_mentions, timestamp) + run logs & Partial: no prompt/schema/taxonomy hashes, no call status \\40\texttt{human\_labels} & --- & Proposed \\41\bottomrule42\end{tabularx}43\end{table}4445\noindent The full field-level dictionary of the current tables is maintained in \texttt{docs/data\_dictionary.md} of the working-paper folder and in the repository documentation.4647\section{Evidence register}\label{app:evidence}4849\begin{table}[H]50\centering\footnotesize51\caption{Evidence register: status of the main claims of this paper at revision \texttt{2324b58}}\label{tab:evidence}52\begin{tabularx}{\textwidth}{Xl}53\toprule54Claim & Status \\55\midrule56Universe of 2{,}564 issuers built from the IWV holdings file (2026-10-23) and the S\&P~500 cache (2026-05-25) & Implemented, verified (artifact counts) \\57527{,}548 primary documents of Forms 10-K/10-Q/8-K since 2010 downloaded; 16 unparsed & Implemented, verified (database counts) \\58Acquisition respected the SEC rate limit (aggregate token bucket; no 403 recorded) & Implemented; documented from run logs \\591{,}342{,}283 sections, 10{,}720{,}890 chunks and embeddings; factor panels for 2{,}501 firms & Implemented, verified \\601{,}123{,}098 sections submitted to the extractor; ledger free of outage artifacts & Implemented, verified after manual audit of the outage window \\61308{,}065 mentions, 121{,}099 projects, graph of 183{,}472 nodes & Implemented, verified \\62Each mention grounded in its source section & Documented (prompt rule), not mechanically verified \\63Extraction precision/recall, category accuracy, field accuracy, calibration & Not measured (protocol specified) \\64Linkage precision/recall of the resolution key & Not measured; failure modes documented with examples \\65Amounts typed and separated from realized expenditure & Not implemented (proposed) \\66Dated project events and point-in-time revision flags & Not implemented (mention-level timeline only) \\67Human-coded gold standard with two annotators and adjudication & Proposed \\68Author order, affiliations and CRediT contributions & Pending confirmation by the three coauthors \\69\bottomrule70\end{tabularx}71\end{table}7273\section{Additional tables}\label{app:tables}7475\begin{table}[H]76\centering\footnotesize77\caption{Coverage by filing year}\label{tab:coverage_year}78\adjustbox{max width=\textwidth}{\input{tables/tab_coverage_year}}79\end{table}8081\begin{table}[H]82\centering\small83\caption{Issuers with the most resolved projects}\label{tab:top_issuers}84\input{tables/tab_top_issuers}85\end{table}8687\begin{table}[H]88\centering\small89\caption{Self-reported confidence of mentions}\label{tab:confidence}90\input{tables/tab_confidence}91\end{table}9293\begin{table}[H]94\centering\small95\caption{Knowledge graph composition}\label{tab:graph}96\input{tables/tab_graph}97\end{table}9899\section{Replication}\label{app:replication}100101\begin{enumerate}102\item Clone the repository at revision \texttt{2324b58} and create the Python~3.12 environment (\texttt{requirements.txt}; DuckDB~2.0, pyarrow, lxml, sentence-transformers).103\item \texttt{python scripts/build\_universe.py} rebuilds \texttt{data/metadata/universe.json}; the frozen artifact used here is kept with the paper (\texttt{data/}) so that a later IWV file does not change the sample.104\item \texttt{python scripts/download\_filings.py --universe --rate 9} downloads the corpus (idempotent; about 255~GB; seven hours at two IP addresses). The cluster orchestration used for the October 2026 build is in \texttt{scripts/cluster/}.105\item \texttt{python scripts/build\_database.py}, \texttt{parse\_filings.py}, \texttt{build\_embeddings.py}, \texttt{build\_factors.py} build the corpus layer; \texttt{export\_shard.py}/\texttt{merge\_shards.py} are needed only for a distributed build.106\item In \texttt{project-db/}: \texttt{python -m spid pending} reports the sections to be extracted and the estimated cost; \texttt{python run\_full\_extract.py --workers 48} runs the extraction against the ledger; \texttt{python -m spid resolve graph embed analytics} builds the project layer.107\item In the working-paper folder: \texttt{python code/export\_stats.py <repo> data/} and \texttt{python code/make\_tables.py} regenerate every table and figure; \texttt{latexmk} in \texttt{paper/} compiles the manuscript.108\end{enumerate}109110\end{appendices}111
Files · 433461a07e940b0718e6e26d65e1409512e43549
Menu

Theme