SPB Git

spb/wp45_uqo

Public
62.7 KB · 421 lines latex
1% paper/appendix/appendix.tex — WP45 / JoF-250 (main.tex calls \appendix before \input{appendix/appendix})2\providecommand{\TODOmacro}[1]{\textcolor{red}{[TODO macro: \texttt{#1}]}}3\providecommand{\profval}[1]{\ifcsname #1\endcsname\csname #1\endcsname\else\TODOmacro{#1}\fi}4\providecommand{\profvalc}[1]{\ifcsname #1\endcsname\csname #1\endcsname\else\textcolor{red}{\scriptsize TODO}\fi}  % compact fallback for table cells; macro name stays in the source56\section{Ontology schema}7\label{app:ontology}89The annotation schema (ontology version 1.0) is defined once, in \texttt{src/\allowbreak{}jof250/\allowbreak{}rhetoric.\allowbreak{}py}, as a JSON Schema (draft 2020-12) with \texttt{additionalProperties} set to false and every listed property required. The controlled vocabularies are those of Table~\ref{tab:vocab}; the complete list of fields follows. Paths use dot notation; \texttt{[]} denotes an array. Indices are zero-based (\texttt{sentence\_\allowbreak{}index} within the abstract, \texttt{paragraph\_\allowbreak{}index} within the introduction, \texttt{idx} over the sections of the payload); the value $-1$ means ``not seen''. The \texttt{causal\_\allowbreak{}language\_\allowbreak{}strength} scale runs from 1 (purely associational wording) through 3 (cautious causal wording with explicit caveats) to 5 (unqualified causal claims); \texttt{confidence} is the annotator's overall confidence in $[0, 1]$.1011\begin{itemize}[leftmargin=1.2em]\small12\item \texttt{genre} --- string: \texttt{empirical}, \texttt{theoretical}, \texttt{mixed\_\allowbreak{}theory\_\allowbreak{}empirical}, \texttt{methodological\_\allowbreak{}econometric}, \texttt{survey\_\allowbreak{}or\_\allowbreak{}address}, \texttt{replication\_\allowbreak{}or\_\allowbreak{}correction}13\item \texttt{subfield} --- string: \texttt{asset\_\allowbreak{}pricing}, \texttt{corporate\_\allowbreak{}finance}, \texttt{financial\_\allowbreak{}intermediation\_\allowbreak{}banking}, \texttt{household\_\allowbreak{}finance}, \texttt{market\_\allowbreak{}microstructure}, \texttt{international\_\allowbreak{}finance}, \texttt{behavioral\_\allowbreak{}finance}, \texttt{macro\_\allowbreak{}finance}, \texttt{financial\_\allowbreak{}econometrics}, \texttt{entrepreneurial\_\allowbreak{}finance\_\allowbreak{}private\_\allowbreak{}equity}, \texttt{other}14\item \texttt{subfield\_\allowbreak{}secondary} --- string15\item \texttt{primary\_\allowbreak{}method} --- string: \texttt{reduced\_\allowbreak{}form\_\allowbreak{}regression}, \texttt{difference\_\allowbreak{}in\_\allowbreak{}differences}, \texttt{instrumental\_\allowbreak{}variables}, \texttt{regression\_\allowbreak{}discontinuity}, \texttt{natural\_\allowbreak{}experiment\_\allowbreak{}event\_\allowbreak{}study}, \texttt{structural\_\allowbreak{}estimation}, \texttt{calibration\_\allowbreak{}simulation}, \texttt{theoretical\_\allowbreak{}model\_\allowbreak{}analytical}, \texttt{machine\_\allowbreak{}learning\_\allowbreak{}textual}, \texttt{survey\_\allowbreak{}or\_\allowbreak{}experiment}, \texttt{other}, \texttt{none}16\item \texttt{identification.\allowbreak{}estimand} --- string17\item \texttt{identification.\allowbreak{}strategy} --- string18\item \texttt{identification.\allowbreak{}key\_\allowbreak{}assumptions[]} --- array of string19\item \texttt{identification.\allowbreak{}threats\_\allowbreak{}addressed[]} --- array of string20\item \texttt{identification.\allowbreak{}causal\_\allowbreak{}language\_\allowbreak{}strength} --- integer21\item \texttt{identification.\allowbreak{}uses\_\allowbreak{}causal\_\allowbreak{}claim} --- boolean22\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}question.\allowbreak{}present} --- boolean23\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}question.\allowbreak{}sentence\_\allowbreak{}index} --- integer24\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}gap.\allowbreak{}present} --- boolean25\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}gap.\allowbreak{}sentence\_\allowbreak{}index} --- integer26\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}method.\allowbreak{}present} --- boolean27\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}method.\allowbreak{}sentence\_\allowbreak{}index} --- integer28\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}results.\allowbreak{}present} --- boolean29\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}results.\allowbreak{}sentence\_\allowbreak{}index} --- integer30\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}magnitude.\allowbreak{}present} --- boolean31\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}magnitude.\allowbreak{}sentence\_\allowbreak{}index} --- integer32\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}contribution.\allowbreak{}present} --- boolean33\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}contribution.\allowbreak{}sentence\_\allowbreak{}index} --- integer34\item \texttt{introduction.\allowbreak{}moves[].\allowbreak{}paragraph\_\allowbreak{}index} --- integer35\item \texttt{introduction.\allowbreak{}moves[].\allowbreak{}move} --- string: \texttt{motivation}, \texttt{tension\_\allowbreak{}or\_\allowbreak{}puzzle}, \texttt{literature\_\allowbreak{}gap}, \texttt{preview\_\allowbreak{}of\_\allowbreak{}approach}, \texttt{preview\_\allowbreak{}of\_\allowbreak{}results}, \texttt{contribution\_\allowbreak{}statement}, \texttt{mechanism\_\allowbreak{}or\_\allowbreak{}theory\_\allowbreak{}sketch}, \texttt{identification\_\allowbreak{}defense}, \texttt{robustness\_\allowbreak{}mention}, \texttt{roadmap}, \texttt{related\_\allowbreak{}literature\_\allowbreak{}positioning}, \texttt{policy\_\allowbreak{}or\_\allowbreak{}broader\_\allowbreak{}implication}, \texttt{other}36\item \texttt{introduction.\allowbreak{}contribution\_\allowbreak{}paragraph\_\allowbreak{}index} --- integer37\item \texttt{introduction.\allowbreak{}contribution\_\allowbreak{}types[]} --- array of string: \texttt{new\_\allowbreak{}evidence}, \texttt{new\_\allowbreak{}data\_\allowbreak{}or\_\allowbreak{}measure}, \texttt{new\_\allowbreak{}identification}, \texttt{new\_\allowbreak{}theory\_\allowbreak{}or\_\allowbreak{}model}, \texttt{new\_\allowbreak{}method}, \texttt{resolution\_\allowbreak{}of\_\allowbreak{}puzzle}, \texttt{replication\_\allowbreak{}or\_\allowbreak{}correction}, \texttt{synthesis}38\item \texttt{introduction.\allowbreak{}roadmap\_\allowbreak{}present} --- boolean39\item \texttt{introduction.\allowbreak{}literature\_\allowbreak{}positioning\_\allowbreak{}location} --- string: \texttt{inside\_\allowbreak{}introduction}, \texttt{separate\_\allowbreak{}section}, \texttt{both}, \texttt{none}40\item \texttt{section\_\allowbreak{}roles[].\allowbreak{}idx} --- integer41\item \texttt{section\_\allowbreak{}roles[].\allowbreak{}role} --- string: \texttt{introduction}, \texttt{literature}, \texttt{theory}, \texttt{data}, \texttt{empirical\_\allowbreak{}design}, \texttt{results}, \texttt{robustness}, \texttt{conclusion}, \texttt{appendix}, \texttt{other}42\item \texttt{results\_\allowbreak{}presentation.\allowbreak{}economic\_\allowbreak{}significance\_\allowbreak{}discussed} --- boolean43\item \texttt{results\_\allowbreak{}presentation.\allowbreak{}statistical\_\allowbreak{}significance\_\allowbreak{}language} --- string: \texttt{stars\_\allowbreak{}and\_\allowbreak{}tstats}, \texttt{confidence\_\allowbreak{}intervals}, \texttt{p\_\allowbreak{}values}, \texttt{mixed}, \texttt{unclear}44\item \texttt{results\_\allowbreak{}presentation.\allowbreak{}magnitude\_\allowbreak{}statements\_\allowbreak{}in\_\allowbreak{}intro} --- boolean45\item \texttt{robustness.\allowbreak{}location} --- string: \texttt{main\_\allowbreak{}text\_\allowbreak{}section}, \texttt{within\_\allowbreak{}results}, \texttt{appendix}, \texttt{internet\_\allowbreak{}appendix}, \texttt{mixed}, \texttt{none\_\allowbreak{}seen}46\item \texttt{robustness.\allowbreak{}types[]} --- array of string: \texttt{alternative\_\allowbreak{}specification}, \texttt{placebo}, \texttt{subsample}, \texttt{alternative\_\allowbreak{}measure}, \texttt{alternative\_\allowbreak{}sample\_\allowbreak{}period}, \texttt{falsification}, \texttt{sensitivity\_\allowbreak{}to\_\allowbreak{}parameters}, \texttt{other}47\item \texttt{tables.\allowbreak{}convention\_\allowbreak{}notes} --- string48\item \texttt{tables.\allowbreak{}units\_\allowbreak{}stated\_\allowbreak{}in\_\allowbreak{}notes} --- boolean49\item \texttt{tables.\allowbreak{}standard\_\allowbreak{}errors\_\allowbreak{}description} --- string: \texttt{clustered}, \texttt{robust}, \texttt{bootstrap}, \texttt{newey\_\allowbreak{}west}, \texttt{mixed}, \texttt{unclear}, \texttt{none}50\item \texttt{figures.\allowbreak{}uncertainty\_\allowbreak{}shown} --- string: \texttt{yes}, \texttt{no}, \texttt{mixed}, \texttt{unclear}, \texttt{no\_\allowbreak{}figures}51\item \texttt{conclusion.\allowbreak{}bounded\_\allowbreak{}claims} --- boolean52\item \texttt{conclusion.\allowbreak{}policy\_\allowbreak{}implications} --- boolean53\item \texttt{conclusion.\allowbreak{}open\_\allowbreak{}questions} --- boolean54\item \texttt{conclusion.\allowbreak{}restates\_\allowbreak{}contribution} --- boolean55\item \texttt{hedging.\allowbreak{}level} --- string: \texttt{low}, \texttt{moderate}, \texttt{high}56\item \texttt{hedging.\allowbreak{}typical\_\allowbreak{}devices[]} --- array of string57\item \texttt{claim\_\allowbreak{}evidence[].\allowbreak{}claim} --- string58\item \texttt{claim\_\allowbreak{}evidence[].\allowbreak{}evidence\_\allowbreak{}type} --- string: \texttt{table}, \texttt{figure}, \texttt{equation\_\allowbreak{}or\_\allowbreak{}proof}, \texttt{prior\_\allowbreak{}literature}, \texttt{descriptive\_\allowbreak{}statistic}, \texttt{none\_\allowbreak{}stated}59\item \texttt{claim\_\allowbreak{}evidence[].\allowbreak{}evidence\_\allowbreak{}ref} --- string60\item \texttt{structural\_\allowbreak{}summary} --- string61\item \texttt{writing\_\allowbreak{}profile\_\allowbreak{}keywords[]} --- array of string62\item \texttt{confidence} --- number63\item \texttt{notes} --- string64\end{itemize}6566\section{Prompts}67\label{app:prompts}6869The prompt files are reproduced verbatim from \texttt{prompts/\allowbreak{}} (YAML front matter omitted; prompt identifier and version shown). Placeholders in braces (\texttt{\{section\}}, \texttt{\{retrieved\}}, \texttt{\{profile\_\allowbreak{}summary\}}, \texttt{\{genre\_\allowbreak{}note\}}, \texttt{\{conventions\}}, \ldots) are substituted by the engine at run time. For the annotation prompt, the engine appends the list of allowed values (Table~\ref{tab:vocab}) and the JSON schema of Appendix~\ref{app:ontology} to the body shown here. In the writing engine, the system prompt is shared by every condition; the condition prompts are placed after the manuscript material in the user message, and condition E uses the condition-D prompt for its first call and the referee prompt for its second.7071\subsection{Annotation prompt}7273\paragraph{\texttt{annotation/\allowbreak{}document\_\allowbreak{}annotation\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{document\_\allowbreak{}annotation}, version 1.0).}74\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}75You are a careful annotator of scientific writing in financial economics. You receive bounded excerpts of ONE published article (abstract, introduction paragraphs, conclusion paragraphs, section headings with the first paragraph of each section, table titles/notes, figure captions, counts). Your job is to describe HOW the argument is built --- its genre, rhetorical moves, claim--evidence links, hedging and presentation conventions --- using the fixed schema.7677\medskip7879Rules:80811. Annotate only what is visible in the excerpts; when something is not visible, say so with the provided ''unclear''/''none\_seen'' values or -1 indices. Never guess a strategy or result that is not in the text.82832. Indices: `sentence\_index` refers to the 0-based sentence position in the abstract; `paragraph\_index` refers to the 0-based position in `introduction\_paragraphs`; section `idx` refers to the `idx` field of `sections`.84853. Do NOT copy sentences. `structural\_summary`, `claim` fields and `convention\_notes` must be your own abstract-level description (paraphrase at the level of moves, not wording). Keep each `claim` under 200 characters.86874. Theory papers do not have to follow the empirical template: assign roles honestly (theory, proofs in appendix) and set empirical-only fields to the ''none''/''unclear''/''not applicable'' values.88895. Identification: distinguish the estimand (what quantity is targeted), the strategy (how), assumptions (what must hold), and the strength of causal language (1 = purely associational wording, 3 = cautious causal wording with explicit caveats, 5 = unqualified causal claims).90916. `contribution\_types`: list every type that is explicitly claimed.92937. `confidence` is your overall confidence (0--1) that the annotation is faithful to the excerpts.9495Return only the JSON object.9697\end{quote}9899\subsection{Writing prompts (system prompt and conditions A--E)}100101\paragraph{\texttt{writing/\allowbreak{}system\_\allowbreak{}base\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{writing\_\allowbreak{}system\_\allowbreak{}base}, version 1.0).}102\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}103You are a scholarly writing engine for economics and finance manuscripts. You produce LaTeX-ready prose for a specified section of the user's manuscript.104105Hard constraints (apply in every condition):106107- Never invent results, data, numbers, coefficients, citations, or references. Every number you write must appear in the manuscript material you are given (abstract, existing sections, tables, research brief). Every citation must use an existing BibTeX key from the list provided (\textbackslash{}citep\{key\}/\textbackslash{}citet\{key\}); if you need a reference that is not in the list, write a visible placeholder `\textbackslash{}todo\{CITATION NEEDED: \textless{}what\textgreater{}\}` instead of inventing one.108109- Preserve the manuscript's verified facts exactly (numbers, signs, units, sample sizes, periods, variable names).110111- Do not copy sentences from any other paper, do not imitate a specific author, and do not claim endorsement by any journal.112113- Output format: first the LaTeX text of the section (no \textbackslash{}section command unless asked, no preamble), then a line `=== CHANGE LOG ===` followed by a bullet list explaining the structural choices and any assumptions, then a line `=== FLAGS ===` followed by bullet items for anything that needs the author's verification (unsupported statements, missing evidence, placeholders). Keep the change log and flags concise.114115\end{quote}116117\paragraph{\texttt{writing/\allowbreak{}condition\_\allowbreak{}A\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{condition\_\allowbreak{}A\_\allowbreak{}minimal}, version 1.0).}118\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}119Write the \{section\} of this paper.120121\end{quote}122123\paragraph{\texttt{writing/\allowbreak{}condition\_\allowbreak{}B\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{condition\_\allowbreak{}B\_\allowbreak{}strong\_\allowbreak{}prompt}, version 1.0).}124\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}125Write the \{section\} of this paper as an experienced academic economist would for a top general-interest finance or economics journal.126127Guidance: state the research question early; motivate why it matters; make the contribution explicit and specific; relate to the closest prior work without a laundry list; preview the approach and the main findings with their magnitudes; keep claims proportionate to the evidence; use precise, plain academic English; avoid hype, clichés and vague adjectives; prefer short paragraphs with one idea each; use the manuscript's own notation and numbers; write in the first person plural if the manuscript does, otherwise follow its voice.128129\end{quote}130131\paragraph{\texttt{writing/\allowbreak{}condition\_\allowbreak{}C\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{condition\_\allowbreak{}C\_\allowbreak{}conventional\_\allowbreak{}rag}, version 1.0).}132\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}133Write the \{section\} of this paper as an experienced academic economist would for a top general-interest finance or economics journal.134135Guidance: state the research question early; motivate why it matters; make the contribution explicit and specific; relate to the closest prior work without a laundry list; preview the approach and the main findings with their magnitudes; keep claims proportionate to the evidence; use precise, plain academic English; avoid hype, clichés and vague adjectives; prefer short paragraphs with one idea each; use the manuscript's own notation and numbers; write in the first person plural if the manuscript does, otherwise follow its voice.136137\medskip138139Below are short excerpts retrieved by similarity from a private corpus of published Journal of Finance articles (2017--2020). Use them only as examples of tone and organization; do not reuse their sentences, numbers or claims, and do not cite them unless the manuscript's bibliography already contains them.140141\{retrieved\}142143\end{quote}144145\paragraph{\texttt{writing/\allowbreak{}condition\_\allowbreak{}D\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{condition\_\allowbreak{}D\_\allowbreak{}profiles\_\allowbreak{}structured}, version 1.0).}146\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}147Write the \{section\} of this paper as an experienced academic economist would for a top general-interest finance or economics journal.148149\medskip150151Manuscript genre/subfield (detected): \{genre\} / \{subfield\}. Applicable measured writing profile: `\{profile\_name\}` (built from \{profile\_n\} published Journal of Finance articles, 2017--2020; measured frequencies describe practice, they are not rules --- deviate when the manuscript's logic requires it and say so in the change log):152153\{profile\_summary\}154155\medskip156157Structural patterns retrieved from the annotated corpus (rhetorical moves, claim--evidence links, identification framing; each with provenance). Use them to plan the section's moves --- not as text to reuse:158159\{retrieved\}160161\medskip162163Procedure: (1) identify what this manuscript's actual evidence supports; (2) choose the sequence of rhetorical moves for the section and state it briefly in the change log; (3) write the section; (4) list every statement that the manuscript material does not support under FLAGS.164165\{genre\_note\}166167\end{quote}168169\paragraph{\texttt{writing/\allowbreak{}condition\_\allowbreak{}E\_\allowbreak{}referee\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{condition\_\allowbreak{}E\_\allowbreak{}specialist\_\allowbreak{}referee}, version 1.0).}170\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}171You are a specialist referee for a top finance journal (econometric referee + writing editor). You receive (a) the manuscript material, (b) a draft of its \{section\}, (c) a deterministic audit of the draft (numbers not present in the manuscript, citation keys not in the bibliography, possibly unsupported claims, overlap with a corpus). Produce a revised draft that fixes every audit item, keeps every verified fact unchanged, strengthens the methodological framing (identification, what the estimates can and cannot support), keeps claims bounded, and removes any statement the material does not support (replace with `\textbackslash{}todo\{...\}` if essential).172173Output exactly: the revised LaTeX text, then `=== CHANGE LOG ===` with the referee's edits (what, why), then `=== FLAGS ===` with remaining items for the author.174175\{retrieved\}176177\end{quote}178179\subsection{Review prompts}180181\paragraph{\texttt{review/\allowbreak{}referee\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}referee}, version 1.0).}182\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}183You are an anonymous referee for a top general-interest finance journal. Write a referee report on the manuscript material provided (title, abstract, sections, tables, figures, equations, audit facts). Structure: (1) Summary of the paper in your own words (one paragraph); (2) Assessment of the contribution and positioning; (3) Major comments, numbered, each tied to a specific section/table/equation and stating what evidence or change would resolve it (identification and inference first, then measurement, then robustness, then presentation); (4) Minor comments (writing, tables, figures, notation, references); (5) Recommendation with a one-sentence justification. Be specific, fair, and proportionate; do not invent results that are not in the material; when the material is incomplete, say what is missing instead of guessing. \{conventions\}184185\end{quote}186187\paragraph{\texttt{review/\allowbreak{}editor\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}editor}, version 1.0).}188\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}189You are a finance writing editor. For the manuscript material provided, assess the writing section by section against the measured conventions below (treat them as descriptive benchmarks, not rules): clarity of the research question, placement and specificity of the contribution, preview of findings with magnitudes, proportionality of claims, paragraph structure, transitions, notation consistency, hedging. For each section give: strengths, concrete rewrite suggestions (quote the problematic sentence, propose a replacement that keeps every fact), and a priority (high/medium/low). Then list global issues. Do not change any number or claim. \{conventions\}190191\end{quote}192193\paragraph{\texttt{review/\allowbreak{}table\_\allowbreak{}editor\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}table\_\allowbreak{}editor}, version 1.0).}194\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}195You are a table-and-figure editor for a finance journal. For every table and figure in the material: check that the caption states what is shown, the sample, the unit of observation and the period; that notes define variables, units, standard errors and significance conventions; that labels are referenced in the text; that figures state uncertainty where estimates are shown. Propose a corrected caption and notes for each (keeping all numbers unchanged) and rank the fixes. \{conventions\}196197\end{quote}198199\paragraph{\texttt{review/\allowbreak{}integrity\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}integrity}, version 1.0).}200\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}201You are a citation and integrity auditor. Using the manuscript material and the deterministic audit facts provided (unknown citation keys, DOI resolution results, numbers in text not found in tables, possibly unsupported claims, corpus overlap), produce an integrity report: (1) citations that cannot be verified or are used inconsistently; (2) claims in the text that lack a table/figure/equation/citation anchor; (3) numbers that appear in prose but not in any table; (4) statements whose causal strength exceeds the design; (5) reproducibility statements missing. For each item give location, severity and the minimal fix. Do not speculate beyond the material. \{conventions\}202203\end{quote}204205\paragraph{\texttt{review/\allowbreak{}replication\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}replication}, version 1.0).}206\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}207You are a replication auditor. From the manuscript material, extract what a replicator would need: data sources and access, sample construction steps and filters, variable definitions, estimation specifications, software, seeds, and where each is stated. List every item as present/absent with the location, then list the questions the authors must answer for the paper to be replicable. \{conventions\}208209\end{quote}210211\subsection{Judge rubric}212213\paragraph{\texttt{evaluation/\allowbreak{}judge\_\allowbreak{}rubric\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{judge\_\allowbreak{}rubric}, version 1.0).}214\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}215You are a blind, calibrated judge of scholarly writing in economics and finance. You receive: the TASK, the SOURCE MATERIAL (verified facts the outputs had to respect), and several OUTPUTS labelled with random letters. The outputs were produced under different, undisclosed conditions; do not try to guess them, and do not reward length.216217Score every output on each dimension from 1 to 7 using these anchors:218219- clarity --- 1: hard to follow, vague; 4: readable but uneven; 7: every paragraph has one clear idea, precise wording.220221- argument\_logic --- 1: claims without reasons or in a confused order; 4: mostly logical with gaps; 7: question $\rightarrow$ approach $\rightarrow$ evidence $\rightarrow$ bounded conclusion, each step motivated.222223- contribution\_positioning --- 1: contribution absent or generic; 4: stated but not sharply differentiated from prior work; 7: specific, differentiated, placed early, proportionate.224225- methodological\_rigor --- 1: ignores or misstates design/identification/inference; 4: mentions but does not engage; 7: engages estimand, assumptions, threats, inference, limits.226227- fidelity --- 1: invents or alters numbers/findings/citations; 4: faithful but omits important facts; 7: every number, sign, unit and claim matches the source and nothing is invented (unverifiable citations and numbers absent from the source are serious faults).228229- usefulness --- 1: the author could not use it; 4: partially usable; 7: could be adopted with light editing.230231Also report for each output: n\_invented\_facts (numbers, findings or references not in the source), and a one-sentence justification.232233Return only JSON: \{''scores'': \{''\textless{}letter\textgreater{}'': \{''clarity'': int, ''argument\_logic'': int, ''contribution\_positioning'': int, ''methodological\_rigor'': int, ''fidelity'': int, ''usefulness'': int, ''n\_invented\_facts'': int, ''justification'': str\}, ...\}, ''best'': ''\textless{}letter\textgreater{}'', ''notes'': str\}234235\end{quote}236237\section{Parser QA}238\label{app:parser-qa}239240Table~\ref{tab:parser-qa-docs} reproduces the per-document rows of \texttt{data/\allowbreak{}derived/\allowbreak{}parser\_\allowbreak{}qa.\allowbreak{}md}. The sample comprises \qaNSample{} documents: five randomly chosen research articles per year (seed 45) and every document of a non-article type. For each component the table gives the count produced by the PyMuPDF structural parser (P) and the count produced by regular expressions on \texttt{pdftotext -layout} output (R). Aggregate agreement rates are reported in Section~\ref{sec:extraction-qa}: sections exact \qaSectionsExact\%, tables exact \qaTablesExact\% (within one \profval{qaTablesWithinOne}\%), figures exact \qaFiguresExact\%, equations exact \qaEquationsExact\% (within 10\% \profval{qaEquationsWithinTenPct}\%), references within 10\% \profval{qaReferencesWithinTenPct}\%, abstract found by both \qaAbstractAgree\%; title agreement with Crossref (similarity at least 90) over all \qaTitleNAllDocs{} included documents \profval{qaTitleVsCrossrefGeNinetyAllDocs}\%. The check compares two automated extractions; it is not a human gold standard. The last row (a corrigendum) illustrates the failure mode of both tools on a one-page note without the article template: the reference regular expression counts 169 lines where the structural parser finds 5 entries and neither finds sections, tables, or an abstract.241242\begin{table}[htbp]\centering\small243\caption{Parser QA: per-document comparison of the PyMuPDF structural parser (P) against regex counts on \texttt{pdftotext -layout} output (R) for the stratified sample. Columns give P/R counts of numbered sections, tables, figures, numbered equations, references and abstracts. This is a cross-parser agreement check, not a human gold standard.}244\label{tab:parser-qa-docs}245\resizebox{\linewidth}{!}{\begin{tabular}{llcccccc}\toprule246Document & Type & Sections & Tables & Figures & Equations & References & Abstract \\ \midrule247\texttt{jof\_\allowbreak{}12484} & article & 5/5 & 6/5 & 13/12 & 22/20 & 65/64 & 1/1 \\248\texttt{jof\_\allowbreak{}12499} & article & 4/4 & 13/13 & 4/4 & 17/8 & 35/35 & 1/1 \\249\texttt{jof\_\allowbreak{}12495} & article & 5/5 & 12/12 & 2/2 & 5/15 & 64/64 & 1/1 \\250\texttt{jof\_\allowbreak{}12488} & article & 5/6 & 6/6 & 8/8 & 41/37 & 57/57 & 1/1 \\251\texttt{jof\_\allowbreak{}12465} & article & 5/5 & 13/11 & 4/4 & 32/45 & 64/63 & 1/1 \\252\texttt{jof\_\allowbreak{}12684} & article & 3/3 & 4/4 & 5/5 & 24/30 & 73/73 & 1/1 \\253\texttt{jof\_\allowbreak{}12691} & article & 7/7 & 14/14 & 2/2 & 6/16 & 35/35 & 1/1 \\254\texttt{jof\_\allowbreak{}12584} & article & 7/7 & 0/0 & 9/9 & 12/13 & 56/56 & 1/1 \\255\texttt{jof\_\allowbreak{}12590} & article & 8/9 & 1/1 & 3/3 & 90/52 & 18/18 & 1/1 \\256\texttt{jof\_\allowbreak{}12726} & article & 6/6 & 10/10 & 2/2 & 11/33 & 47/47 & 1/1 \\257\texttt{jof\_\allowbreak{}12732} & article & 4/4 & 6/6 & 10/10 & 19/21 & 43/40 & 1/1 \\258\texttt{jof\_\allowbreak{}12749} & article & 6/6 & 8/7 & 0/0 & 2/11 & 75/75 & 1/1 \\259\texttt{jof\_\allowbreak{}12773} & article & 6/6 & 3/3 & 12/11 & 45/33 & 59/60 & 1/1 \\260\texttt{jof\_\allowbreak{}12734} & article & 5/5 & 8/8 & 3/3 & 15/21 & 44/43 & 1/1 \\261\texttt{jof\_\allowbreak{}12765} & article & 7/7 & 9/9 & 6/6 & 19/27 & 64/64 & 1/1 \\262\texttt{jof\_\allowbreak{}12842} & article & 5/5 & 6/6 & 9/9 & 27/13 & 89/89 & 1/1 \\263\texttt{jof\_\allowbreak{}12856} & article & 7/7 & 1/0 & 0/0 & 19/19 & 44/43 & 1/1 \\264\texttt{jof\_\allowbreak{}12843} & article & 6/7 & 11/10 & 5/5 & 10/27 & 60/60 & 1/1 \\265\texttt{jof\_\allowbreak{}12890} & article & 6/6 & 11/10 & 5/5 & 16/24 & 34/34 & 1/1 \\266\texttt{jof\_\allowbreak{}12862} & article & 7/8 & 4/4 & 1/1 & 33/35 & 58/0 & 1/1 \\267\texttt{jof\_\allowbreak{}12530} & presidential\_address & 10/10 & 4/4 & 7/7 & 0/1 & 69/66 & 1/1 \\268\texttt{jof\_\allowbreak{}12548} & corrigendum\_or\_replication & 2/2 & 2/2 & 0/0 & 38/6 & 4/4 & 1/1 \\269\texttt{jof\_\allowbreak{}12710} & presidential\_address & 5/5 & 6/6 & 14/14 & 22/27 & 72/71 & 1/1 \\270\texttt{jof\_\allowbreak{}12762} & corrigendum\_or\_replication & 4/4 & 0/0 & 0/0 & 19/20 & 12/10 & 1/1 \\271\texttt{jof\_\allowbreak{}12782} & presidential\_address & 3/3 & 0/0 & 9/9 & 38/40 & 45/44 & 1/1 \\272\texttt{jof\_\allowbreak{}12786} & corrigendum\_or\_replication & 0/0 & 0/0 & 0/0 & 0/0 & 169/5 & 0/0 \\273\bottomrule\end{tabular}}274\end{table}275276\section{Profiles}277\label{app:profiles}278279Table~\ref{tab:profile-rules} lists every profile file and its selection rule; Tables~\ref{tab:profiles-all} and~\ref{tab:profiles-all-b} give the structure medians and interquartile ranges of each, and Table~\ref{tab:profiles-rhetoric} the main entries of their rhetoric blocks. All profiles are computed on the training split only (\nTrain{} documents), with 95\% bootstrap intervals for the medians (500 resamples, seed 45) stored in the YAML files. The engine falls back from a profile with fewer than eight documents to \texttt{empirical\_\allowbreak{}all} and then to \texttt{corpus\_\allowbreak{}all}. Rhetoric blocks (abstract and introduction moves, contribution placement, identification, results, robustness, table, figure, conclusion, and hedging conventions) are present in a profile file only when the subset contains schema-valid annotations, which is the case for every profile after the full annotation run; the YAML files hold the complete distributions, of which Table~\ref{tab:profiles-rhetoric} shows a selection. Theory papers are included in \texttt{corpus\_\allowbreak{}all} and \texttt{theoretical\_\allowbreak{}finance} but excluded by genre from the empirical profiles, so that empirical-paper conventions are never averaged with theory-paper conventions.280281\begin{table}[htbp]\centering\small282\caption{Profile files and their selection rules (\texttt{PROFILE\_\allowbreak{}DEFS} in \texttt{src/\allowbreak{}jof250/\allowbreak{}features.\allowbreak{}py}).}283\label{tab:profile-rules}284\begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.36\linewidth}X}\toprule285Profile & Selection rule (train split only) \\ \midrule286\texttt{corpus\_\allowbreak{}all} & all included train documents \\287\texttt{empirical\_\allowbreak{}all} & genre in \{empirical, mixed\_theory\_empirical\} \\288\texttt{empirical\_\allowbreak{}asset\_\allowbreak{}pricing} & annotation.subfield == asset\_pricing and genre in \{empirical, mixed\_theory\_empirical\} \\289\texttt{corporate\_\allowbreak{}finance} & annotation.subfield == corporate\_finance and genre in \{empirical, mixed\_theory\_empirical\} \\290\texttt{theoretical\_\allowbreak{}finance} & genre == theoretical \\291\texttt{financial\_\allowbreak{}econometrics} & subfield == financial\_econometrics or genre == methodological\_econometric \\292\texttt{financial\_\allowbreak{}intermediation\_\allowbreak{}banking} & annotation.subfield == financial\_intermediation\_banking (empirical/mixed) \\293\texttt{household\_\allowbreak{}behavioral\_\allowbreak{}finance} & subfield in \{household\_finance, behavioral\_finance\} (empirical/mixed) \\294\bottomrule\end{tabularx}295\end{table}296297\begin{table}[htbp]\centering\scriptsize298\caption{Structure medians (interquartile range in parentheses) of the profile files in \texttt{profiles/\allowbreak{}}, part A: all = \texttt{corpus\_\allowbreak{}all}; empirical = \texttt{empirical\_\allowbreak{}all}; asset pricing = \texttt{empirical\_\allowbreak{}asset\_\allowbreak{}pricing}; corporate finance = \texttt{corporate\_\allowbreak{}finance}. Training split only. A cell prints TODO if its macro is absent from \texttt{numbers.\allowbreak{}tex}. Observed frequencies describe what published articles did; they are not editorial rules.}299\label{tab:profiles-all}300\begin{tabular}{lcccc}\toprule301Statistic & all & empirical & asset pricing & corporate finance \\ \midrule302$n$ documents & \profvalc{profCorpusAllN} & \profvalc{profEmpiricalAllN} & \profvalc{profEmpiricalAssetPricingN} & \profvalc{profCorporateFinanceN} \\303Body words & \profvalc{profCorpusAllNWordsBodyMed} (\profvalc{profCorpusAllNWordsBodyQa}--\profvalc{profCorpusAllNWordsBodyQb}) & \profvalc{profEmpiricalAllNWordsBodyMed} (\profvalc{profEmpiricalAllNWordsBodyQa}--\profvalc{profEmpiricalAllNWordsBodyQb}) & \profvalc{profEmpiricalAssetPricingNWordsBodyMed} (\profvalc{profEmpiricalAssetPricingNWordsBodyQa}--\profvalc{profEmpiricalAssetPricingNWordsBodyQb}) & \profvalc{profCorporateFinanceNWordsBodyMed} (\profvalc{profCorporateFinanceNWordsBodyQa}--\profvalc{profCorporateFinanceNWordsBodyQb}) \\304Introduction words & \profvalc{profCorpusAllIntroWordsMed} (\profvalc{profCorpusAllIntroWordsQa}--\profvalc{profCorpusAllIntroWordsQb}) & \profvalc{profEmpiricalAllIntroWordsMed} (\profvalc{profEmpiricalAllIntroWordsQa}--\profvalc{profEmpiricalAllIntroWordsQb}) & \profvalc{profEmpiricalAssetPricingIntroWordsMed} (\profvalc{profEmpiricalAssetPricingIntroWordsQa}--\profvalc{profEmpiricalAssetPricingIntroWordsQb}) & \profvalc{profCorporateFinanceIntroWordsMed} (\profvalc{profCorporateFinanceIntroWordsQa}--\profvalc{profCorporateFinanceIntroWordsQb}) \\305Introduction paragraphs & \profvalc{profCorpusAllIntroParagraphsMed} (\profvalc{profCorpusAllIntroParagraphsQa}--\profvalc{profCorpusAllIntroParagraphsQb}) & \profvalc{profEmpiricalAllIntroParagraphsMed} (\profvalc{profEmpiricalAllIntroParagraphsQa}--\profvalc{profEmpiricalAllIntroParagraphsQb}) & \profvalc{profEmpiricalAssetPricingIntroParagraphsMed} (\profvalc{profEmpiricalAssetPricingIntroParagraphsQa}--\profvalc{profEmpiricalAssetPricingIntroParagraphsQb}) & \profvalc{profCorporateFinanceIntroParagraphsMed} (\profvalc{profCorporateFinanceIntroParagraphsQa}--\profvalc{profCorporateFinanceIntroParagraphsQb}) \\306Introduction share & \profvalc{profCorpusAllIntroShareMed} (\profvalc{profCorpusAllIntroShareQa}--\profvalc{profCorpusAllIntroShareQb}) & \profvalc{profEmpiricalAllIntroShareMed} (\profvalc{profEmpiricalAllIntroShareQa}--\profvalc{profEmpiricalAllIntroShareQb}) & \profvalc{profEmpiricalAssetPricingIntroShareMed} (\profvalc{profEmpiricalAssetPricingIntroShareQa}--\profvalc{profEmpiricalAssetPricingIntroShareQb}) & \profvalc{profCorporateFinanceIntroShareMed} (\profvalc{profCorporateFinanceIntroShareQa}--\profvalc{profCorporateFinanceIntroShareQb}) \\307Tables & \profvalc{profCorpusAllNTablesMed} (\profvalc{profCorpusAllNTablesQa}--\profvalc{profCorpusAllNTablesQb}) & \profvalc{profEmpiricalAllNTablesMed} (\profvalc{profEmpiricalAllNTablesQa}--\profvalc{profEmpiricalAllNTablesQb}) & \profvalc{profEmpiricalAssetPricingNTablesMed} (\profvalc{profEmpiricalAssetPricingNTablesQa}--\profvalc{profEmpiricalAssetPricingNTablesQb}) & \profvalc{profCorporateFinanceNTablesMed} (\profvalc{profCorporateFinanceNTablesQa}--\profvalc{profCorporateFinanceNTablesQb}) \\308Numbered equations & \profvalc{profCorpusAllNEquationsMed} (\profvalc{profCorpusAllNEquationsQa}--\profvalc{profCorpusAllNEquationsQb}) & \profvalc{profEmpiricalAllNEquationsMed} (\profvalc{profEmpiricalAllNEquationsQa}--\profvalc{profEmpiricalAllNEquationsQb}) & \profvalc{profEmpiricalAssetPricingNEquationsMed} (\profvalc{profEmpiricalAssetPricingNEquationsQa}--\profvalc{profEmpiricalAssetPricingNEquationsQb}) & \profvalc{profCorporateFinanceNEquationsMed} (\profvalc{profCorporateFinanceNEquationsQa}--\profvalc{profCorporateFinanceNEquationsQb}) \\309Reference entries & \profvalc{profCorpusAllNReferencesMed} (\profvalc{profCorpusAllNReferencesQa}--\profvalc{profCorpusAllNReferencesQb}) & \profvalc{profEmpiricalAllNReferencesMed} (\profvalc{profEmpiricalAllNReferencesQa}--\profvalc{profEmpiricalAllNReferencesQb}) & \profvalc{profEmpiricalAssetPricingNReferencesMed} (\profvalc{profEmpiricalAssetPricingNReferencesQa}--\profvalc{profEmpiricalAssetPricingNReferencesQb}) & \profvalc{profCorporateFinanceNReferencesMed} (\profvalc{profCorporateFinanceNReferencesQa}--\profvalc{profCorporateFinanceNReferencesQb}) \\310Conclusion share & \profvalc{profCorpusAllConclusionShareMed} (\profvalc{profCorpusAllConclusionShareQa}--\profvalc{profCorpusAllConclusionShareQb}) & \profvalc{profEmpiricalAllConclusionShareMed} (\profvalc{profEmpiricalAllConclusionShareQa}--\profvalc{profEmpiricalAllConclusionShareQb}) & \profvalc{profEmpiricalAssetPricingConclusionShareMed} (\profvalc{profEmpiricalAssetPricingConclusionShareQa}--\profvalc{profEmpiricalAssetPricingConclusionShareQb}) & \profvalc{profCorporateFinanceConclusionShareMed} (\profvalc{profCorporateFinanceConclusionShareQa}--\profvalc{profCorporateFinanceConclusionShareQb}) \\311\bottomrule\end{tabular}312\end{table}313314\begin{table}[htbp]\centering\scriptsize315\caption{Structure medians (interquartile range in parentheses) of the profile files in \texttt{profiles/\allowbreak{}}, part B: theoretical = \texttt{theoretical\_\allowbreak{}finance}; econometrics = \texttt{financial\_\allowbreak{}econometrics}; banking = \texttt{financial\_\allowbreak{}intermediation\_\allowbreak{}banking}; household = \texttt{household\_\allowbreak{}behavioral\_\allowbreak{}finance}. Training split only. A cell prints TODO if its macro is absent from \texttt{numbers.\allowbreak{}tex}. Observed frequencies describe what published articles did; they are not editorial rules.}316\label{tab:profiles-all-b}317\begin{tabular}{lcccc}\toprule318Statistic & theoretical & econometrics & banking & household \\ \midrule319$n$ documents & \profvalc{profTheoreticalFinanceN} & \profvalc{profFinancialEconometricsN} & \profvalc{profFinancialIntermediationBankingN} & \profvalc{profHouseholdBehavioralFinanceN} \\320Body words & \profvalc{profTheoreticalFinanceNWordsBodyMed} (\profvalc{profTheoreticalFinanceNWordsBodyQa}--\profvalc{profTheoreticalFinanceNWordsBodyQb}) & \profvalc{profFinancialEconometricsNWordsBodyMed} (\profvalc{profFinancialEconometricsNWordsBodyQa}--\profvalc{profFinancialEconometricsNWordsBodyQb}) & \profvalc{profFinancialIntermediationBankingNWordsBodyMed} (\profvalc{profFinancialIntermediationBankingNWordsBodyQa}--\profvalc{profFinancialIntermediationBankingNWordsBodyQb}) & \profvalc{profHouseholdBehavioralFinanceNWordsBodyMed} (\profvalc{profHouseholdBehavioralFinanceNWordsBodyQa}--\profvalc{profHouseholdBehavioralFinanceNWordsBodyQb}) \\321Introduction words & \profvalc{profTheoreticalFinanceIntroWordsMed} (\profvalc{profTheoreticalFinanceIntroWordsQa}--\profvalc{profTheoreticalFinanceIntroWordsQb}) & \profvalc{profFinancialEconometricsIntroWordsMed} (\profvalc{profFinancialEconometricsIntroWordsQa}--\profvalc{profFinancialEconometricsIntroWordsQb}) & \profvalc{profFinancialIntermediationBankingIntroWordsMed} (\profvalc{profFinancialIntermediationBankingIntroWordsQa}--\profvalc{profFinancialIntermediationBankingIntroWordsQb}) & \profvalc{profHouseholdBehavioralFinanceIntroWordsMed} (\profvalc{profHouseholdBehavioralFinanceIntroWordsQa}--\profvalc{profHouseholdBehavioralFinanceIntroWordsQb}) \\322Introduction paragraphs & \profvalc{profTheoreticalFinanceIntroParagraphsMed} (\profvalc{profTheoreticalFinanceIntroParagraphsQa}--\profvalc{profTheoreticalFinanceIntroParagraphsQb}) & \profvalc{profFinancialEconometricsIntroParagraphsMed} (\profvalc{profFinancialEconometricsIntroParagraphsQa}--\profvalc{profFinancialEconometricsIntroParagraphsQb}) & \profvalc{profFinancialIntermediationBankingIntroParagraphsMed} (\profvalc{profFinancialIntermediationBankingIntroParagraphsQa}--\profvalc{profFinancialIntermediationBankingIntroParagraphsQb}) & \profvalc{profHouseholdBehavioralFinanceIntroParagraphsMed} (\profvalc{profHouseholdBehavioralFinanceIntroParagraphsQa}--\profvalc{profHouseholdBehavioralFinanceIntroParagraphsQb}) \\323Introduction share & \profvalc{profTheoreticalFinanceIntroShareMed} (\profvalc{profTheoreticalFinanceIntroShareQa}--\profvalc{profTheoreticalFinanceIntroShareQb}) & \profvalc{profFinancialEconometricsIntroShareMed} (\profvalc{profFinancialEconometricsIntroShareQa}--\profvalc{profFinancialEconometricsIntroShareQb}) & \profvalc{profFinancialIntermediationBankingIntroShareMed} (\profvalc{profFinancialIntermediationBankingIntroShareQa}--\profvalc{profFinancialIntermediationBankingIntroShareQb}) & \profvalc{profHouseholdBehavioralFinanceIntroShareMed} (\profvalc{profHouseholdBehavioralFinanceIntroShareQa}--\profvalc{profHouseholdBehavioralFinanceIntroShareQb}) \\324Tables & \profvalc{profTheoreticalFinanceNTablesMed} (\profvalc{profTheoreticalFinanceNTablesQa}--\profvalc{profTheoreticalFinanceNTablesQb}) & \profvalc{profFinancialEconometricsNTablesMed} (\profvalc{profFinancialEconometricsNTablesQa}--\profvalc{profFinancialEconometricsNTablesQb}) & \profvalc{profFinancialIntermediationBankingNTablesMed} (\profvalc{profFinancialIntermediationBankingNTablesQa}--\profvalc{profFinancialIntermediationBankingNTablesQb}) & \profvalc{profHouseholdBehavioralFinanceNTablesMed} (\profvalc{profHouseholdBehavioralFinanceNTablesQa}--\profvalc{profHouseholdBehavioralFinanceNTablesQb}) \\325Numbered equations & \profvalc{profTheoreticalFinanceNEquationsMed} (\profvalc{profTheoreticalFinanceNEquationsQa}--\profvalc{profTheoreticalFinanceNEquationsQb}) & \profvalc{profFinancialEconometricsNEquationsMed} (\profvalc{profFinancialEconometricsNEquationsQa}--\profvalc{profFinancialEconometricsNEquationsQb}) & \profvalc{profFinancialIntermediationBankingNEquationsMed} (\profvalc{profFinancialIntermediationBankingNEquationsQa}--\profvalc{profFinancialIntermediationBankingNEquationsQb}) & \profvalc{profHouseholdBehavioralFinanceNEquationsMed} (\profvalc{profHouseholdBehavioralFinanceNEquationsQa}--\profvalc{profHouseholdBehavioralFinanceNEquationsQb}) \\326Reference entries & \profvalc{profTheoreticalFinanceNReferencesMed} (\profvalc{profTheoreticalFinanceNReferencesQa}--\profvalc{profTheoreticalFinanceNReferencesQb}) & \profvalc{profFinancialEconometricsNReferencesMed} (\profvalc{profFinancialEconometricsNReferencesQa}--\profvalc{profFinancialEconometricsNReferencesQb}) & \profvalc{profFinancialIntermediationBankingNReferencesMed} (\profvalc{profFinancialIntermediationBankingNReferencesQa}--\profvalc{profFinancialIntermediationBankingNReferencesQb}) & \profvalc{profHouseholdBehavioralFinanceNReferencesMed} (\profvalc{profHouseholdBehavioralFinanceNReferencesQa}--\profvalc{profHouseholdBehavioralFinanceNReferencesQb}) \\327Conclusion share & \profvalc{profTheoreticalFinanceConclusionShareMed} (\profvalc{profTheoreticalFinanceConclusionShareQa}--\profvalc{profTheoreticalFinanceConclusionShareQb}) & \profvalc{profFinancialEconometricsConclusionShareMed} (\profvalc{profFinancialEconometricsConclusionShareQa}--\profvalc{profFinancialEconometricsConclusionShareQb}) & \profvalc{profFinancialIntermediationBankingConclusionShareMed} (\profvalc{profFinancialIntermediationBankingConclusionShareQa}--\profvalc{profFinancialIntermediationBankingConclusionShareQb}) & \profvalc{profHouseholdBehavioralFinanceConclusionShareMed} (\profvalc{profHouseholdBehavioralFinanceConclusionShareQa}--\profvalc{profHouseholdBehavioralFinanceConclusionShareQb}) \\328\bottomrule\end{tabular}329\end{table}330331\begin{table}[htbp]\centering\scriptsize332\caption{Rhetoric block of each profile (model annotation, training split only). Abstract columns: share (\%) of abstracts in which the move is present. Roadmap: share (\%) of introductions with a roadmap paragraph according to the model (LLM) and to the regular expression (regex). Contribution position: median relative position of the contribution paragraph in the introduction (interquartile range). Causal: median causal-language score (1--5). Econ.\ sig.: share (\%) discussing economic significance. Bounded / open: share (\%) of conclusions with bounded claims / open questions. Descriptive, not prescriptive.}333\label{tab:profiles-rhetoric}334\resizebox{\linewidth}{!}{\begin{tabular}{lcccccccccccccc}\toprule335 & & \multicolumn{6}{c}{Abstract moves present (\%)} & \multicolumn{2}{c}{Roadmap (\%)} & & & & \multicolumn{2}{c}{Conclusion (\%)} \\336\cmidrule(lr){3-8}\cmidrule(lr){9-10}\cmidrule(lr){14-15}337Profile & $n$ & Quest. & Gap & Method & Results & Magn. & Contrib. & LLM & Regex & Contrib.\ pos. & Causal & Econ.\ sig. & Bounded & Open \\ \midrule338all & \profvalc{profCorpusAllN} & \profvalc{profCorpusAllAbsQuestion} & \profvalc{profCorpusAllAbsGap} & \profvalc{profCorpusAllAbsMethod} & \profvalc{profCorpusAllAbsResults} & \profvalc{profCorpusAllAbsMagnitude} & \profvalc{profCorpusAllAbsContribution} & \profvalc{profCorpusAllRoadmap} & \profvalc{profCorpusAllRoadmapRegex} & \profvalc{profCorpusAllContribPos} (\profvalc{profCorpusAllContribPosQa}--\profvalc{profCorpusAllContribPosQb}) & \profvalc{profCorpusAllCausal} & \profvalc{profCorpusAllEconSig} & \profvalc{profCorpusAllConclBounded} & \profvalc{profCorpusAllConclOpen} \\339empirical & \profvalc{profEmpiricalAllN} & \profvalc{profEmpiricalAllAbsQuestion} & \profvalc{profEmpiricalAllAbsGap} & \profvalc{profEmpiricalAllAbsMethod} & \profvalc{profEmpiricalAllAbsResults} & \profvalc{profEmpiricalAllAbsMagnitude} & \profvalc{profEmpiricalAllAbsContribution} & \profvalc{profEmpiricalAllRoadmap} & \profvalc{profEmpiricalAllRoadmapRegex} & \profvalc{profEmpiricalAllContribPos} (\profvalc{profEmpiricalAllContribPosQa}--\profvalc{profEmpiricalAllContribPosQb}) & \profvalc{profEmpiricalAllCausal} & \profvalc{profEmpiricalAllEconSig} & \profvalc{profEmpiricalAllConclBounded} & \profvalc{profEmpiricalAllConclOpen} \\340asset pricing & \profvalc{profEmpiricalAssetPricingN} & \profvalc{profEmpiricalAssetPricingAbsQuestion} & \profvalc{profEmpiricalAssetPricingAbsGap} & \profvalc{profEmpiricalAssetPricingAbsMethod} & \profvalc{profEmpiricalAssetPricingAbsResults} & \profvalc{profEmpiricalAssetPricingAbsMagnitude} & \profvalc{profEmpiricalAssetPricingAbsContribution} & \profvalc{profEmpiricalAssetPricingRoadmap} & \profvalc{profEmpiricalAssetPricingRoadmapRegex} & \profvalc{profEmpiricalAssetPricingContribPos} (\profvalc{profEmpiricalAssetPricingContribPosQa}--\profvalc{profEmpiricalAssetPricingContribPosQb}) & \profvalc{profEmpiricalAssetPricingCausal} & \profvalc{profEmpiricalAssetPricingEconSig} & \profvalc{profEmpiricalAssetPricingConclBounded} & \profvalc{profEmpiricalAssetPricingConclOpen} \\341corporate finance & \profvalc{profCorporateFinanceN} & \profvalc{profCorporateFinanceAbsQuestion} & \profvalc{profCorporateFinanceAbsGap} & \profvalc{profCorporateFinanceAbsMethod} & \profvalc{profCorporateFinanceAbsResults} & \profvalc{profCorporateFinanceAbsMagnitude} & \profvalc{profCorporateFinanceAbsContribution} & \profvalc{profCorporateFinanceRoadmap} & \profvalc{profCorporateFinanceRoadmapRegex} & \profvalc{profCorporateFinanceContribPos} (\profvalc{profCorporateFinanceContribPosQa}--\profvalc{profCorporateFinanceContribPosQb}) & \profvalc{profCorporateFinanceCausal} & \profvalc{profCorporateFinanceEconSig} & \profvalc{profCorporateFinanceConclBounded} & \profvalc{profCorporateFinanceConclOpen} \\342theoretical & \profvalc{profTheoreticalFinanceN} & \profvalc{profTheoreticalFinanceAbsQuestion} & \profvalc{profTheoreticalFinanceAbsGap} & \profvalc{profTheoreticalFinanceAbsMethod} & \profvalc{profTheoreticalFinanceAbsResults} & \profvalc{profTheoreticalFinanceAbsMagnitude} & \profvalc{profTheoreticalFinanceAbsContribution} & \profvalc{profTheoreticalFinanceRoadmap} & \profvalc{profTheoreticalFinanceRoadmapRegex} & \profvalc{profTheoreticalFinanceContribPos} (\profvalc{profTheoreticalFinanceContribPosQa}--\profvalc{profTheoreticalFinanceContribPosQb}) & \profvalc{profTheoreticalFinanceCausal} & \profvalc{profTheoreticalFinanceEconSig} & \profvalc{profTheoreticalFinanceConclBounded} & \profvalc{profTheoreticalFinanceConclOpen} \\343econometrics & \profvalc{profFinancialEconometricsN} & \profvalc{profFinancialEconometricsAbsQuestion} & \profvalc{profFinancialEconometricsAbsGap} & \profvalc{profFinancialEconometricsAbsMethod} & \profvalc{profFinancialEconometricsAbsResults} & \profvalc{profFinancialEconometricsAbsMagnitude} & \profvalc{profFinancialEconometricsAbsContribution} & \profvalc{profFinancialEconometricsRoadmap} & \profvalc{profFinancialEconometricsRoadmapRegex} & \profvalc{profFinancialEconometricsContribPos} (\profvalc{profFinancialEconometricsContribPosQa}--\profvalc{profFinancialEconometricsContribPosQb}) & \profvalc{profFinancialEconometricsCausal} & \profvalc{profFinancialEconometricsEconSig} & \profvalc{profFinancialEconometricsConclBounded} & \profvalc{profFinancialEconometricsConclOpen} \\344banking & \profvalc{profFinancialIntermediationBankingN} & \profvalc{profFinancialIntermediationBankingAbsQuestion} & \profvalc{profFinancialIntermediationBankingAbsGap} & \profvalc{profFinancialIntermediationBankingAbsMethod} & \profvalc{profFinancialIntermediationBankingAbsResults} & \profvalc{profFinancialIntermediationBankingAbsMagnitude} & \profvalc{profFinancialIntermediationBankingAbsContribution} & \profvalc{profFinancialIntermediationBankingRoadmap} & \profvalc{profFinancialIntermediationBankingRoadmapRegex} & \profvalc{profFinancialIntermediationBankingContribPos} (\profvalc{profFinancialIntermediationBankingContribPosQa}--\profvalc{profFinancialIntermediationBankingContribPosQb}) & \profvalc{profFinancialIntermediationBankingCausal} & \profvalc{profFinancialIntermediationBankingEconSig} & \profvalc{profFinancialIntermediationBankingConclBounded} & \profvalc{profFinancialIntermediationBankingConclOpen} \\345household & \profvalc{profHouseholdBehavioralFinanceN} & \profvalc{profHouseholdBehavioralFinanceAbsQuestion} & \profvalc{profHouseholdBehavioralFinanceAbsGap} & \profvalc{profHouseholdBehavioralFinanceAbsMethod} & \profvalc{profHouseholdBehavioralFinanceAbsResults} & \profvalc{profHouseholdBehavioralFinanceAbsMagnitude} & \profvalc{profHouseholdBehavioralFinanceAbsContribution} & \profvalc{profHouseholdBehavioralFinanceRoadmap} & \profvalc{profHouseholdBehavioralFinanceRoadmapRegex} & \profvalc{profHouseholdBehavioralFinanceContribPos} (\profvalc{profHouseholdBehavioralFinanceContribPosQa}--\profvalc{profHouseholdBehavioralFinanceContribPosQb}) & \profvalc{profHouseholdBehavioralFinanceCausal} & \profvalc{profHouseholdBehavioralFinanceEconSig} & \profvalc{profHouseholdBehavioralFinanceConclBounded} & \profvalc{profHouseholdBehavioralFinanceConclOpen} \\346\bottomrule\end{tabular}}347\end{table}348349\section{Splits and fixtures}350\label{app:splits}351352\paragraph{Split protocol.} \texttt{heldout\_\allowbreak{}v1} (\texttt{data/\allowbreak{}splits/\allowbreak{}heldout\_\allowbreak{}v1.\allowbreak{}json}, \texttt{scripts/\allowbreak{}03\_\allowbreak{}make\_\allowbreak{}splits.\allowbreak{}py}, seed 45) is a document-level split of the \nIncluded{} included documents: within each (publication year, article type) stratum, 20\% of the document identifiers are sampled without replacement into the held-out set, giving \nTrain{} training and \nHeldout{} held-out documents. The file records the protocol name, seed, rule, counts, the two identifier lists, the author-overlap count (\nHeldoutAuthorOverlap{} held-out documents share at least one author surname with a training document; overlap is reported, not eliminated), and the usual provenance stamp. Profiles, the training-only retrieval filter, and prompt tuning use the training list only; the held-out list is used solely to build evaluation fixtures. Document identifiers are of the form \texttt{jof\_\allowbreak{}\textit{nnnnn}}, the numeric suffix of the article's DOI.353354\paragraph{Fixtures.} \texttt{scripts/\allowbreak{}04\_\allowbreak{}build\_\allowbreak{}fixtures.\allowbreak{}py} (seed 45) selects, among held-out empirical articles with at least six tables, two articles of different subfields and writes for each a directory containing \texttt{manuscript.\allowbreak{}md} (the parsed structure rendered as Markdown with the published introduction withheld), \texttt{manuscript\_\allowbreak{}with\_\allowbreak{}intro.\allowbreak{}md}, \texttt{published\_\allowbreak{}introduction.\allowbreak{}txt}, \texttt{meta.\allowbreak{}json}, and the deterministically degraded literature passage used by the rewrite task; the out-of-domain fixture points to the LaTeX source of UQO Working Paper 29. Fixture directories contain excerpts of copyrighted text and are therefore private (excluded from version control), as is the raw output of every engine run on them. The held-out identifiers are listed in the split file; they are not reproduced here.355356\section{Reproducibility}357\label{app:reproducibility}358359Table~\ref{tab:repro} lists the command that regenerates each artefact (\texttt{docs/\allowbreak{}REPRODUCIBILITY.\allowbreak{}md}). Every JSON artefact carries a \texttt{timestamp}, a \texttt{code\_\allowbreak{}version} (git short hash, suffixed \texttt{-dirty} when uncommitted changes were present), and a \texttt{host} description; the environment is pinned in \texttt{pyproject.\allowbreak{}toml} (Python 3.12.13) and model identifiers in \texttt{config/\allowbreak{}models.\allowbreak{}yaml}. Stages that call a language model are not deterministic; their inputs, outputs, and costs are stored so that any analysis can be re-run on the recorded outputs.360361\begin{table}[htbp]362\centering363\small364\caption{Regeneration commands (run from the repository root; \texttt{make} targets wrap \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}jof250}).}365\label{tab:repro}366\begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.26\linewidth}>{\raggedright\arraybackslash}p{0.40\linewidth}>{\raggedright\arraybackslash}X}367\toprule368Artefact & Command & Deterministic? \\369\midrule370Corpus manifest and audit & \texttt{make audit} & yes, given the Crossref cache \\371Parsed documents & \texttt{make parse} & yes (parser version in each file) \\372Parser QA & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}02\_\allowbreak{}parser\_\allowbreak{}qa.\allowbreak{}py} & yes (seed 45) \\373Splits & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}03\_\allowbreak{}make\_\allowbreak{}splits.\allowbreak{}py} & yes (seed 45) \\374Annotations & \texttt{make annotate} & no (LLM; responses cached by prompt hash) \\375Profiles and figures & \texttt{make profiles} & yes (bootstrap seed 45) \\376Retrieval index & \texttt{make index} & yes (same embedding model) \\377Fixtures & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}04\_\allowbreak{}build\_\allowbreak{}fixtures.\allowbreak{}py} & yes (seed 45) \\378Benchmark & \texttt{jof250 benchmark --config config/\allowbreak{}evaluation.\allowbreak{}yaml} & no (LLM; all raw runs stored) \\379Analysis, paper tables and figures & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}05\_\allowbreak{}analyze\_\allowbreak{}benchmark.\allowbreak{}py} & yes (seed 45) \\380Number macros & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}07\_\allowbreak{}make\_\allowbreak{}numbers.\allowbreak{}py} & yes \\381Paper & \texttt{cd paper \&\& make} & yes \\382Tests & \texttt{make test} & yes (synthetic fixtures; no API calls) \\383\bottomrule384\end{tabularx}385\end{table}386387\section{User manual}388\label{app:manual}389390This appendix condenses \texttt{docs/\allowbreak{}USER\_\allowbreak{}GUIDE.\allowbreak{}md} and \texttt{docs/\allowbreak{}INSTALL.\allowbreak{}md}.391392\paragraph{Installation.} Create the environment (\texttt{uv venv --python 3.12 .\allowbreak{}venv} and \texttt{uv pip install -e ".[dev]"}), copy \texttt{.\allowbreak{}env.\allowbreak{}example} to \texttt{.\allowbreak{}env} and point \texttt{JOF250\_\allowbreak{}ANTHROPIC\_\allowbreak{}KEY\_\allowbreak{}FILE} to a file holding the API key (never committed), and run \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}jof250 --help}. The corpus root is set in \texttt{config/\allowbreak{}corpus.\allowbreak{}yaml}; derived artefacts are regenerated with the commands of Table~\ref{tab:repro}. Opening Claude Code inside the repository makes the project-scoped commands available; \texttt{jof250 install-claude-code --scope user} copies only the \texttt{jof-} files into the user's Claude Code directory (removal: delete those files). Commands call the absolute path of the repository's \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}jof250}; after moving the repository, re-run the install command.393394\paragraph{Concepts.} A \emph{profile} is a measured distribution from the training split, to be read as what published articles did, not as a rule (\texttt{/\allowbreak{}jof-profile <name>}). \emph{Structured retrieval} is hybrid BM25 and local-embedding search over annotation units and short excerpts, every hit carrying provenance (\texttt{jof250 retrieve --topic "\ldots" [--unit annotation|raw] [--section results] [--year 2019]}). The \emph{engine} (\texttt{jof250 write}) takes \texttt{--mode outline|write|upgrade}, \texttt{--section} (introduction, literature, data, empirical\_design, results, robustness, conclusion, abstract), and \texttt{--condition} (A to E; default E).395396\paragraph{Output contract.} The engine always writes a \emph{new} file at the requested \texttt{--output} path, headed by a comment stating that it is a proposal and that the manuscript was not modified, and a sibling \texttt{.\allowbreak{}report.\allowbreak{}md} holding the change log, the flags (statements the author must verify), the retrieval provenance, the deterministic audit (numeric preservation, unknown citation keys, unsupported-claim sentences, corpus overlap), and a unified diff against the current section. Reviews (\texttt{jof250 review --role referee|editor|table\_\allowbreak{}editor|integrity|replication}) write a Markdown report with the deterministic audit appended; audits (\texttt{jof250 audit}) and evidence lookups (\texttt{jof250 evidence --claim "\ldots"}) make no API call. The manuscript itself is never modified; patches are applied only on the user's explicit request.397398\paragraph{Slash commands and agents.} The ten commands and their arguments are listed in Table~\ref{tab:commands}; Claude Code passes the text typed after the command as \texttt{\$ARGUMENTS}, and each command file instructs the assistant how to parse it. The seven specialist agents (Table~\ref{tab:agents}) wrap the review and audit commands and propose patches or reports without editing the manuscript. The skill file (\texttt{.\allowbreak{}claude/\allowbreak{}skills/\allowbreak{}jof250/\allowbreak{}SKILL.\allowbreak{}md}) states the rules for the assistant: always pass an explicit output path under the paper's \texttt{jof250\_\allowbreak{}proposals/\allowbreak{}} or \texttt{jof250\_\allowbreak{}reviews/\allowbreak{}} folder or under \texttt{/\allowbreak{}tmp}; relay every flag and audit item and never present a generated number or citation as verified; for theory, methods, or non-finance manuscripts, say which conventions do not apply; warn that API calls cost money (\texttt{jof250 status} shows spend) and dry-run the benchmark first; and repair a missing environment with \texttt{make install} and \texttt{make index}.399400\paragraph{Manuscripts supported.} LaTeX projects (a directory with \texttt{paper/\allowbreak{}main.\allowbreak{}tex} or \texttt{main.\allowbreak{}tex}; \texttt{\textbackslash input} and \texttt{\textbackslash include} resolved; UQO \texttt{\textbackslash WP\ldots} macros read; \texttt{*.\allowbreak{}bib} files scanned for keys and DOIs) and Markdown files. Theory, methods, and non-finance manuscripts are accepted; the engine prints a genre note explaining which corpus conventions do not apply.401402\section{Claude Code command files}403\label{app:commands}404405The ten command files under \texttt{.\allowbreak{}claude/\allowbreak{}commands/\allowbreak{}} are generated from \texttt{integrations/\allowbreak{}claude\_\allowbreak{}code.\allowbreak{}py}. One is reproduced verbatim below (\texttt{jof-write.\allowbreak{}md}); the others follow the same pattern (front matter with a description, an argument hint, and an allowed-tools list restricted to the project CLI and read-only utilities; a body that tells the assistant how to parse \texttt{\$ARGUMENTS}, which CLI command to run, which files to read afterwards, and what to show the user).406407\begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt}408---409410description: Draft a manuscript section with the full JoF-250 engine (profiles, structured retrieval, verification, specialist referee)411412argument-hint: \textless{}paper-path\textgreater{} --section \textless{}name\textgreater{} [--condition A|B|C|D|E]413414allowed-tools: Bash(/\allowbreak{}Users/\allowbreak{}simon-pierreboucher/\allowbreak{}Desktop/\allowbreak{}UQO/\allowbreak{}Recherche/\allowbreak{}Recherche-UQO/\allowbreak{}methodes/\allowbreak{}wp45-jof250/\allowbreak{}.venv/\allowbreak{}bin/\allowbreak{}jof250:*), Bash(ls:*), Bash(cat:*), Bash(mkdir:*), Read, Glob, Grep415416---417418Parse `\$ARGUMENTS` as `\textless{}paper-path\textgreater{} [--section \textless{}name\textgreater{}] [--condition X]` (defaults: introduction, E\_full\_engine). Run `/\allowbreak{}Users/\allowbreak{}simon-pierreboucher/\allowbreak{}Desktop/\allowbreak{}UQO/\allowbreak{}Recherche/\allowbreak{}Recherche-UQO/\allowbreak{}methodes/\allowbreak{}wp45-jof250/\allowbreak{}.venv/\allowbreak{}bin/\allowbreak{}jof250 write --paper \textless{}path\textgreater{} --section \textless{}name\textgreater{} --mode write --condition \textless{}X\textgreater{} --output \textless{}paper-path\textgreater{}/\allowbreak{}jof250\_proposals/\allowbreak{}\textless{}name\textgreater{}\_\textless{}date\textgreater{}.tex` (create the folder; this is a NEW file, the manuscript is never modified). Then read the `.report.md` next to it and show: the proposed text location, the change log, every FLAG (facts the author must verify), the deterministic audit summary (numbers not in the manuscript, unknown citation keys, unsupported claims, corpus overlap), and retrieval provenance.419420\end{quote}421
Files · abe8945aefffa0096080b1470e6c1c6a089f5faa
Menu

Theme