WP45: move prevalence in profiles, separate-project command test, progress log
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
29 changed files +742 −239
modified
data/annotations/api_ledger.jsonl
+12 −0
@@ -288,3 +288,15 @@ | ||
| 288 | 288 | {"ts": "2026-11-03T23:27:05+00:00", "purpose": "annotation_retry", "prompt_id": "document_annotation", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 7161, "output": 2295, "cache_read": 3968, "cache_write": 0}, "cost_usd": 0.075338, "latency_s": 18.68, "request_id": "req_011CggrrNBHK6QoQyEYrAUjs", "stop_reason": "end_turn", "cache_key": "5bfd9e76918e64c56dc993f3939431e2dda7a9aee592061321310701f22ad707", "code_version": "87c73cd-dirty", "doc_id": "jof_12868"} |
| 289 | 289 | {"ts": "2026-11-03T23:27:07+00:00", "purpose": "annotation_retry", "prompt_id": "document_annotation", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 7359, "output": 2666, "cache_read": 3968, "cache_write": 0}, "cost_usd": 0.08355, "latency_s": 22.39, "request_id": "req_011CggrrBzrjTiphppSbjAMY", "stop_reason": "end_turn", "cache_key": "30b444ed602a6d01c600e8984ffc866d61478b28f8978467cf7708d7c6634c69", "code_version": "87c73cd-dirty", "doc_id": "jof_12835"} |
| 290 | 290 | {"ts": "2026-11-03T23:27:09+00:00", "purpose": "annotation_retry", "prompt_id": "document_annotation", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 8325, "output": 2058, "cache_read": 3968, "cache_write": 0}, "cost_usd": 0.075254, "latency_s": 16.76, "request_id": "req_011CggrrjmJhp2hjaEQ2qaoU", "stop_reason": "end_turn", "cache_key": "57e5a1125dae285dc78ea3d57e62167da44dc58754e4d20d3d88588c65db48fc", "code_version": "87c73cd-dirty", "doc_id": "jof_12899"} |
| 291 | +{"ts": "2026-11-03T23:28:41+00:00", "purpose": "write:B_strong_prompt:write", "prompt_id": "condition_B_strong_prompt", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 2903, "output": 4135, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.094312, "latency_s": 41.87, "request_id": "req_011Cggrwi7yVBzysr2LhzjCr", "stop_reason": "end_turn", "cache_key": "6dde7b6e89a0a956a5a91b2cba3206aaa401e3d64f3612db968a6d71c5605077", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 292 | +{"ts": "2026-11-03T23:28:42+00:00", "purpose": "write:A_baseline:write", "prompt_id": "condition_A_minimal", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 2717, "output": 4351, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.097888, "latency_s": 42.38, "request_id": "req_011Cggrwi4zknATfCE7kC3bW", "stop_reason": "end_turn", "cache_key": "14c5a16fff6feea657918cce7edd112a9b258c8bd5eda184f58a8381e0dc4322", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 2} | |
| 293 | +{"ts": "2026-11-03T23:28:42+00:00", "purpose": "write:A_baseline:write", "prompt_id": "condition_A_minimal", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 2717, "output": 4410, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.099068, "latency_s": 42.94, "request_id": "req_011Cggrwi6EUK3uDwjocUWM5", "stop_reason": "end_turn", "cache_key": "14c5a16fff6feea657918cce7edd112a9b258c8bd5eda184f58a8381e0dc4322", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 294 | +{"ts": "2026-11-03T23:28:45+00:00", "purpose": "write:B_strong_prompt:write", "prompt_id": "condition_B_strong_prompt", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 2903, "output": 4719, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.105992, "latency_s": 45.85, "request_id": "req_011Cggrwi6jYdtpEYREzs9v8", "stop_reason": "end_turn", "cache_key": "6dde7b6e89a0a956a5a91b2cba3206aaa401e3d64f3612db968a6d71c5605077", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 2} | |
| 295 | +{"ts": "2026-11-03T23:29:36+00:00", "purpose": "write:C_conventional_rag:write", "prompt_id": "condition_C_conventional_rag", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 4228, "output": 5053, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.117972, "latency_s": 49.92, "request_id": "req_011Cggs1AZHEy3U1DA8DGEgo", "stop_reason": "end_turn", "cache_key": "1b4df22c7c268c7ed16b8b4aa9b47450743a341fcbf5ad72f13857af46496df7", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 2} | |
| 296 | +{"ts": "2026-11-03T23:29:36+00:00", "purpose": "write:D_profiles_retrieval:write", "prompt_id": "condition_D_profiles_structured", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 5878, "output": 5130, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.126112, "latency_s": 50.36, "request_id": "req_011Cggs1AYo1kWyQDPXJ93no", "stop_reason": "end_turn", "cache_key": "fff369931f8d94327615ae3d342703ed5085e66d11ad6eb69eb4a098562fb78c", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 2} | |
| 297 | +{"ts": "2026-11-03T23:29:38+00:00", "purpose": "write:C_conventional_rag:write", "prompt_id": "condition_C_conventional_rag", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 4228, "output": 5297, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.122852, "latency_s": 51.78, "request_id": "req_011Cggs1AZHrc584Ev4MdyyZ", "stop_reason": "end_turn", "cache_key": "1b4df22c7c268c7ed16b8b4aa9b47450743a341fcbf5ad72f13857af46496df7", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 298 | +{"ts": "2026-11-03T23:29:38+00:00", "purpose": "write:D_profiles_retrieval:write", "prompt_id": "condition_D_profiles_structured", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 5878, "output": 5148, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.126472, "latency_s": 51.89, "request_id": "req_011Cggs1AWZjf8v5J9BJ8uZG", "stop_reason": "end_turn", "cache_key": "fff369931f8d94327615ae3d342703ed5085e66d11ad6eb69eb4a098562fb78c", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 299 | +{"ts": "2026-11-03T23:30:24+00:00", "purpose": "write:E_full_engine:write", "prompt_id": "condition_D_profiles_structured", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 4474, "output": 4660, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.111096, "latency_s": 44.99, "request_id": "req_011Cggs52jMtxRUWUgG1jXRa", "stop_reason": "end_turn", "cache_key": "1ec7b77c6bd3f78553be95ff3b66d9610adcddaad74c79789749ecb9ec1be3d3", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 300 | +{"ts": "2026-11-03T23:30:27+00:00", "purpose": "write:E_full_engine:write", "prompt_id": "condition_D_profiles_structured", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 5878, "output": 5115, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.125812, "latency_s": 50.9, "request_id": "req_011Cggs4sG6DrgePo29u4Lv3", "stop_reason": "end_turn", "cache_key": "fff369931f8d94327615ae3d342703ed5085e66d11ad6eb69eb4a098562fb78c", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 301 | +{"ts": "2026-11-03T23:30:30+00:00", "purpose": "write:E_full_engine:write", "prompt_id": "condition_D_profiles_structured", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 4429, "output": 5221, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.122136, "latency_s": 51.58, "request_id": "req_011Cggs52avQsvHM3KPvpRpv", "stop_reason": "end_turn", "cache_key": "e35ae5f9c9cd6c13dbb3a23a6b69bc0552a6803e06efccec17f3e6b0a7770414", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 1} | |
| 302 | +{"ts": "2026-11-03T23:30:32+00:00", "purpose": "write:E_full_engine:write", "prompt_id": "condition_D_profiles_structured", "prompt_version": "1.0", "model": "claude-opus-5-5", "effort": "medium", "usage": {"input": 5878, "output": 5466, "cache_read": 0, "cache_write": 0}, "cost_usd": 0.132832, "latency_s": 54.96, "request_id": "req_011Cggs4thA6RU7qL3DiitEM", "stop_reason": "end_turn", "cache_key": "fff369931f8d94327615ae3d342703ed5085e66d11ad6eb69eb4a098562fb78c", "code_version": "f8b9e5a-dirty", "section": "introduction", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "benchmark": "heldout_v1", "task": "draft_introduction", "doc": "jof_12439", "rep": 2} | |
modified
data/annotations/engine_runs.jsonl
+8 −0
@@ -2,3 +2,11 @@ | ||
| 2 | 2 | {"ts": "2026-11-03T23:10:10+00:00", "paper": "/private/var/folders/zc/pddk52vj4m52cf96zt97ldm00000gn/T/pytest-of-simon-pierreboucher/pytest-102/test_engine_writes_proposal_fi0/paper", "section": "introduction", "mode": "write", "condition": "E_full_engine", "ablation": {}, "model": "claude-opus-5-5", "effort": "high", "detected": {"genre": "empirical", "subfield": "corporate_finance", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 0, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": "corporate_finance", "retrieved": [], "usage": {"input": 2, "output": 2}, "cost_usd": 0.0, "latency_s": 0.0, "n_calls": 2, "prompt_versions": {"condition_D_profiles_structured": "1.0"}, "generated": {"timestamp": "2026-11-03T23:10:10+00:00", "code_version": "87c73cd-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "552179f3a8d4a708e957224a3ee28950d8b40e376c362e2048efb87761ae3b92", "output": "/private/var/folders/zc/pddk52vj4m52cf96zt97ldm00000gn/T/pytest-of-simon-pierreboucher/pytest-102/test_engine_writes_proposal_fi0/prop/intro.tex", "report": "/private/var/folders/zc/pddk52vj4m52cf96zt97ldm00000gn/T/pytest-of-simon-pierreboucher/pytest-102/test_engine_writes_proposal_fi0/prop/intro.report.md"} |
| 3 | 3 | {"ts": "2026-11-03T23:10:24+00:00", "paper": "/private/var/folders/zc/pddk52vj4m52cf96zt97ldm00000gn/T/pytest-of-simon-pierreboucher/pytest-103/test_engine_writes_proposal_fi0/paper", "section": "introduction", "mode": "write", "condition": "E_full_engine", "ablation": {}, "model": "claude-opus-5-5", "effort": "high", "detected": {"genre": "empirical", "subfield": "corporate_finance", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 0, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": "corporate_finance", "retrieved": [], "usage": {"input": 2, "output": 2}, "cost_usd": 0.0, "latency_s": 0.0, "n_calls": 2, "prompt_versions": {"condition_D_profiles_structured": "1.0"}, "generated": {"timestamp": "2026-11-03T23:10:24+00:00", "code_version": "87c73cd-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "552179f3a8d4a708e957224a3ee28950d8b40e376c362e2048efb87761ae3b92", "output": "/private/var/folders/zc/pddk52vj4m52cf96zt97ldm00000gn/T/pytest-of-simon-pierreboucher/pytest-103/test_engine_writes_proposal_fi0/prop/intro.tex", "report": "/private/var/folders/zc/pddk52vj4m52cf96zt97ldm00000gn/T/pytest-of-simon-pierreboucher/pytest-103/test_engine_writes_proposal_fi0/prop/intro.report.md"} |
| 4 | 4 | {"ts": "2026-11-03T23:14:10+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/autonomous-research-claude-code", "role": "referee", "model": "claude-opus-5-5", "detected": {"genre": "empirical", "subfield": "ai_agents_methods", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 0, "household_finance": 0, "behavioral_finance": 1, "market_microstructure": 0, "financial_econometrics": 1, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 9}}, "cost_usd": 0.186712, "latency_s": 60.9, "generated": {"timestamp": "2026-11-03T23:14:10+00:00", "code_version": "87c73cd-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "output": "experiments/outputs/demo/wp29_referee.md"} |
| 5 | +{"ts": "2026-11-03T23:28:41+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "B_strong_prompt", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": null, "retrieved": [], "usage": {"input": 2903, "output": 4135}, "cost_usd": 0.09431, "latency_s": 41.9, "n_calls": 1, "prompt_versions": {"condition_B_strong_prompt": "1.0"}, "generated": {"timestamp": "2026-11-03T23:28:41+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 6 | +{"ts": "2026-11-03T23:28:42+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "A_baseline", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": null, "retrieved": [], "usage": {"input": 2717, "output": 4351}, "cost_usd": 0.09789, "latency_s": 42.5, "n_calls": 1, "prompt_versions": {"condition_A_minimal": "1.0"}, "generated": {"timestamp": "2026-11-03T23:28:42+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 7 | +{"ts": "2026-11-03T23:28:42+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "A_baseline", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": null, "retrieved": [], "usage": {"input": 2717, "output": 4410}, "cost_usd": 0.09907, "latency_s": 43.0, "n_calls": 1, "prompt_versions": {"condition_A_minimal": "1.0"}, "generated": {"timestamp": "2026-11-03T23:28:42+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 8 | +{"ts": "2026-11-03T23:28:45+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "B_strong_prompt", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": null, "retrieved": [], "usage": {"input": 2903, "output": 4719}, "cost_usd": 0.10599, "latency_s": 45.9, "n_calls": 1, "prompt_versions": {"condition_B_strong_prompt": "1.0"}, "generated": {"timestamp": "2026-11-03T23:28:45+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 9 | +{"ts": "2026-11-03T23:29:36+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "C_conventional_rag", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": null, "retrieved": [{"unit": "section_opening", "score": 0.9866, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7893, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.938, "split": "train"}, {"unit": "section_opening", "score": 0.7784, "doc_id": "jof_12520", "doi": "10.1111/jofi.12520", "title": "The Front Men of Wall Street: The Role of CDO Collateral Managers in the CDO Boom and Bust", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "a137c7ec184e2efa", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7773, "doc_id": "jof_12955", "doi": "10.1111/jofi.12955", "title": "The Employment Effects of Faster Payment: Evidence from the Federal Quickpay Reform", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "01e6ee298a8045e4", "role": "introduction", "genre": "empirical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7726, "doc_id": "jof_12856", "doi": "10.1111/jofi.12856", "title": "The Insurance Is the Lemon: Failing to Index Contracts", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "9c4ffadde6f75d24", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7423, "doc_id": "jof_12961", "doi": "10.1111/jofi.12961", "title": "Credit Rating Inflation and Firms’ Investments", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "36edd46ebfff3bfb", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.938, "split": "train"}], "usage": {"input": 4228, "output": 5053}, "cost_usd": 0.11797, "latency_s": 53.9, "n_calls": 1, "prompt_versions": {"condition_C_conventional_rag": "1.0"}, "generated": {"timestamp": "2026-11-03T23:29:36+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 10 | +{"ts": "2026-11-03T23:29:36+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "D_profiles_retrieval", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": "financial_intermediation_banking", "retrieved": [{"unit": "intro_move", "score": 1.0, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "introduction", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7929, "doc_id": "jof_12609", "doi": "10.1111/jofi.12609", "title": "Is Proprietary Trading Detrimental to Retail Investors?", "year": 2018, "page": 1, "section": NaN, "sha256": "d587694fb51b463b", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.82, "split": "train"}, {"unit": "document_summary", "score": 0.7878, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": NaN, "sha256": "ed95aa3a0bd82030", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7847, "doc_id": "jof_12604", "doi": "10.1111/jofi.12604", "title": "Bank Capital and Lending Relationships", "year": 2018, "page": 1, "section": NaN, "sha256": "860c930fc2afa26d", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7825, "doc_id": "jof_12726", "doi": "10.1111/jofi.12726", "title": "The Impact of Bank Credit on Labor Reallocation and Aggregate Industry Productivity", "year": 2018, "page": 3, "section": "introduction", "sha256": "3b9ad8a3cde1762d", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7743, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "introduction", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.85, "split": "train"}], "usage": {"input": 5878, "output": 5130}, "cost_usd": 0.12611, "latency_s": 50.9, "n_calls": 1, "prompt_versions": {"condition_D_profiles_structured": "1.0"}, "generated": {"timestamp": "2026-11-03T23:29:36+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 11 | +{"ts": "2026-11-03T23:29:38+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "C_conventional_rag", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": null, "retrieved": [{"unit": "section_opening", "score": 0.9866, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7893, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.938, "split": "train"}, {"unit": "section_opening", "score": 0.7784, "doc_id": "jof_12520", "doi": "10.1111/jofi.12520", "title": "The Front Men of Wall Street: The Role of CDO Collateral Managers in the CDO Boom and Bust", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "a137c7ec184e2efa", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7773, "doc_id": "jof_12955", "doi": "10.1111/jofi.12955", "title": "The Employment Effects of Faster Payment: Evidence from the Federal Quickpay Reform", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "01e6ee298a8045e4", "role": "introduction", "genre": "empirical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7726, "doc_id": "jof_12856", "doi": "10.1111/jofi.12856", "title": "The Insurance Is the Lemon: Failing to Index Contracts", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "9c4ffadde6f75d24", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7423, "doc_id": "jof_12961", "doi": "10.1111/jofi.12961", "title": "Credit Rating Inflation and Firms’ Investments", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "36edd46ebfff3bfb", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.938, "split": "train"}], "usage": {"input": 4228, "output": 5297}, "cost_usd": 0.12285, "latency_s": 56.3, "n_calls": 1, "prompt_versions": {"condition_C_conventional_rag": "1.0"}, "generated": {"timestamp": "2026-11-03T23:29:38+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
| 12 | +{"ts": "2026-11-03T23:29:38+00:00", "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "section": "introduction", "mode": "write", "condition": "D_profiles_retrieval", "ablation": {}, "model": "claude-opus-5-5", "effort": "medium", "detected": {"genre": "empirical", "subfield": "financial_intermediation_banking", "scores": {"asset_pricing": 0, "corporate_finance": 1, "financial_intermediation_banking": 3, "household_finance": 0, "behavioral_finance": 0, "market_microstructure": 0, "financial_econometrics": 0, "macro_finance": 0, "real_estate_housing": 0, "ai_agents_methods": 0}}, "profile": "financial_intermediation_banking", "retrieved": [{"unit": "intro_move", "score": 1.0, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "introduction", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7929, "doc_id": "jof_12609", "doi": "10.1111/jofi.12609", "title": "Is Proprietary Trading Detrimental to Retail Investors?", "year": 2018, "page": 1, "section": NaN, "sha256": "d587694fb51b463b", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.82, "split": "train"}, {"unit": "document_summary", "score": 0.7878, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": NaN, "sha256": "ed95aa3a0bd82030", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7847, "doc_id": "jof_12604", "doi": "10.1111/jofi.12604", "title": "Bank Capital and Lending Relationships", "year": 2018, "page": 1, "section": NaN, "sha256": "860c930fc2afa26d", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7825, "doc_id": "jof_12726", "doi": "10.1111/jofi.12726", "title": "The Impact of Bank Credit on Labor Reallocation and Aggregate Industry Productivity", "year": 2018, "page": 3, "section": "introduction", "sha256": "3b9ad8a3cde1762d", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7743, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "introduction", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.85, "split": "train"}], "usage": {"input": 5878, "output": 5148}, "cost_usd": 0.12647, "latency_s": 55.5, "n_calls": 1, "prompt_versions": {"condition_D_profiles_structured": "1.0"}, "generated": {"timestamp": "2026-11-03T23:29:38+00:00", "code_version": "f8b9e5a-dirty", "host": {"platform": "macOS-27.0-arm64-arm-64bit", "python": "3.12.13", "machine": "arm64", "node": "MacBookPro-de-simon-pierre-2.local"}}, "manuscript_sha256": "d6fc15253f07abd82f1a689128a35f63c02074c72095159325ce5d5efb87b9d5"} | |
modified
docs/PROGRESS.md
+17 −0
@@ -35,3 +35,20 @@ Verified milestones only. Times are America/Toronto unless marked UTC. Code vers | ||
| 35 | 35 | ## Phase 3 — Ontology annotation (started 2026-11-03 17:55) |
| 36 | 36 | - Schema v1.0 (`src/jof250/rhetoric.py`), prompt `document_annotation` v1.0, model claude-opus-5-5 effort medium; the API grammar for structured outputs rejected the full schema ("compiled grammar too large") → JSON requested in the prompt + strict local JSON-schema validation; invalid annotations are re-run. |
| 37 | 37 | - Pilot on 2 documents: ≈ 7.9k input / 2.3k output tokens, 0.08–0.10 USD per document. |
| 38 | +- Full run (2026-11-03 17:55→18:30, 4 workers): 276/276 documents annotated; first pass 228 schema-valid, 48 invalid (extra `*_note` keys, mis-nested objects, 7 non-JSON). Deterministic, auditable **repair** (drop unknown keys / hoist mis-nested keys, recorded in `repairs`) fixed 38; an uncached retry with the validation errors echoed fixed the remaining 10 → **276/276 valid**. Cost 22.09 USD (≈ 0.08 USD/doc). | |
| 39 | +- Model–rule agreement (train, n = 221): section-role agreement median 1.00; roadmap LLM vs regex agree on most documents; see `numbers.tex` macros `\roleAgreementMedian`, `\roadmapAgree`, `\contribAgree`. | |
| 40 | + | |
| 41 | +## Phase 4 — Profiles (2026-11-03 18:35) ✅ | |
| 42 | +- `jof250 profiles build` on the train split (221 docs): 8 profiles (`profiles/*.yaml`): corpus_all 221, empirical_all 173, empirical_asset_pricing 58, household_behavioral 32, theoretical_finance 32, corporate_finance 28, intermediation/banking 21, financial_econometrics 8 (too small; falls back to empirical_all in the engine). Medians/IQR/bootstrap CIs; figures `fig_structure_distributions`, `fig_abstract_moves`, `fig_contribution_position`, `fig_moves_robustness`. | |
| 43 | +- Known measurement limit: table standard-error conventions are mostly "unclear" to the annotator because table notes are capped at 350 chars per table in the payload (rights policy) — reported as such. | |
| 44 | + | |
| 45 | +## Phase 5 — Retrieval + engine (2026-11-03 18:00–18:40) ✅ | |
| 46 | +- Index: 9 642 units over 276 docs (all annotated), MiniLM-L6 (384-d, local) + BM25; held-out split excluded from retrieval by default; ≤ 2 units per document; provenance on every hit. | |
| 47 | +- Engine demo (real): `experiments/outputs/demo/wp41_intro_upgrade_E.tex` (+ report, diff, audit; 2 calls, 0.37 USD, 108 s) and `wp29_referee.md` (0.19 USD). Manuscripts untouched. | |
| 48 | + | |
| 49 | +## Phase 6 — Claude Code integration (2026-11-03 18:05) ✅ | |
| 50 | +- Project scope: 10 commands, 7 agents, 1 skill (`.claude/`). User scope installed on explicit request (A-003); registration verified: the `jof250` skill and `/jof-*` commands appear in the running Claude Code session. | |
| 51 | +- Separate-project test: `/jof-audit` run headlessly in `/tmp/sample-paper` → `experiments/outputs/demo/separate_project_test.md`. | |
| 52 | + | |
| 53 | +## Phase 7 — Preregistration frozen (commit 87c73cd) and benchmark launched (2026-11-03 18:40) | |
| 54 | +- `experiments/preregistration.md`; fixtures from held-out docs jof_12439 (corporate/intermediation) and jof_12777 (credit spreads / asset pricing) + WP29 (out-of-domain); plan: 199 runs (A–E ×27, 4 ablations ×16), 27 judge sets (+25% second pass); estimated 46 USD. | |
added
experiments/outputs/demo/separate_project_jof_audit_report.md
+31 −0
@@ -0,0 +1,31 @@ | ||
| 1 | +# Manuscript audit — Bank Capital and Lending: A Sample Manuscript | |
| 2 | + | |
| 3 | +Generated 2026-11-03T23:29:58+00:00 (jof250 f8b9e5a-dirty). Body words: 62. | |
| 4 | + | |
| 5 | +## Sections | |
| 6 | + | |
| 7 | +- Introduction — role `introduction`, 24 words | |
| 8 | +- Data — role `data`, 12 words | |
| 9 | +- Results — role `results`, 23 words | |
| 10 | + | |
| 11 | +## Tables (1) and figures (0) | |
| 12 | + | |
| 13 | +- table 1 (tab:main): no notes block (JoF convention: notes state sample, units, standard errors) | |
| 14 | + | |
| 15 | +## Equations (0, 0 labelled) | |
| 16 | + | |
| 17 | +- no issues | |
| 18 | + | |
| 19 | +## Citations | |
| 20 | + | |
| 21 | +- \cite commands: 2; bib entries: 1 (0 with DOI) | |
| 22 | +- unknown keys: berger1995 | |
| 23 | +- DOI check: {'checked': 0} | |
| 24 | + | |
| 25 | +## Possibly unsupported claims (1) | |
| 26 | + | |
| 27 | +- [cause] Capital requirements cause banks to cut lending. | |
| 28 | + | |
| 29 | +## Overlap with the JoF corpus (8-gram shingles) | |
| 30 | + | |
| 31 | +- max share of manuscript shingles found in one corpus document: 0.0 [] | |
added
experiments/outputs/demo/separate_project_test.md
+5 −0
@@ -0,0 +1,5 @@ | ||
| 1 | +# Claude Code command test from a separate project (2026-11-03) | |
| 2 | + | |
| 3 | +- Sample project: `/tmp/sample-paper` (fresh git repo, `paper/main.tex` + `sections/intro.tex` + `references.bib`; a deliberately flawed 3-section manuscript: unknown citation key `berger1995`, unqualified causal sentence, table without notes). | |
| 4 | +- Command: `cd /tmp/sample-paper && claude -p "/jof-audit /tmp/sample-paper" --output-format text` (Claude Code 2.1.317, user-scope command installed by `jof250 install-claude-code --scope user`). | |
| 5 | +- Observed: the assistant ran `…/.venv/bin/jof250 audit --paper /tmp/sample-paper --output /tmp/jof-audit.md`, read the report and returned a severity-ordered summary with patch proposals (bib entry for the missing key flagged `CONFIRM`, rewording of the causal sentence, table caption + notes with explicit placeholders for the SE and clustering) — no file in the sample project was modified. Report copied to `separate_project_jof_audit_report.md`. | |
added
experiments/outputs/heldout_v1/runs.jsonl
+8 −0
@@ -0,0 +1,8 @@ | ||
| 1 | +{"ts": "2026-11-03T23:28:41+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "B_strong_prompt", "rep": 1, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "Organizational economics has long argued that the contracts parties can write shape both whether they trade and where the boundary of the firm lies. When some contracts are infeasible, transactions that would otherwise occur across firms may disappear or move inside the firm. Direct evidence on this link is scarce, because the set of feasible contracts is rarely changed in ways an econometrician can observe and exploit. This paper studies one such change.\n\nWe ask how a restriction on the terms of a common financial contract, trade credit, affects buyer–supplier relationships and the organizational form of the buyer. Trade credit is a natural place to look. Delayed payment is a standard feature of procurement contracts between large retailers and their suppliers, and these terms are often set by the buyer rather than the seller \\todo{CITATION NEEDED: Wilson and Summers (2003); Murfin and Njoroge (2015) on large buyers demanding long payment terms}. Payment terms can serve several purposes in a relationship:\n\n\\begin{itemize}\n\\item they finance the buyer;\n\\item they give the buyer time to verify the quality of delivered goods;\n\\item they offer a way to divide surplus between the parties.\n\\end{itemize}\n\nIf the maturity of trade credit is restricted, the parties lose one margin along which to structure the exchange. Whether they respond by renegotiating other terms, by ending the relationship, or by reorganizing production is an empirical question.\n\nOur setting is the Chilean discount retail industry. As in the United States and other markets, a small number of large retailers procure from suppliers across the firm size distribution and commonly demand long payment terms from small suppliers. In 2006, the two dominant chains together accounted for 63\\% of total industry revenues. That year, Chile's procompetition agency, the Fiscal\\'ia Nacional Econ\\'omica (FNE), investigated their business practices. In August 2006 it issued a report on the chains' treatment of small suppliers. At the time, the standard practice was to demand 90-day trade credit terms from small suppliers, which the agency viewed as a symptom of monopsony power. The agency announced it would deny regulatory approval for new acquisitions until contracting practices changed.\n\nWe study one of the two chains, which we call the Superstore. In December 2006 it signed an agreement with the agency (the Agreement), implemented beginning in January 2007. Under the Agreement, the Superstore could not sign trade credit contracts with maturity greater than 30 days with its small suppliers. Relative to the prevailing 90-day standard, this shortened the maximum maturity of these contracts by up to 60 days. Its competitor agreed to similar modifications only in July 2008.\n\nThe Agreement offers two features that are useful for identification. First, it applied to a single large buyer and changed one specific term of its contracts. Second, eligibility depended on a supplier size cutoff of UF 100,000 in total revenues, so suppliers just below and just above the cutoff faced different contracting constraints with the same buyer.\n\nWe combine this variation with administrative data on transactions between the Superstore and its suppliers. Our empirical strategy is a difference-in-differences design. It compares suppliers with 2006 revenues just below the cutoff (Treated, $Treated_i = 1$) with suppliers just above it (Control, $Treated_i = 0$), before and after the Agreement. We further exploit within-product variation, comparing affected and unaffected suppliers of the same product, so that changes in demand at the product level do not drive our estimates.\n\nTo keep the two groups comparable, our main sample includes suppliers with 2006 revenues between UF 25,000 and UF 600,000, roughly \\$1.0 million to \\$24 million. Treated firms have 2006 revenues between UF 25,000 and UF 100,000, roughly \\$1.0 million to \\$4.0 million. The sample contains 734 firms, 342 Treated and 392 Control. Because suppliers might have adjusted their size to fall under or avoid the Agreement, we assign treatment using predetermined 2006 revenues rather than contemporaneous revenues. We examine the parallel trends assumption directly.\n\nWe report three sets of results.\n\nFirst, the restriction reduced trade between the Superstore and affected suppliers. Using the within-product difference-in-differences strategy, we find that the Agreement reduces the likelihood that a Treated supplier trades with the Superstore by 11\\%. The inability to offer long trade credit terms therefore made some relationships that had existed under 90-day terms no longer viable for the Superstore. Small suppliers were the group the Agreement was intended to help.\n\nSecond, the Superstore changed its organizational form. It responded to the restriction by shifting procurement toward its own subsidiaries, internalizing transactions it had previously conducted with outside suppliers. It also reduced its overall purchases. A restriction on a financial contract between independent firms thus moved the boundary of the buyer and altered the scale of its procurement. This is the margin emphasized by theories in which contractual incompleteness or infeasibility makes integration relatively more attractive \\todo{CITATION NEEDED: theory of the firm / boundaries of the firm, e.g., transaction-cost and property-rights approaches}.\n\nThird, informal arrangements can partly substitute for the lost contractual margin. Relational contracts between the Superstore and its suppliers mitigate the effect of the restriction. This pattern is consistent with the view that repeated interaction can sustain exchange when formal contracts cannot \\todo{CITATION NEEDED: relational contracting literature}.\n\nThe paper contributes to three literatures.\n\nThe first is the empirical study of how the contracting environment shapes the boundary of the firm \\todo{CITATION NEEDED: empirical studies of vertical integration and contracting}. Most existing evidence relies on cross-sectional variation in contracting frictions or on broad institutional differences. We instead study a narrow, regulated change to one contractual term for a single buyer. We show that it affects both the extensive margin of external trade and the buyer's reliance on internal supply.\n\nThe second is the literature on trade credit \\todo{CITATION NEEDED: theories and evidence on trade credit, including financing, quality-guarantee, and price-discrimination motives}. Much of this work asks why firms extend trade credit and how its terms are set. We provide quasi-experimental evidence on what happens when the terms that parties choose are no longer allowed. Our results suggest that long maturities can be integral to sustaining the trading relationship itself, not only a transfer between the parties.\n\nThe third is the policy debate on regulating payment terms between large buyers and small suppliers \\todo{CITATION NEEDED: policy discussions or regulations on payment terms to small suppliers in other countries}. Such regulations aim to improve the position of small firms. Our evidence indicates that, at least in this setting, restricting payment terms also reduced the likelihood that small suppliers traded with the large buyer and led the buyer to internalize procurement. Our estimates speak to the effects of one regulation on one buyer. We do not attempt a full welfare evaluation, which would require evidence on suppliers' outside options and on the terms of the trades that continued.\n\nThe rest of the paper proceeds as follows. Section I describes the Chilean discount retail industry, the Agreement, the determination of the size cutoffs, the scope for manipulation and enforcement, our data, and the margins along which the parties could adjust. Section II presents the effects of the Agreement on trade with external suppliers, including graphical evidence and robustness tests. \\todo{ROADMAP: describe remaining sections, internalization to subsidiaries, overall purchases, relational contracts, conclusion, using the manuscript's actual section numbers and titles.}", "change_log": "- Structure: research question and motivation, then setting and regulation, then identification and sample, then three findings, then contributions to three literatures, then roadmap. Each paragraph covers one idea.\n- Numbers come only from the material provided: 63% (2006), 90/30/60 days, UF 100,000 cutoff, UF 25,000–600,000 (\\$1.0M–\\$24M), \\$4.0M, 734/342/392 firms, 11%, and the dates August 2006, December 2006, January 2007 and July 2008.\n- The 11% effect is stated as \"reduces the likelihood … by 11%,\" matching the abstract's wording. I did not convert it to percentage points.\n- No magnitudes are given for internalization, overall purchases, or the relational-contract mitigation, because none appear in the material.\n- The \"within-product\" design is described at the level of detail the abstract supports.\n- The mechanisms (financing, quality verification, surplus division) are presented as motivating possibilities, not as findings.\n- Written in first person plural, following the manuscript.\n- No BibTeX keys were provided, so every citation is a `\\todo` placeholder. This includes Wilson and Summers (2003) and Murfin and Njoroge (2015), which are named in Section I but have no keys.", "flags": "- Insert the estimated magnitudes for (i) the shift of procurement to subsidiaries, (ii) the reduction in overall purchases, and (iii) the mitigation through relational contracts. Also confirm how relational contracts are measured, since the text keeps this general.\n- Confirm whether the 11% is a relative effect or percentage points, and confirm the exact outcome definition.\n- Confirm the data source description. The text says \"administrative data on transactions\"; the material mentions IRS revenue categories but does not describe the transaction data.\n- All citation placeholders need BibTeX keys, including theory of the firm, empirical boundaries of the firm, trade credit theories, relational contracts, and payment-term regulation elsewhere.\n- The roadmap after Section II is a placeholder, because section titles beyond I and II were not provided.\n- The policy paragraph's claim that the Agreement was \"intended to help\" small suppliers is inferred from the FNE's stated concerns. Verify that this wording is acceptable.", "cost_usd": 0.09431, "latency_s": 41.9, "usage": {"input": 2903, "output": 4135}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1210, "preserved_rate": 0.48, "new_numbers": 2, "new_rate": 0.143, "n_author_year": 2, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 3, "max_overlap_share": 0.021, "todo_placeholders": 7}, "retrieved": [], "profile": null} | |
| 2 | +{"ts": "2026-11-03T23:28:42+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "A_baseline", "rep": 2, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "Financial contracts govern how firms divide surplus, and they also shape which transactions take place and where the boundaries of the firm lie. When a buyer and a supplier cannot write the contract they would otherwise choose, they may adjust the terms of trade, abandon the relationship, or move the transaction inside the firm. A large theoretical literature in organizational economics examines how the contracting environment governs the choice between markets and hierarchies \\todo{CITATION NEEDED: theory of the firm / transaction-cost and property-rights literature}. Causal evidence on how a specific restriction to feasible financial contracts changes buyer–supplier relationships and organizational form remains scarce, however. Such evidence is hard to obtain because contract terms, trading relationships, and integration decisions are usually chosen jointly and respond to the same unobserved shocks. This paper addresses that gap. We study a regulatory intervention that exogenously limited the maturity of the trade credit a large retailer could negotiate with a subset of its suppliers.\n\nTrade credit is a natural setting for this question. It is one of the most common forms of interfirm financing, and its terms are set within the trading relationship itself \\todo{CITATION NEEDED: importance and prevalence of trade credit}. In retail markets in particular, a few large buyers often procure from suppliers across the entire firm size distribution and demand long payment terms from small suppliers \\todo{CITATION NEEDED: Wilson and Summers (2003)}\\todo{CITATION NEEDED: Murfin and Njoroge (2015)}. Policymakers often read these long terms as evidence that large buyers exercise market power over small firms. Restricting payment terms is therefore a tempting policy tool. If, however, long trade credit terms are part of an efficient bundle of contract terms, restricting them may have unintended consequences for the suppliers the policy aims to protect.\n\nOur setting is the Chilean discount retail industry. It resembles the U.S. and other global retail markets in several respects. Market power is concentrated in a few large chains, store formats are similar, and retailers frequently demand long payment terms from small suppliers. The two dominant retailers in Chile accounted for 63\\% of total industry revenues in 2006. We focus on the procurement decisions of one of them, which we call the Superstore. Concerned that the large chains were exercising monopsonistic power, Chile's procompetition agency, the Fiscal\\'{i}a Nacional Econ\\'{o}mica (FNE), investigated their practices. In August 2006 it issued a report that prompted both chains to modify their contracts with small suppliers. At the time, standard practice was for the large retailers to demand trade credit terms of 90 days from small suppliers. The agency negotiated separately with each chain and conditioned regulatory approval of future acquisitions on changes to these practices. The Superstore agreed to modify its contracts in December 2006 and implemented the change beginning in January 2007. Under this agreement (the ``Agreement''), the Superstore could not sign trade credit contracts with a maturity longer than 30 days with its small suppliers. Relative to the prevailing 90-day standard, the Agreement shortened the maturity of these contracts by up to 60 days.\n\nThe Agreement provides a source of variation well suited to studying the consequences of restricting financial contracts. First, it applied only to suppliers classified as small. The classification relied on a revenue threshold of UF 100,000, which lets us compare otherwise similar suppliers on either side of the cutoff. Second, the Agreement targeted a specific contract term, maturity, rather than the overall level of trade. Any change in trading relationships therefore reflects how the parties responded to losing a contracting margin. Third, we can observe several distinct margins of adjustment. These include whether external suppliers continue to trade with the Superstore, whether the Superstore shifts procurement toward its own subsidiaries, and whether it changes the overall volume of its purchases.\n\nOur empirical strategy is a within-product difference-in-differences design. We compare the trading outcomes of suppliers with 2006 revenues just below the UF 100,000 cutoff, which were subject to the Agreement, with those of suppliers just above it, before and after the Agreement took effect. Firms may have adjusted their size to fall under or avoid the Agreement's jurisdiction. To guard against this, we assign treatment using predetermined 2006 revenues. To make treated and control suppliers as comparable as possible, our main sample is restricted to firms with 2006 revenues between UF 25,000 and UF 600,000, roughly \\$1.0 million to \\$24 million. Treated firms are those with 2006 revenues between UF 25,000 and UF 100,000, and control firms are those with revenues between UF 100,000 and UF 600,000. The main sample includes 734 suppliers, of which 342 are treated and 392 are control. Because the comparison is made within product, the estimates are not driven by differences in the mix of goods that small and larger suppliers sell. We present graphical evidence on the evolution of outcomes for the two groups, examine the parallel trends assumption directly, and discuss how the cutoffs were determined, the scope for manipulation, and how the Agreement was enforced.\n\nWe report three main sets of findings. First, the restriction on trade credit maturity substantially reduced trade between the Superstore and affected suppliers. Relative to control suppliers within the same product, treated suppliers became less likely to trade with the Superstore after the Agreement, a reduction of 11\\% in the likelihood of trade. A policy intended to protect small suppliers from a powerful buyer thus made it harder for those suppliers to keep selling to that buyer.\n\nSecond, the Superstore responded to the restriction by changing its organizational form. It moved procurement away from affected external suppliers and toward its own subsidiaries, internalizing transactions it had previously conducted at arm's length. It also reduced its overall purchases. When a particular financial contract is no longer available, the buyer does not simply accept the new terms. It reorganizes its supply chain, shifting some transactions inside the firm and forgoing others. These results provide direct evidence that the set of feasible financial contracts affects the boundary of the firm.\n\nThird, relational contracts mitigate the effects of the restriction. Relationships in which parties can sustain cooperation through repeated interaction offer a way to partially substitute for the long trade credit terms the Agreement prohibited. This finding is consistent with the view that informal, self-enforcing arrangements can complement or replace formal contract terms when the latter are constrained \\todo{CITATION NEEDED: relational contracts literature}.\n\nThese findings contribute to several literatures. First, we contribute to research in organizational economics on the determinants of firm boundaries \\todo{CITATION NEEDED: theory and empirics of vertical integration and firm boundaries}. Most existing evidence relates integration decisions to cross-sectional variation in contracting environments. We instead exploit a policy-induced change in a single contract term and trace its effect on the make-or-buy decision of a large firm. Second, we contribute to the literature on trade credit and interfirm financing \\todo{CITATION NEEDED: theories and evidence on why firms use trade credit}\\todo{CITATION NEEDED: Murfin and Njoroge (2015)}. Our results show that trade credit maturity is not merely a transfer between buyer and supplier. It is a contracting margin that helps sustain trade, and removing it changes both the extensive margin of trade and organizational form. Third, we add to the empirical literature on relational contracting \\todo{CITATION NEEDED: empirical studies of relational contracts}, documenting how relationships interact with constraints on formal contracts. Finally, our results bear on policy debates about regulating payment terms between large buyers and small suppliers \\todo{CITATION NEEDED: policy discussions or regulations on payment terms (e.g., late payment directives)}. Policies that restrict contract terms in the name of protecting small firms can reduce those firms' access to large buyers when the buyers can adjust along other margins, including integration.\n\nThe rest of the paper is organized as follows. Section~I describes the empirical setting: the Chilean discount retail industry, the Agreement and how its cutoffs were set, the potential for manipulation, enforcement, our data, and the margins along which the Superstore could adjust. Section~II studies trade between the Superstore and external suppliers, presenting graphical evidence, our main estimates, and robustness tests. \\todo{ROADMAP: describe remaining sections, e.g., internalization of procurement, overall purchases, relational contracts, and conclusion, with correct section numbers.}", "change_log": "- Structure: motivation → why trade credit → setting and Agreement → identification → three findings (trade, organizational form, relational contracts) → contributions → roadmap.\n- All numbers come from the supplied material: 63\\%, 90/30/60 days, Aug/Dec 2006, Jan 2007, UF thresholds, \\$1.0M–\\$24M, 734/342/392 firms, 11\\%.\n- I omitted the competitor's July 2008 agreement date because its role in the design is not described in the material.\n- No BibTeX keys were provided, so every citation is a `\\todo` placeholder. This includes Wilson and Summers (2003) and Murfin and Njoroge (2015), which are named in Section I.\n- I deliberately did not reuse the abstract's sentences or the opening fragment of the published introduction. The prose is newly written.\n- Findings on internalization, overall purchases, and relational contracts are stated qualitatively because the material gives no magnitudes for them.", "flags": "- This is a published article (JF 2017). This draft is a reconstruction exercise and must not be presented as the authors' original introduction.\n- \"11\\%\": confirm whether this is a relative change or percentage points, and whether it refers to the main specification.\n- Add magnitudes for internalization, the reduction in overall purchases, and the relational-contract mitigation once the corresponding tables are available.\n- The description of the relational-contracts mechanism (repeated interaction) is generic. Verify that it matches how relational contracts are measured in the paper.\n- The roadmap after Section II needs actual section numbers and titles.\n- All `\\todo{CITATION NEEDED}` placeholders must be replaced with real BibTeX keys.\n- Verify the policy-implications sentence; the material does not include a welfare analysis for suppliers.", "cost_usd": 0.09789, "latency_s": 42.5, "usage": {"input": 2717, "output": 4351}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1351, "preserved_rate": 0.44, "new_numbers": 2, "new_rate": 0.154, "n_author_year": 3, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 2, "max_overlap_share": 0.0166, "todo_placeholders": 11}, "retrieved": [], "profile": null} | |
| 3 | +{"ts": "2026-11-03T23:28:42+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "A_baseline", "rep": 1, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "\\medskip\n\nHow firms organize production depends on more than technology and demand. A long tradition in organizational economics holds that the contracts parties can feasibly write shape both whether independent firms trade with one another and where the boundary of the firm lies \\todo{CITATION NEEDED: foundational work on contractual incompleteness, transaction costs, and the boundaries of the firm}. Most of this literature has emphasized contracts over physical assets, quality, and specific investment. Financial terms embedded in commercial relationships have received less attention as a determinant of organizational form. Trade credit, the deferral of payment from a buyer to its supplier, is among the most common of these terms. It is ubiquitous in procurement relationships, and large buyers routinely obtain long payment terms from small suppliers \\todo{CITATION NEEDED: Wilson and Summers (2003) and Murfin and Njoroge (2015) on payment terms demanded by large buyers from small suppliers}. Yet whether restrictions on such financial terms change who trades with whom, and whether buyers respond by bringing production inside the firm, remains largely an open empirical question. Answering it is difficult because payment terms are chosen jointly with prices, quantities, and the decision to trade at all.\n\nIn this paper, we present evidence that restricting the set of feasible financial contracts affects buyer--supplier relationships and the organizational form of the firm. Our setting is the Chilean discount retail industry. Like its counterparts in the United States and other global markets, this industry is highly concentrated, and its dominant firms procure from suppliers across the entire firm size distribution. We study the procurement decisions of one of the two dominant retailers, which we refer to as the Superstore. Together, the two large chains accounted for 63\\% of total industry revenues in 2006. Their procurement choices are therefore likely to matter substantially for their suppliers, particularly small ones.\n\nOur identification comes from a regulatory intervention. In 2006, Chile's competition authority, the Fiscal\\'{i}a Nacional Econ\\'{o}mica (FNE), investigated the business practices of the two large retailers. The investigation was motivated by the view that these firms exercised monopsony power over smaller suppliers. At the time, the large retailers routinely demanded trade credit terms of 90 days from small suppliers, a practice the agency regarded as a symptom of that power. In August 2006, the agency issued a report setting out these concerns. It then negotiated separately with each chain and announced that it would withhold regulatory approval of new acquisitions until contracting practices were modified. The Superstore agreed to the modifications in December 2006 and began implementing them in January 2007. Its large competitor followed in July 2008. Under the resulting Agreement, the Superstore could no longer sign trade credit contracts with a maturity longer than 30 days with suppliers classified as small. Relative to the standard 90-day term, this constraint shortened contract maturity by up to 60 days for affected suppliers.\n\nTwo features make this setting useful for studying how financial contracting shapes trade and organizational form. First, the Agreement directly restricted a financial term of the contract and left the remaining terms of trade nominally unregulated. Second, eligibility depended on a revenue threshold, so firms just below and just above the cutoff faced different contracting constraints but were otherwise plausibly comparable. We exploit this threshold in a difference-in-differences design. We compare suppliers with 2006 revenues just below the UF 100,000 cutoff (Treated) with suppliers just above it (Control), before and after the Agreement took effect. To keep the two groups comparable, our main sample is restricted to firms with 2006 revenues between UF 25,000 and UF 600,000, roughly \\$1.0 million to \\$24 million. Treated firms are those with 2006 revenues between UF 25,000 and UF 100,000 (about \\$1.0 million to \\$4.0 million). Control firms are those with 2006 revenues between UF 100,000 and UF 600,000 (about \\$4.0 million to \\$24 million). The main sample comprises 734 suppliers, of which 342 are Treated and 392 are Control. Because firms might have adjusted their revenues after 2006 to avoid or fall under the Agreement's jurisdiction, we assign treatment on the basis of predetermined 2006 revenues. We also examine the parallel trends assumption directly. Our preferred specifications rely on within-product comparisons, which net out shocks common to all suppliers of a given product.\n\nWe obtain three main findings. First, the restriction on trade credit maturity reduced trade between the Superstore and affected suppliers. Within-product difference-in-differences estimates indicate that the Agreement reduced the likelihood of trade by 11\\%. This result shows that the inability to offer long payment terms is not simply absorbed through other margins of the contract, such as prices. Instead, for a meaningful share of suppliers, the restriction made the trading relationship unprofitable to maintain. \\todo{AUTHOR: insert supporting evidence on the robustness of this estimate (Section II.C) if desired}\n\nSecond, the Superstore responded by changing its organizational form. It internalized procurement, shifting purchases toward its own subsidiaries, and it reduced its overall purchases. The first margin speaks directly to the boundary of the firm. When the contracting space with external small suppliers was narrowed, the retailer substituted toward integrated sources of supply. In this sense, the feasibility of particular financial contracts with outside firms helps determine whether a transaction takes place in the market or inside the firm. The reduction in overall purchases indicates that this substitution was incomplete.\n\nThird, relational contracts mitigate the effect of the restriction. Suppliers in stronger informal relationships with the Superstore were better able to sustain trade despite the inability to sign long-maturity trade credit contracts. This finding suggests that informal, self-enforcing arrangements can partly substitute for formal contract terms that regulation renders infeasible \\todo{CITATION NEEDED: theory of relational contracts and their interaction with formal contracts}. \\todo{AUTHOR: confirm how relationship strength is measured (e.g., pre-period trading history) and describe it here}\n\nThese results contribute to several literatures. First, we add to the empirical literature on the boundaries of the firm \\todo{CITATION NEEDED: empirical studies of vertical integration and make-or-buy decisions}. We provide quasi-experimental evidence that a constraint on financial contracting, rather than on asset ownership or specific investment, shifts activity from the market into the firm. Second, we contribute to the literature on trade credit \\todo{CITATION NEEDED: theories and evidence on the determinants of trade credit}. Much of this work studies why firms extend or use trade credit. We instead study what happens to trading relationships when the maturity of trade credit is exogenously constrained, and we show that the term matters for whether trade occurs at all. Third, we speak to work on relational contracting \\todo{CITATION NEEDED: empirical evidence on relational contracts in buyer--supplier relationships}. We show that informal relationships buffer the effects of restrictions on formal contract terms. Finally, our results bear on policy debates over the regulation of payment terms between large buyers and small suppliers \\todo{CITATION NEEDED: policy discussions or legislation on supplier payment terms}. Rules intended to protect small suppliers from the market power of large buyers may have unintended consequences. In our setting, the restriction reduced the likelihood that protected suppliers traded with the regulated buyer, and it led the buyer to shift procurement toward its own subsidiaries.\n\nThe remainder of the paper is organized as follows. Section I describes the empirical setting. It covers the Chilean discount retail industry, the Agreement and the determination of its cutoffs, concerns about manipulation of the threshold and enforcement, our data, and the margins along which the parties could adjust. Section II studies trade between the Superstore and external suppliers and presents graphical evidence, our main estimates, and robustness checks. Subsequent sections examine the internalization of procurement and the reduction in overall purchases, analyze the role of relational contracts, and conclude. \\todo{AUTHOR: insert section numbers for the remaining sections}", "change_log": "- Structure: motivation (organizational economics and financial contracting) → setting and institutional detail → identification and sample → three findings mirroring the abstract → contributions → roadmap.\n- All numbers come from the provided material: 63% (2006), 90/30/60 days, August 2006, December 2006, January 2007, July 2008, UF 25,000/100,000/600,000, \\$1.0M/\\$4.0M/\\$24M, 734/342/392, 11%.\n- No BibTeX keys were supplied, so every citation is a `\\todo{CITATION NEEDED}` placeholder. Wilson and Summers (2003) and Murfin and Njoroge (2015) are named only because the manuscript cites them.\n- No magnitudes are given for internalization, reduced purchases, or the relational-contracts result because none appear in the material.\n- The roadmap names Sections I–II only. Later sections are described generically.\n- The opening sentence was deliberately worded differently from the visible fragment of the original introduction.", "flags": "- Supply BibTeX keys for every `\\todo{CITATION NEEDED}`.\n- \"Within-product\" comes from the abstract, but Section II describes a firm-level threshold comparison. Please confirm the preferred specification and whether the 11% estimate is within-product.\n- Please verify the interpretive claims: (a) that the restriction was not fully absorbed through prices or other terms, (b) that substitution toward subsidiaries was incomplete, and (c) that stronger relationships sustained trade. These are inferred from the abstract and not shown in the provided material.\n- Please describe the measure of relational contracts, since it is not in the material.\n- Please fill in section numbers for the internalization, relational-contracts, and conclusion sections.\n- The policy implication is phrased cautiously. Please confirm that it matches the paper's stance.", "cost_usd": 0.09907, "latency_s": 43.0, "usage": {"input": 2717, "output": 4410}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1281, "preserved_rate": 0.48, "new_numbers": 2, "new_rate": 0.143, "n_author_year": 2, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 3, "max_overlap_share": 0.0198, "todo_placeholders": 10}, "retrieved": [], "profile": null} | |
| 4 | +{"ts": "2026-11-03T23:28:45+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "B_strong_prompt", "rep": 2, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "How do restrictions on the financial contracts that firms can sign shape whom they trade with and which activities they keep inside the firm? Organizational economics has long studied how contracting frictions determine the boundary of the firm \\todo{CITATION NEEDED: foundational work on the boundary of the firm and incomplete contracts}. Corporate finance has documented that trade credit is a large and pervasive source of financing in buyer-supplier relationships \\todo{CITATION NEEDED: core empirical work on trade credit}. Evidence that links the two is scarce, because the menu of feasible financial contracts is rarely changed exogenously for some trading partners and not for others. In this paper, we use a regulation that did exactly this to study how a constraint on the maturity of trade credit affects buyer-supplier relationships and the organizational form of the buyer.\n\nThe question matters for at least two reasons. First, the terms of trade credit are themselves frequently the target of policy. Large retailers often demand long payment terms from small suppliers \\todo{CITATION NEEDED: Wilson and Summers (2003); Murfin and Njoroge (2015)}, and small firms frequently complain that large buyers use their bargaining position to extract surplus. Regulators who respond by capping payment terms implicitly assume that suppliers will keep their trading relationships on better terms. Whether this assumption holds depends on how the buyer adjusts along margins the regulation does not cover. Second, if a buyer reorganizes its procurement in response to a restriction on its financial contracts, then the set of feasible financial contracts is a determinant of organizational form, and not only a consequence of it.\n\nOur setting is the Chilean discount retail industry, which shares several features with the U.S. and other markets. Market power is concentrated in a few large firms, those firms procure from suppliers across the size distribution, and the retailers often demand long payment terms from small suppliers. We study the procurement decisions of one of the two dominant chains, which we call the Superstore. Together, the two chains accounted for 63\\% of industry revenues in 2006, so their procurement decisions are likely to matter for their suppliers, particularly small ones.\n\nIn August 2006, after investigating the business practices of the two chains, the Chilean competition agency (Fiscal\\'{i}a Nacional Econ\\'{o}mica, or FNE) issued a report that expressed concern about monopsony power and prompted both chains to modify their contracts with small suppliers. At the time, the standard practice was to demand trade credit terms of 90 days from small suppliers. The agency negotiated separately with each chain and announced that it would withhold approval of new acquisitions until changes were made. The Superstore agreed in December 2006 and implemented the change beginning in January 2007; its competitor agreed in July 2008. Under the Agreement, the Superstore could not sign trade credit contracts with a maturity longer than 30 days with its small suppliers. Relative to the standard 90-day contract, this shortened maturity by up to 60 days. Smallness was determined by a set of criteria that includes a threshold of UF 100,000 in annual revenues.\n\nThe Agreement provides a source of variation in the feasible contract set that is well suited to our question. It restricted a single contractual term, the maturity of trade credit, for one buyer. It applied only to suppliers on one side of a size cutoff. Our empirical strategy compares suppliers with 2006 revenues just below and just above the UF 100,000 cutoff, before and after the Agreement. Because suppliers may have adjusted their revenues after 2006 to avoid or to fall under the Agreement, we assign treatment using predetermined 2006 revenues. Our main sample consists of suppliers with 2006 revenues between UF 25,000 and UF 600,000 (roughly \\$1.0 million to \\$24 million). Treated firms are those with revenues between UF 25,000 and UF 100,000 (\\$1.0 million to \\$4.0 million); Control firms are those with revenues between UF 100,000 and UF 600,000 (\\$4.0 million to \\$24 million). The sample includes 734 firms, of which 342 are Treated and 392 are Control. We estimate the effect of the Agreement with a within-product difference-in-differences strategy, which compares Treated and Control suppliers selling the same products. Identification requires that, absent the Agreement, outcomes for the two groups would have evolved in parallel. We present graphical evidence on this assumption, and we discuss the determination of the cutoffs, contemporaneous legislation, manipulation, and enforcement in detail.\n\nWe report three main findings. First, the restriction reduces the likelihood that a Treated supplier trades with the Superstore by 11\\%. A regulation intended to improve the terms of trade for small suppliers therefore reduced the probability that they trade with the largest buyers at all. This finding suggests that the long maturities in place before the Agreement were not purely a transfer from suppliers to the retailer. Instead, they appear to have been part of the terms on which the relationship was sustained.\n\nSecond, the Superstore adjusted its organizational form. It responded to the Agreement by internalizing procurement to its own subsidiaries and by reducing its overall purchases. When the contract it could sign with an external supplier became more restricted, the buyer shifted activity inside the firm. This result connects the feasible set of financial contracts directly to the boundary of the firm.\n\nThird, we find that relational contracts can mitigate the inability to extend long trade credit terms. The effect of the restriction is weaker in settings where an informal, ongoing relationship can substitute for the formal contractual term that the Agreement ruled out. This heterogeneity is consistent with the view that formal and relational contracting are partial substitutes in sustaining trade.\n\nOur paper relates to three strands of research. The first is the literature on the boundary of the firm, which argues that integration decisions respond to the contracts that can be written between independent parties \\todo{CITATION NEEDED: theory and evidence on vertical integration and contractual incompleteness}. Most empirical work in this area relies on cross-sectional variation in contracting environments. We instead exploit a regulatory change to the feasible contract set that applies to some suppliers of one buyer. This lets us trace the buyer's integration response to a specific contractual restriction.\n\nThe second strand studies the determinants and role of trade credit \\todo{CITATION NEEDED: theories and evidence on why trade credit is used; Murfin and Njoroge (2015) on large buyers and small suppliers}. This work typically takes trade credit terms as an equilibrium outcome. We study instead what happens when one term is constrained by regulation. Our results indicate that trade credit maturity is an integral component of the buyer-supplier relationship, and that constraining it affects the extensive margin of trade.\n\nThe third strand concerns relational contracts and their interaction with formal contracts \\todo{CITATION NEEDED: theory and evidence on relational contracts}. Our evidence that relational contracts mitigate the effect of a restriction on formal contract terms provides a field setting in which the two can be compared.\n\nMore broadly, our results bear on policies that regulate payment terms between large buyers and small suppliers. We do not evaluate the welfare consequences of the Agreement. However, our findings indicate that such policies can reduce trade with the firms they are meant to protect when the buyer has alternatives, including its own subsidiaries.\n\nThe remainder of the paper is organized as follows. Section~I describes the Chilean discount retail industry, the Agreement, the data, and the margins along which the Superstore could adjust. Section~II studies trade with external firms and presents graphical evidence, the main results, and robustness tests. The subsequent sections study the internalization of procurement and the role of relational contracts, and the final section concludes.", "change_log": "- **Structure:**\n - The introduction opens with the research question.\n - It then motivates the question (policy relevance and boundary of the firm), describes the setting and the regulation, and gives the identification strategy and sample.\n - Next come the three findings, one per paragraph, matching the abstract.\n - It closes with a short literature positioning in three strands, a policy implication without welfare claims, and a roadmap.\n- **Numbers:** All numbers are taken only from the supplied material: 63%, 90/30/60 days, August 2006, December 2006, January 2007, July 2008, UF 25,000/100,000/600,000, \\$1.0m/\\$4.0m/\\$24m, 734/342/392, and 11%.\n- **Magnitudes not reported:** No magnitudes are given for internalization, overall purchases, or relational contracts, because none appear in the supplied material.\n- **Citations:** No BibTeX keys were provided. Every reference is therefore a `\\todo{CITATION NEEDED}` placeholder, including Wilson and Summers (2003) and Murfin and Njoroge (2015), which the manuscript cites.\n- **Wording:** I avoided reproducing the opening sentence fragment of the published introduction that appears at the end of the abstract.", "flags": "- **Citations:** All citation placeholders must be replaced with actual BibTeX keys. The literature strands I chose are inferred from the paper's topic and need the author's confirmation.\n- **\"Within-product\" design:** I described this as \"compares Treated and Control suppliers selling the same products.\" Please verify that this matches the actual specification (e.g., the fixed-effects structure).\n- **Relational contracts:**\n - The sentence \"The effect of the restriction is weaker in settings where an informal, ongoing relationship can substitute…\" interprets the abstract's claim. The supplied material does not show how relational contracts are measured.\n - Please add the measure and any magnitude.\n- **Internalization and purchases:** Magnitudes for internalization to subsidiaries and for the reduction in overall purchases are missing. Consider adding them from the relevant tables.\n- **Smallness criteria:** The criteria beyond the UF 100,000 revenue threshold are omitted in the supplied excerpt. Please confirm the description \"a set of criteria that includes a threshold.\"\n- **Roadmap:** Titles and numbering of sections after Section II were not provided. The roadmap describes them generically.\n- **Interpretive sentences:** Please confirm you are comfortable with these, which go slightly beyond the reported results:\n - \"long maturities…were not purely a transfer\"\n - \"partial substitutes\"\n- **Expansion of \"UF\":** I kept \"UF\" without expanding it. If you want to define it (Unidad de Fomento), verify the wording.", "cost_usd": 0.10599, "latency_s": 45.9, "usage": {"input": 2903, "output": 4719}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1267, "preserved_rate": 0.48, "new_numbers": 2, "new_rate": 0.143, "n_author_year": 3, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 3, "max_overlap_share": 0.0341, "todo_placeholders": 6}, "retrieved": [], "profile": null} | |
| 5 | +{"ts": "2026-11-03T23:29:36+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "C_conventional_rag", "rep": 2, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "\\textsc{A rich literature in organizational economics} studies how the institutional environment shapes the boundary of the firm and the way in which trading partners organize their exchange \\todo{CITATION NEEDED: foundational work on the theory of the firm and make-or-buy decisions, e.g., transaction-cost and property-rights approaches}. One element of that environment is the set of financial contracts that buyers and suppliers can write. When a buyer purchases goods on credit, the contract governs the physical exchange and also a financing arrangement between the two firms. If regulation removes some terms from the set of feasible contracts, firms may be unable to trade on terms that both prefer. In that case, they may stop trading, change the terms along other margins, or reorganize the transaction altogether, including by bringing it inside the firm.\n\nThis paper asks whether restrictions on the set of feasible financial contracts affect buyer–supplier relationships and the organizational form of the firm. We study trade credit, the financing that suppliers provide to their customers by allowing deferred payment for delivered goods \\todo{CITATION NEEDED: evidence on the prevalence and role of trade credit in firm financing}. Trade credit is a natural setting for this question because payment terms are an explicit, contractible feature of a procurement relationship. Large buyers also frequently set them in transactions with smaller suppliers \\todo{CITATION NEEDED: Wilson and Summers (2003); Murfin and Njoroge (2015), on large retailers demanding long payment terms from small suppliers}.\n\nAnswering this question empirically is difficult for two reasons. First, payment terms are chosen jointly with prices, quantities, and the decision to trade, so observed variation in maturity is unlikely to be exogenous to the relationship. Second, the alternatives to an arm's-length purchase, such as sourcing from a vertically integrated affiliate, are rarely observed in the same data as the external transactions they would replace. We address both problems using a regulation that restricted the maturity of the trade credit contracts that one large retailer could sign with a subset of its suppliers. We combine this regulation with detailed data on the retailer's procurement.\n\nOur setting is the Chilean discount retail industry. As in the United States and other markets, market power in this industry is concentrated in a few large firms. These firms buy from suppliers across the size distribution and routinely demand long payment terms from small suppliers. In 2006, the two dominant retailers accounted for 63\\% of total industry revenues. We focus on the procurement decisions of one of these two firms, which we call the Superstore. Because of its size, changes in its procurement decisions are likely to matter substantially for its suppliers, especially small ones.\n\nThe regulation arose from concerns about buyer power. In 2006, the Chilean government's procompetition agency, the Fiscal\\'ia Nacional Econ\\'omica (FNE), investigated the business practices of the two large retailers. In August of that year, it issued a report questioning their treatment of small suppliers. At the time, standard practice was for the two retailers to demand trade credit terms of 90 days from small suppliers, which the agency viewed as a symptom of monopsony power. The agency negotiated separately with each retailer and announced that it would deny regulatory approval for any new acquisitions until the retailers modified their contracting practices. The Superstore agreed to modifications in December 2006 and implemented them beginning in January 2007; its large competitor followed in July 2008. Under this Agreement, the Superstore could no longer sign trade credit contracts with a maturity greater than 30 days with small suppliers. Relative to the prevailing 90-day standard, this shortened contract maturity by up to 60 days.\n\nThe Agreement classified suppliers as small according to a revenue cutoff, with the key threshold at UF 100,000 in total annual revenues. This rule creates variation in the feasible contract set across otherwise similar suppliers that sell to the same buyer. Our empirical strategy compares suppliers with 2006 revenues just below and just above the cutoff, before and after the Agreement took effect. We use a within-product difference-in-differences design. To keep the two groups comparable, we restrict our main sample to firms with 2006 revenues between UF 25,000 and UF 600,000 (roughly \\$1.0 million to \\$24 million). Treated firms have 2006 revenues between UF 25,000 and UF 100,000 (\\$1.0 million to \\$4.0 million). Control firms have 2006 revenues between UF 100,000 and UF 600,000 (\\$4.0 million to \\$24 million). The main sample contains 734 suppliers, of which 342 are Treated and 392 are Control.\n\nTwo features of the setting help with identification. First, suppliers could have changed their revenues after 2006 to fall under, or escape, the Agreement's jurisdiction. We therefore assign treatment using predetermined 2006 revenues rather than contemporaneous size. Second, the identifying assumption is that, absent the Agreement, outcomes for Treated and Control suppliers would have evolved in parallel. We present graphical evidence on pre-Agreement trends and a set of robustness checks. We also discuss how the cutoffs were determined, contemporaneous legislation, the potential for manipulation, and enforcement.\n\nWe obtain three main findings. First, the restriction on trade credit maturity disrupted trade with external suppliers: it reduced the likelihood that a Treated supplier traded with the Superstore by 11\\%. This result shows that the inability to offer long payment terms was not fully undone through adjustments along other dimensions of the contract. At least some relationships that were viable under 90-day terms ceased to be viable under a 30-day ceiling.\n\nSecond, the Superstore responded by changing its organizational form. It shifted procurement toward its own subsidiaries, internalizing transactions that had previously been conducted with external suppliers. It also reduced its overall purchases. The restriction therefore did more than reallocate purchases among outside suppliers. It changed the boundary of the firm, and the internal substitution was not large enough to offset the decline in external procurement.\n\nThird, relational contracts mitigated the effect of the restriction. Informal arrangements sustained by repeated interaction partly substituted for the formal contract terms that the Agreement ruled out, which reduced the disruption to trade.\n\nThese findings contribute to several literatures. First, we contribute to work on the determinants of the boundary of the firm \\todo{CITATION NEEDED: theoretical and empirical studies of vertical integration and make-or-buy decisions}. Much of the empirical work in this area relates integration to characteristics of the product, the technology, or the contracting environment that vary across industries or over long horizons. We provide evidence from a policy change that directly altered the set of feasible financial contracts between one buyer and some of its suppliers. We show that such a change shifts the margin between external procurement and internal sourcing. Our evidence identifies financial contracting as one determinant of organizational form.\n\nSecond, we contribute to the literature on trade credit \\todo{CITATION NEEDED: theories and evidence on why firms extend and use trade credit}. Prior work has documented that trade credit is pervasive and has offered explanations for why suppliers finance their customers. We study a setting in which the use of long-maturity trade credit is restricted exogenously for some suppliers of a given buyer. This allows us to examine the real consequences of losing that contractual margin, namely whether trade takes place at all and how the buyer reorganizes its procurement. The evidence suggests that long payment terms are not merely a transfer from small suppliers to a powerful buyer, as the regulator presumed. They are a contract feature whose removal reduced the likelihood of trade with affected suppliers.\n\nThird, we relate to work on relational contracting \\todo{CITATION NEEDED: theory and evidence on relational contracts and informal enforcement between firms}. This literature emphasizes that repeated interaction can sustain cooperation when formal contracts are incomplete or constrained. Our finding that relational contracts mitigate the effects of the maturity restriction is consistent with this view. It shows that informal arrangements can partly substitute for formal contract terms that regulation rules out.\n\nFinally, our results bear on policies that regulate the terms of trade between large buyers and small suppliers \\todo{CITATION NEEDED: discussion or evidence on policies restricting payment terms to small suppliers}. Such policies are often motivated by the concern that dominant buyers use payment terms to extract surplus from smaller trading partners. Our evidence indicates that restricting payment terms can have unintended consequences for the firms the policy aims to protect: the likelihood that they trade with the regulated buyer declines, and the buyer shifts purchases toward its own subsidiaries. We do not attempt a full welfare evaluation of the Agreement, but these margins of adjustment matter for any such assessment.\n\nThe remainder of the paper is organized as follows. Section~I describes the empirical setting, including the Chilean discount retail industry, the Agreement and its enforcement, the data, and the margins along which the Superstore and its suppliers could adjust. Section~II presents our evidence on trade with external suppliers, including graphical evidence, the main estimates, and robustness tests. Subsequent sections examine the internalization of procurement to the Superstore's subsidiaries and overall purchases, and the role of relational contracts \\todo{Insert section numbers and titles for the remaining sections}. The final section concludes.", "change_log": "- Opening paragraph builds on the abstract's own framing (organizational economics and the institutional environment) and states the research question in the second paragraph.\n- Identification challenges are stated before the setting so the regulation reads as the solution to a specific problem.\n- All facts about the setting are taken from Sections I and II: the 63\\% share, the August 2006 FNE report, 90-day terms, the December 2006 agreement, January 2007 implementation, the July 2008 competitor agreement, the 30-day cap, the up-to-60-day shortening, the UF cutoffs and dollar equivalents, and the 734/342/392 sample counts.\n- Findings are reported only at the level of detail in the abstract. Only the 11\\% effect is quantified because no other magnitudes were provided.\n- The contribution is organized into four strands (boundary of the firm, trade credit, relational contracts, policy) rather than a list of papers. All references are placeholders because no BibTeX keys were supplied.\n- Interpretive statements are hedged and limited to what the stated findings imply. Examples are the claim that the restriction \"was not fully undone along other dimensions\" and the statement that no welfare evaluation is attempted.\n- The voice is first person plural, following the manuscript.", "flags": "- No BibTeX keys were provided, so every citation is a `\\todo{CITATION NEEDED}` placeholder. This includes Wilson and Summers (2003) and Murfin and Njoroge (2015), which the manuscript text cites.\n- Please verify whether the \"11\\%\" decline is relative to the baseline probability of trade or measured in percentage points. The text follows the abstract's wording.\n- No magnitudes were available for the internalization to subsidiaries, the reduction in overall purchases, or the mitigating effect of relational contracts. If you want these quantified, add the relevant table values.\n- The measure of relational contracts (e.g., relationship length or history of trade) is not described in the provided material. The introduction should name it once verified.\n- The \"within-product\" dimension of the difference-in-differences is taken from the abstract. Please confirm the unit of observation (supplier $\\times$ product $\\times$ period?) so it can be described precisely.\n- The roadmap beyond Sections I–II is a placeholder. Please supply the remaining section numbers and titles.\n- The statement that the internal substitution did not offset the decline in external procurement is inferred from the abstract's \"reducing overall purchases.\" Please confirm.\n- The policy paragraph's statement about consequences for the firms the policy aims to protect is an interpretation of the 11\\% result. Please confirm it matches the paper's stance.", "cost_usd": 0.11797, "latency_s": 53.9, "usage": {"input": 4228, "output": 5053}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1508, "preserved_rate": 0.48, "new_numbers": 2, "new_rate": 0.143, "n_author_year": 2, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 3, "max_overlap_share": 0.0427, "todo_placeholders": 8}, "retrieved": [{"unit": "section_opening", "score": 0.9866, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7893, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.938, "split": "train"}, {"unit": "section_opening", "score": 0.7784, "doc_id": "jof_12520", "doi": "10.1111/jofi.12520", "title": "The Front Men of Wall Street: The Role of CDO Collateral Managers in the CDO Boom and Bust", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "a137c7ec184e2efa", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7773, "doc_id": "jof_12955", "doi": "10.1111/jofi.12955", "title": "The Employment Effects of Faster Payment: Evidence from the Federal Quickpay Reform", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "01e6ee298a8045e4", "role": "introduction", "genre": "empirical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7726, "doc_id": "jof_12856", "doi": "10.1111/jofi.12856", "title": "The Insurance Is the Lemon: Failing to Index Contracts", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "9c4ffadde6f75d24", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7423, "doc_id": "jof_12961", "doi": "10.1111/jofi.12961", "title": "Credit Rating Inflation and Firms’ Investments", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "36edd46ebfff3bfb", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.938, "split": "train"}], "profile": null} | |
| 6 | +{"ts": "2026-11-03T23:29:37+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "D_profiles_retrieval", "rep": 2, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "\\textsc{A rich literature in organizational economics} studies how the institutional environment shapes the way firms organize production and the boundaries that separate them from their trading partners \\todo{CITATION NEEDED: organizational economics / theory of the firm literature on institutions and firm boundaries}. A central idea in this literature is that the contracts available to two parties determine whether a transaction is best carried out across a market interface or inside a single firm. Financial contracts are an important part of the terms of any buyer--supplier relationship. Suppliers routinely finance their customers by delivering goods before payment is due, and the maturity of this trade credit is a negotiated term like price or quantity \\todo{CITATION NEEDED: trade credit as a financing and contracting device between firms}. Despite this, we know relatively little about whether restrictions on the set of feasible financial contracts change which firms trade with one another, and whether such restrictions push activity across the boundary of the firm. In this paper, we present evidence that they do.\n\nAnswering this question empirically is difficult. Contract terms are chosen jointly with the decision to trade and with the decision to make or buy. The maturity of trade credit in a given relationship therefore reflects the bargaining power, financial condition, and product characteristics of the two parties. A correlation between payment terms and the existence, intensity, or organizational form of a trading relationship cannot be interpreted as the effect of contracting constraints. What is needed is a source of variation in the feasible set of financial contracts that is unrelated to the underlying gains from trade, together with data that follow trading relationships, and the alternatives available to the buyer, before and after the constraint is imposed.\n\nWe study a regulation that provides such variation in the Chilean discount retail industry. The industry shares many features with the U.S. and other global markets. Market power is concentrated among a few large retailers, these retailers procure from suppliers across the firm-size distribution, and they frequently demand long payment terms from their often small suppliers \\todo{CITATION NEEDED: Wilson and Summers (2003); Murfin and Njoroge (2015)---add BibTeX keys}. The two dominant chains accounted for 63\\% of total industry revenues in 2006. Because many observers viewed the large retailers as exercising monopsony power over their smaller suppliers, the Chilean competition authority (Fiscal\\'ia Nacional Econ\\'omica, or FNE) investigated their business practices in 2006. At the time, it was standard practice for both chains to demand 90-day trade credit terms from small suppliers. The agency regarded this practice as a symptom of market power. The FNE negotiated separately with each retailer and announced that it would withhold regulatory approval of new acquisitions until the chains modified their contracting practices. The retailer we study, which we call the Superstore, agreed in December 2006 and began implementing the change in January 2007. Under this Agreement, the Superstore could no longer sign trade credit contracts with a maturity longer than 30 days with its small suppliers. Relative to the prevailing 90-day standard, this rule shortened the permissible maturity of these contracts by up to 60 days.\n\nThe Agreement defined small suppliers by a revenue cutoff of UF 100,000, which gives us a natural comparison between suppliers just below and just above the threshold before and after the Agreement took effect. Our main sample consists of suppliers with 2006 revenues between UF 25,000 and UF 600,000 (roughly \\$1.0 million to \\$24 million). We classify as treated the firms with 2006 revenues between UF 25,000 and UF 100,000 (\\$1.0 million to \\$4.0 million) and as controls the firms with revenues between UF 100,000 and UF 600,000 (\\$4.0 million to \\$24 million). The sample comprises 734 suppliers, 342 treated and 392 control. Suppliers could have adjusted their revenues to move into or out of the Agreement's jurisdiction after it was announced. For this reason, we assign treatment using predetermined 2006 revenues rather than contemporaneous size. Our difference-in-differences design compares treated and control suppliers within the same product. Any shock to the Superstore's demand for a given product, whether from consumer tastes, seasonality, or the retailer's merchandising strategy, is therefore absorbed and does not confound the comparison. Identification requires that, absent the Agreement, the outcomes of treated and control suppliers of the same product would have evolved in parallel. We present graphical evidence on pre-period trends and a set of robustness exercises to support this assumption. We also discuss how the cutoffs were set, how the Agreement interacted with contemporaneous legislation, the scope for manipulation, and how the Agreement was enforced.\n\nOur first result is that the restriction on trade credit maturity reduced trade between the Superstore and affected suppliers. Using the within-product difference-in-differences strategy, we find that the Agreement reduced the likelihood that a treated supplier traded with the Superstore by 11\\%. This finding indicates that, at least for this buyer, long trade credit terms were not merely a transfer extracted from weak suppliers. They were part of the terms that made some trading relationships viable. When the parties could no longer agree on long maturities, a meaningful share of relationships with small suppliers did not survive. The result is consistent with the view that restricting one dimension of a contract does not simply reallocate surplus along that dimension. When the remaining contract terms cannot fully offset the restriction, some trades no longer take place at all.\n\nWe next examine how the Superstore reorganized its procurement. If contracting with small external suppliers became more costly, the retailer could substitute toward sources of supply for which the restriction does not bind. We find that the Superstore responded by internalizing procurement to its own subsidiaries. Restricting the feasible set of financial contracts with outside firms thus shifted activity across the boundary of the firm, which is a direct link between financial contracting and organizational form. We also find that the Superstore reduced its overall purchases, so internal supply and trade with unaffected suppliers did not fully replace the lost trade with treated suppliers. Taken together, these margins suggest that the restriction imposed real costs on the retailer as well as on the suppliers it was meant to protect.\n\nFinally, we ask whether informal arrangements can soften the effects of formal contracting constraints. Relational contracts, which are sustained by the value of future interaction rather than by enforceable terms, can in principle substitute for explicit contractual flexibility \\todo{CITATION NEEDED: relational contracting theory}. Our evidence suggests that relational contracts can mitigate the inability to extend long trade credit terms: the reduction in trade is concentrated among relationships in which such informal arrangements are less likely to be available. \\todo{VERIFY: confirm the exact proxy for relational contracts and the direction/locus of heterogeneity reported in the paper.} This finding helps explain why the formal restriction did not sever all affected relationships. It also points to the conditions under which constraints on financial contracts are most likely to bind.\n\nOur paper contributes to several literatures. First, we provide new evidence on how the contracting environment affects the boundaries of the firm \\todo{CITATION NEEDED: empirical studies of firm boundaries and vertical integration}. Most empirical work in this area relates organizational form to cross-sectional variation in contracting institutions or in transaction characteristics. We instead exploit a regulatory restriction on one specific financial term, imposed on a single buyer and applied only to suppliers below a predetermined size threshold. This setting allows us to trace the buyer's reorganization of procurement toward its own subsidiaries. Second, we contribute to the literature on trade credit \\todo{CITATION NEEDED: theories and evidence on why firms extend trade credit}. Much of this literature asks why suppliers extend credit to their customers and how trade credit interacts with bank finance. We show that the maturity of trade credit matters for whether a relationship exists at all, and that a large buyer adjusts along extensive and organizational margins when maturity is constrained. Third, we add to work on relational contracting by showing, in a setting with a well-defined shock to the feasible set of formal contracts, that informal arrangements can partly offset a binding formal restriction \\todo{CITATION NEEDED: empirical evidence on relational contracts between firms}.\n\nOur results also bear on policy. Regulators in several countries have considered or adopted limits on the payment terms that large buyers can impose on small suppliers \\todo{CITATION NEEDED: examples of payment-term regulations outside Chile}. Such rules aim to protect small firms from the bargaining power of large buyers. Our evidence suggests that, by constraining the contracts that buyers and suppliers can write, these rules may also reduce trade with the very firms they intend to protect and lead buyers to substitute toward internal supply. We do not attempt a full welfare evaluation, and our estimates come from a single retailer in a single market. The direction of the effects we document should nonetheless be relevant to the design of such policies.\n\nThe rest of the paper is organized as follows. Section I describes the Chilean discount retail industry, the Agreement and the determination of its cutoffs, the scope for manipulation and the enforcement of the Agreement, our data, and the margins along which the Superstore could adjust. Section II presents our results on trade with external suppliers, including graphical evidence and robustness tests. \\todo{ROADMAP: add the subsequent sections (internalization of procurement, overall purchases, relational contracts, conclusion) with their correct numbering.}", "change_log": "- Move sequence: motivation (organizational economics, contracts and firm boundaries) > identification challenge/gap > setting and policy shock > approach and identification defense > result 1 (extensive margin, 11%) > result 2 (internalization, reduced purchases) > result 3 (relational contracts) > contribution/literature positioning > policy implication with bounded claim > roadmap. This matches the corpus' typical motivation-first pattern, with the contribution paragraph at roughly the two-thirds position.\n- The section runs to roughly 1,650 words in 10 paragraphs. That is near the corpus median word count but above the median paragraph count, because each of the three findings gets its own paragraph.\n- The opening phrase follows the manuscript's own surviving abstract fragment (\"A rich literature in organizational economics studies how the institutional…\").\n- All numbers come from the supplied material: 63%, 2006, 90/30/60 days, December 2006/January 2007, the UF cutoffs and dollar equivalents, 734/342/392, and 11%. I kept the \"11%\" wording from the abstract and did not convert it to percentage points.\n- No BibTeX keys were provided, so every citation is a visible `\\todo` placeholder. Wilson and Summers (2003) and Murfin and Njoroge (2015) are named in the manuscript but have no keys.\n- I omitted the competitor's July 2008 agreement and the Walmart acquisition to keep the narrative focused. The author can reinsert them, since both appear in the material.", "flags": "- No magnitudes are available for internalization to subsidiaries or for the reduction in overall purchases. These are stated qualitatively only, so add the paper's estimates if desired.\n- The relational-contracts paragraph claims that the reduction in trade is concentrated where relational contracts are less available. The material only says relational contracts \"can mitigate,\" so verify the proxy and the heterogeneity pattern (flagged with `\\todo`).\n- The statement that within-product comparisons absorb product-level demand shocks (consumer tastes, seasonality, merchandising) is my interpretation of \"within-product\" difference-in-differences. Verify that the fixed effects match this description.\n- \"Real costs on the retailer as well as on the suppliers\" is an inference from reduced purchases and lost trade, so confirm the authors endorse this framing.\n- The policy paragraph's reference to other countries' payment-term regulations is unsupported by the material and needs a citation or should be removed.\n- The literature contrast in the contributions paragraph (\"most empirical work relates organizational form to cross-sectional variation\") is a characterization that needs supporting citations.\n- The roadmap covers only Sections I–II. Section numbers and titles for the later results sections and the conclusion are unknown.\n- All `\\todo{CITATION NEEDED}` placeholders need actual BibTeX keys.", "cost_usd": 0.12611, "latency_s": 50.9, "usage": {"input": 5878, "output": 5130}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1556, "preserved_rate": 0.48, "new_numbers": 2, "new_rate": 0.143, "n_author_year": 2, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 2, "max_overlap_share": 0.0346, "todo_placeholders": 10}, "retrieved": [{"unit": "intro_move", "score": 1.0, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "introduction", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7929, "doc_id": "jof_12609", "doi": "10.1111/jofi.12609", "title": "Is Proprietary Trading Detrimental to Retail Investors?", "year": 2018, "page": 1, "section": NaN, "sha256": "d587694fb51b463b", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.82, "split": "train"}, {"unit": "document_summary", "score": 0.7878, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": NaN, "sha256": "ed95aa3a0bd82030", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7847, "doc_id": "jof_12604", "doi": "10.1111/jofi.12604", "title": "Bank Capital and Lending Relationships", "year": 2018, "page": 1, "section": NaN, "sha256": "860c930fc2afa26d", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7825, "doc_id": "jof_12726", "doi": "10.1111/jofi.12726", "title": "The Impact of Bank Credit on Labor Reallocation and Aggregate Industry Productivity", "year": 2018, "page": 3, "section": "introduction", "sha256": "3b9ad8a3cde1762d", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7743, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "introduction", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.85, "split": "train"}], "profile": "financial_intermediation_banking"} | |
| 7 | +{"ts": "2026-11-03T23:29:38+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "C_conventional_rag", "rep": 1, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "\\noindent How do restrictions on the set of financial contracts that firms may sign affect whom they trade with and which activities they keep inside the firm? Organizational economics has long argued that the boundary of the firm depends on the contracts that can be written and enforced between independent parties \\todo{CITATION NEEDED: classic references on the theory of the firm and contractual incompleteness, e.g., Coase; Williamson; Grossman and Hart; Hart and Moore}. Most of the empirical evidence, however, relates organizational form to features of the transaction, such as asset specificity or complexity. It rarely relates organizational form to the specific terms of the financial contract that governs the transaction. This paper provides such evidence. We study a regulation that shortened the maximum maturity of the trade credit contracts that a large retailer could offer some of its small suppliers. We then trace the consequences for trading relationships and for the retailer's procurement choices.\n\nTrade credit is a natural setting for this question. Buyers and suppliers routinely bundle the sale of a good with a deferred payment, and large retailers in many countries demand long payment terms from small suppliers \\todo{CITATION NEEDED: Wilson and Summers (2003)}\\todo{CITATION NEEDED: Murfin and Njoroge (2015)}. Theories of trade credit suggest that payment terms do more than transfer liquidity. Deferred payment can give the buyer time to verify quality, it can tie the supplier's compensation to performance, and it can help sustain a relationship in which neither side can fully commit \\todo{CITATION NEEDED: theories of trade credit as quality guarantee, financing, or enforcement device}. If payment terms play these roles, then restricting them should change which suppliers a buyer is willing to trade with. It may also push the buyer to replace external suppliers with internal production or procurement. Testing this prediction is difficult because contract terms, trading relationships, and organizational form are chosen jointly. Exogenous variation in the set of feasible contracts is therefore rare.\n\nWe obtain such variation from an episode in the Chilean discount retail industry. The industry resembles its U.S. counterpart in several respects. Market power is concentrated in a few large chains that buy from suppliers across the firm size distribution. The chains operate large superstore formats and market their own credit cards and payment systems. One of the two dominant players was later acquired by Walmart. In 2006, these two retailers accounted for 63\\% of total industry revenues. Concerned that the chains were exercising monopsonistic power over small suppliers, the Chilean competition agency (Fiscal\\'{i}a Nacional Econ\\'{o}mica, or FNE) investigated their business practices. In August 2006 it issued a report that, among other concerns, singled out the standard practice of demanding 90-day payment terms from small suppliers. The agency negotiated separately with each chain and stated that it would withhold approval of new acquisitions until contracting practices changed.\n\nOur analysis focuses on one of these two retailers, which we call the Superstore. In December 2006, the Superstore signed an agreement with the FNE (the ``Agreement''), and it began to implement the Agreement in January 2007. Under the Agreement, the Superstore could no longer sign trade credit contracts with a maturity greater than 30 days with its small suppliers. Relative to the prevailing 90-day standard, this shortened the maturity of these contracts by up to 60 days. Smallness was defined by a revenue threshold of UF 100,000. Suppliers below the threshold were covered by the restriction, and otherwise similar suppliers just above it were not. The Superstore's main competitor signed a similar agreement only in July 2008.\n\nThis setting has three features that are useful for identification. First, the Agreement constrained the contract space directly, rather than through prices or taxes. Second, the treatment depended on a size cutoff, which lets us compare suppliers of similar size that faced different sets of feasible contracts. Third, we observe the Superstore's procurement at a fine level, so we can compare covered and uncovered suppliers that sell the same product. Our empirical strategy is a within-product difference-in-differences design. We compare suppliers with 2006 revenues just below and just above the UF 100,000 cutoff, before and after the Agreement. Our main sample includes firms with 2006 revenues between UF 25,000 and UF 600,000 (roughly \\$1.0 million to \\$24 million). Treated firms have 2006 revenues between UF 25,000 and UF 100,000, and Control firms have 2006 revenues between UF 100,000 and UF 600,000. The sample contains 734 suppliers, of which 342 are Treated and 392 are Control.\n\nFirms might have adjusted their revenues to move into or out of the Agreement's coverage. To address this concern, we assign treatment using predetermined 2006 revenues. Our design therefore estimates the effect of being covered by the restriction based on size before the Agreement, not on size afterward. The identifying assumption is that, absent the Agreement, outcomes for suppliers just below and just above the cutoff would have evolved in parallel. We provide graphical evidence on pre-Agreement trends and a set of robustness checks. We also discuss the determination of the cutoff, contemporaneous legislation, possible manipulation, and enforcement of the Agreement.\n\nWe report three sets of findings. First, the restriction reduces the likelihood that a Treated supplier trades with the Superstore by 11\\% relative to Control suppliers of the same product. Small suppliers were thus less able to sustain their relationship with the large buyer once the long payment terms that had previously governed it were no longer allowed. This result runs against the view that the restriction would simply transfer surplus from the retailer to its small suppliers. Some suppliers instead lost the relationship altogether.\n\nSecond, the Superstore changed its organizational form in response to the Agreement. It shifted procurement toward its own subsidiaries, internalizing purchases that it had previously made from external suppliers. It also reduced its overall purchases. When a financial contract that supported trade with independent suppliers was removed, the firm partly substituted internal procurement for market exchange. This substitution did not fully offset the decline in external purchases. The evidence links a specific contractual friction to the boundary of the firm.\n\nThird, relational contracts can mitigate the inability to extend long trade credit terms. The decline in trade is attenuated where the Superstore and its suppliers could rely on informal, self-enforcing arrangements. This finding is consistent with the idea that long payment terms and relational contracting are partial substitutes for supporting trade when formal contracts are incomplete.\n\nThese results contribute to three literatures. The first is the empirical study of firm boundaries and organizational form \\todo{CITATION NEEDED: empirical studies of vertical integration and make-or-buy decisions}. Existing work typically relates integration to characteristics of the good or the transaction. We instead hold the product fixed and vary the set of feasible financial contracts. We show that a restriction on contract terms alone shifts procurement from external suppliers toward internal subsidiaries. Our results therefore show that financial contracting is one of the margins through which contractual incompleteness shapes the boundary of the firm.\n\nThe second literature studies trade credit \\todo{CITATION NEEDED: empirical and theoretical work on trade credit, e.g., Petersen and Rajan; Burkart and Ellingsen; Giannetti, Burkart, and Ellingsen}. Much of this work asks why suppliers extend credit and how trade credit responds to shocks to bank financing. Recent work documents that large buyers obtain long payment terms from smaller suppliers \\todo{CITATION NEEDED: Murfin and Njoroge (2015)}. We study the reverse experiment: an exogenous shortening of the payment terms that a powerful buyer may demand. We find that this shortening reduces the likelihood of trade. Long trade credit terms thus appear to help sustain buyer--supplier relationships, and are not only a means of extracting surplus from small firms.\n\nThe third literature studies relational contracts \\todo{CITATION NEEDED: theory and evidence on relational contracts, e.g., Baker, Gibbons, and Murphy; Macchiavello and Morjaria}. Our evidence that relational contracting attenuates the effect of the restriction indicates that formal and informal contract terms interact in practice. When one instrument is removed, the other partly fills the gap.\n\nOur findings also bear on policy. Regulations that limit payment terms aim to protect small suppliers from large buyers \\todo{CITATION NEEDED: examples of payment-term regulations in other jurisdictions}. Our results show that such restrictions can have unintended consequences. In our setting, the restriction reduced the likelihood that small firms traded with the regulated retailer, and the retailer moved some procurement in-house. We do not estimate the welfare effects of the Agreement, and our evidence comes from a single retailer and a single regulatory episode. Nonetheless, the results suggest that policies restricting the contracts available to small suppliers should take into account how large buyers adjust which suppliers they buy from and which activities they integrate.\n\nThe remainder of the paper is organized as follows. Section~I describes the Chilean discount retail industry, the Agreement, the determination of the cutoffs, potential manipulation, enforcement, the data, and the margins along which the Superstore and its suppliers could adjust. Section~II presents graphical evidence, the main results, and robustness checks on trade between the Superstore and external suppliers. \\todo{Complete roadmap: sections on internalization of procurement, overall purchases, relational contracts, and conclusion.}", "change_log": "- Structure: research question, then why trade credit fits the question and why identification is hard, then setting and Agreement, then design, then three findings (one paragraph each), then three literatures, then policy and caveats, then roadmap.\n- All numbers come from the supplied material: 63\\%; 90/30/60 days; August 2006, December 2006, January 2007, July 2008; UF cutoffs and dollar equivalents; 734/342/392 firms; 11\\%.\n- No BibTeX keys were provided, so every reference is a `\\todo{CITATION NEEDED}` placeholder. This includes Wilson and Summers (2003) and Murfin and Njoroge (2015), which the manuscript text names.\n- Magnitudes for internalization, overall purchases, and relational contracts are not given in the material, so these findings are stated qualitatively.\n- Mechanisms such as quality verification and commitment are presented as theoretical motivations, not as results of the paper.\n- I deliberately did not reuse the opening fragment that leaked into the abstract field.", "flags": "- Supply BibTeX keys for every placeholder citation, or delete the corresponding claims.\n- Relational contracts: the material does not say how they are measured (e.g., relationship length or prior trade intensity). Please verify the wording \"attenuated where … could rely on informal, self-enforcing arrangements\" and add the specific proxy.\n- Internalization and reduced purchases: please add effect sizes and confirm whether \"did not fully offset\" is accurate. I inferred it from the abstract's mention of lower overall purchases.\n- The 11\\% is described as relative to Control suppliers of the same product. Please confirm it is a relative (percentage) effect and not percentage points.\n- The claim that the restriction \"runs against the view\" of a pure surplus transfer is my interpretation. Please confirm it matches the paper's framing.\n- The policy paragraph mentions payment-term regulations in other jurisdictions, which needs a citation or deletion.\n- The statement that welfare is not estimated is my assumption. Please verify.\n- The roadmap beyond Sections I–II is unknown. Please complete it.\n- The Walmart acquisition and the U.S. comparison are taken from Section I. Please keep them consistent with the final text.", "cost_usd": 0.12285, "latency_s": 56.3, "usage": {"input": 4228, "output": 5297}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1512, "preserved_rate": 0.44, "new_numbers": 2, "new_rate": 0.154, "n_author_year": 3, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 4, "max_overlap_share": 0.0264, "todo_placeholders": 10}, "retrieved": [{"unit": "section_opening", "score": 0.9866, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7893, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.938, "split": "train"}, {"unit": "section_opening", "score": 0.7784, "doc_id": "jof_12520", "doi": "10.1111/jofi.12520", "title": "The Front Men of Wall Street: The Role of CDO Collateral Managers in the CDO Boom and Bust", "year": 2017, "page": 1, "section": "Introduction (unnumbered)", "sha256": "a137c7ec184e2efa", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7773, "doc_id": "jof_12955", "doi": "10.1111/jofi.12955", "title": "The Employment Effects of Faster Payment: Evidence from the Federal Quickpay Reform", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "01e6ee298a8045e4", "role": "introduction", "genre": "empirical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7726, "doc_id": "jof_12856", "doi": "10.1111/jofi.12856", "title": "The Insurance Is the Lemon: Failing to Index Contracts", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "9c4ffadde6f75d24", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.963, "split": "train"}, {"unit": "section_opening", "score": 0.7423, "doc_id": "jof_12961", "doi": "10.1111/jofi.12961", "title": "Credit Rating Inflation and Firms’ Investments", "year": 2020, "page": 1, "section": "Introduction (unnumbered)", "sha256": "36edd46ebfff3bfb", "role": "introduction", "genre": "theoretical", "subfield": "corporate_finance", "confidence": 0.938, "split": "train"}], "profile": null} | |
| 8 | +{"ts": "2026-11-03T23:29:38+00:00", "task": "draft_introduction", "doc": "jof_12439", "domain": "finance", "condition": "D_profiles_retrieval", "rep": 1, "paper": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/experiments/fixtures/heldout_v1/jof_12439/manuscript.md", "degraded_literature": "environment affects the boundary of the firm and the scope for trade with external parties (e.g., Coase (1937), Williamson (1973), Grossman and Hart (1986)). Empirical evidence of a link between the contracting environment and the organizational form of the firm and its supply chain has been largely limited to observational case studies or industrylevel analyses (Bresnahan and Levin (2013), Lafontaine and Slade (2013)). In line with this view, Murfin and Njoroge (2015) document that the smallest decile of Compustat firms use by far the most trade credit. However, it is not uncommon to also observe credit flowing from small, constrained suppliers to large corporations with access to international capital markets.3 Indeed, Murfin and Njoroge (2015) document that firms in the top two size deciles are also net trade credit borrowers. This result suggests that the vertical integration stemming from the Agreement is costly (consistent with Baker, Gibbons, and Murphy (2001)).8 Many relational contracting models (e.g., Baker, Gibbons, and Murphy (2002)) predict that relationships are more resilient (i.e., can be more easily sustained by the threat of termination) when they are more exclusive, in the sense that the outside options of the parties are low. Consistent with this idea, we find that the negative effects of the Agreement on the likelihood of observing trade are significantly mitigated for suppliers that have more exclusive relationships with the Superstore, that is, suppliers that sell mostly to the Superstore, and for suppliers that have a large product market share (both of which we measure using prereform data).9 In these cases, the relationship is valuable for the supplier and the Superstore, respectively (as in McMillan and Woodruff (1999) and Giannetti, Burkart, and Ellingsen (2011)). Finally, we argue that in our setting, the evidence is most consistent with models of trade credit in which suppliers use long-maturity terms to guarantee product quality (Smith (1987), Long, Malitz, and Ravid (1993), and Kim and Shin (2012)). Related empirical papers include Baker and Hubbard (2004), who study how the introduction of a monitoring technology influences the decision to vertically integrate, Fresard, Hoberg, and Phillips (2014) and Seru (2014), who link vertical integration to innovation, and Chen et al. (2013), who investigate organizational form in the mutual fund industry. Acemoglu, Johnson, and Mitton (2009) and Macchiavello (2012) examine the relationship between the contracting environment and vertical integration in a large cross section of firms in different countries. Barrot (2016) examines the effects of a similar regulation that reduced the maturity of trade credit extended by French trucking firms. Similarly, Murfin and Njoroge (2015) show that financially constrained firms reduce investment when forced to extend longer maturity trade credit. These stark differences in policy outcomes likely stem from differences in the industrial organization of the trucking and discount retail industries and from the relative costs of vertical integration.11 The demand for French trucking services is highly competitive and largely inelastic (Barrot (2016)), while the Chilean discount retail sector is highly concentrated with more elastic demand.", "ok": true, "text": "Firms rarely trade through spot transactions alone. Buyers and suppliers bundle the exchange of goods with financial terms that set when and how payment occurs. Trade credit, under which the supplier delivers goods and the buyer pays at a later date, is among the most common of these terms. Organizational economics has long argued that the contracts parties can write shape both whether two independent firms trade and whether a firm buys an input from outside or produces it internally \\todo{CITATION NEEDED: classic theories of the boundary of the firm, e.g., transaction-cost and property-rights approaches}. Financial terms are a natural place to look for these forces, because they are a central margin on which buyers and suppliers divide surplus and allocate risk. Yet we know little about what happens to buyer-supplier relationships, and to the boundary of the firm, when the set of feasible financial contracts is restricted.\n\nAnswering this question empirically is difficult. Contract terms are chosen jointly with the decision to trade and with the decision to integrate. The firms that sign long-maturity trade credit contracts may differ systematically from those that do not, in size, bargaining position, product quality, or access to finance. A credible test requires variation in the menu of feasible contracts that does not stem from the characteristics of the trading parties themselves. Ideally, that variation would also apply to otherwise similar suppliers trading the same products with the same buyer. In this paper, we study a regulatory intervention that comes close to this ideal. The intervention restricted the maturity of trade credit contracts that one large retailer could sign with a subset of its suppliers.\n\nOur setting is the Chilean discount retail industry. It shares many features with retail markets in the United States and elsewhere. A small number of large firms concentrate market power, these firms buy from suppliers across the size distribution, and they frequently demand long payment terms from small suppliers \\todo{CITATION NEEDED: evidence on large retailers demanding long payment terms from small suppliers (e.g., Wilson and Summers (2003); Murfin and Njoroge (2015), cited in Section I, require BibTeX keys)}. The two dominant chains accounted for 63\\% of total industry revenues in 2006. We focus on the procurement decisions of one of them, which we call the Superstore. At the time, standard practice was for both large buyers to demand 90-day trade credit terms from their small suppliers. In 2006, Chile's procompetition agency, the Fiscal\\'{i}a Nacional Econ\\'{o}mica (FNE), investigated these practices. The agency viewed the long terms as a symptom of monopsonistic power. In August of that year, it issued a report that prompted both chains to modify their contracts with small suppliers. It also announced that it would deny regulatory approval for new acquisitions until the chains complied. The Superstore agreed in December 2006 and began implementing the change in January 2007. Under this Agreement, the Superstore could no longer sign trade credit contracts with a maturity above 30 days with small suppliers. Relative to the prevailing 90-day standard, this shortened maturity by up to 60 days. Whether a supplier counted as small, and thus fell under the Agreement, depended on criteria set by the agency, including a revenue cutoff of UF 100,000.\n\nThe Agreement therefore provides a sharp, externally imposed restriction on one dimension of the financial contract, with a known cutoff and a known date. We exploit it with a difference-in-differences design. We compare suppliers whose 2006 revenues lie just below the cutoff to suppliers whose revenues lie just above it, before and after the Agreement. Comparisons are made within product, so that treated and control suppliers selling the same products to the same buyer are compared to one another. To make the two groups as similar as possible, our main sample is restricted to firms with 2006 revenues between UF 25,000 and UF 600,000, roughly \\$1.0 million to \\$24 million. Treated firms are those with 2006 revenues between UF 25,000 and UF 100,000 (\\$1.0 million to \\$4.0 million). Control firms are those with 2006 revenues between UF 100,000 and UF 600,000 (\\$4.0 million to \\$24 million). The main sample contains 734 suppliers, of which 342 are treated and 392 are control. Our data combine the Superstore's procurement records with information on supplier revenues provided by the Chilean tax authority.\n\nWe obtain three main results. First, the restriction disrupted trade between the Superstore and affected suppliers. Being subject to the 30-day maximum maturity reduces the likelihood that a supplier trades with the Superstore by 11\\%. The intervention was motivated by a desire to protect small suppliers from a powerful buyer. Its most immediate effect, however, was to make these suppliers less likely to sell to that buyer at all. Second, the Superstore adjusted its organizational form. It responded to the restriction by shifting procurement toward its own subsidiaries, which the Agreement did not constrain, and by reducing its overall purchases. When the retailer could no longer write the contract it preferred with independent suppliers, it partly brought the transaction inside the firm and partly scaled it back. Third, relational contracts appear to mitigate the inability to extend long trade credit terms. Suppliers with stronger relationships with the Superstore were less affected by the restriction. This pattern suggests that informal arrangements can partially substitute for the formal contractual terms that the regulation ruled out.\n\nThe validity of the design rests on the assumption that, absent the Agreement, outcomes for suppliers just below and just above the cutoff would have evolved in parallel. We address threats to this assumption in several ways. Suppliers could have adjusted their revenues after 2006 to move into or out of the Agreement's jurisdiction. To rule out this endogenous sorting, we assign treatment based on predetermined 2006 revenues rather than contemporaneous revenues. We document how the cutoffs were determined and whether other legislation enacted at the same time could confound our estimates. We also examine evidence on manipulation around the threshold and describe how the Agreement was enforced. We present graphical evidence on the evolution of outcomes for treated and control suppliers around the implementation date, and we report a series of robustness checks on the main estimates.\n\nWhy should maturity matter enough to change whom the retailer buys from? The literature offers several reasons a buyer may value long payment terms. Trade credit can serve as a source of financing from supplier to buyer \\todo{CITATION NEEDED: trade credit as a financing channel}. Delayed payment can also give the buyer time to verify product quality before paying, which reduces the risk of accepting defective goods \\todo{CITATION NEEDED: quality-guarantee/warranty theories of trade credit}. Finally, payment terms can be a vehicle through which a buyer with market power extracts surplus from its suppliers, which is the concern that motivated the FNE \\todo{CITATION NEEDED: market power and trade credit terms}. Under any of these views, capping maturity removes a contractual margin. If the parties cannot fully offset that loss by renegotiating other terms, some trades become less attractive and the buyer has an incentive to reorganize procurement. Our results on internalization and on relational contracts speak directly to these margins of adjustment.\n\nThe paper contributes to several literatures. First, we provide causal evidence that restrictions on financial contracting affect the boundary of the firm. A large theoretical literature links contractual incompleteness and contracting frictions to vertical integration \\todo{CITATION NEEDED: theory of vertical integration and incomplete contracts}. Empirical tests, however, are often limited by the endogeneity of contract choice and organizational form \\todo{CITATION NEEDED: empirical studies of vertical integration and firm boundaries}. Our setting isolates a regulatory change in one contractual dimension and traces its consequences for both arm's-length trade and internal procurement. Second, we contribute to the literature on trade credit \\todo{CITATION NEEDED: empirical trade credit literature}. Most of that work studies the determinants of trade credit use or its role as a substitute for bank finance. We instead show that the feasibility of long trade credit terms affects whether trading relationships are sustained at all. Third, we add to work on relational contracts \\todo{CITATION NEEDED: theory and evidence on relational contracts}, showing that ongoing relationships can partially undo the effects of a binding restriction on formal contract terms. Finally, our results bear on policy. Governments in several jurisdictions have considered or adopted rules that limit payment terms large buyers can impose on small suppliers \\todo{CITATION NEEDED: examples of late-payment or payment-term regulation}. Our evidence suggests that such rules can carry unintended costs for the very firms they aim to protect, because buyers may respond by reducing trade with them or by procuring internally.\n\nThe rest of the paper proceeds as follows. Section I describes the Chilean discount retail industry, the Agreement and its enforcement, and our data, and it discusses the margins along which the Superstore could adjust. Section II presents our main evidence on trade with external suppliers, including graphical evidence and robustness checks. The subsequent sections examine the Superstore's internalization of procurement to its subsidiaries, its overall purchases, and the role of relational contracts, and the final section concludes.", "change_log": "- Move sequence: motivation (contracts and firm boundaries) → identification gap → setting (Chile, FNE, Agreement) → approach (within-product DiD at UF 100,000 cutoff) → preview of the three results → identification defense → mechanism sketch → literature positioning, contribution, and policy implication → roadmap. The intro has 9 paragraphs and about 1,700 words, close to the profile median length but above its paragraph median of 6. It is more paragraphs because I separated identification defense from mechanism for readability.\n- I used only figures in the material: 63%, 90/30/60 days, August 2006, December 2006, January 2007, UF 100,000 cutoff, UF 25,000–600,000 sample window, the dollar equivalents, 734/342/392 firms, and 11%. No magnitudes are given for the internalization, purchase, or relational-contract results, and I invented none.\n- Every citation is a `\\todo` placeholder because no BibTeX keys were supplied.\n- The mechanism paragraph frames the financing, quality-verification, and market-power channels as theoretical possibilities, not as findings of this paper.", "flags": "- The abstract says \"within-product difference-in-differences,\" while Section II describes a firm-level comparison across the cutoff. Please confirm that my description of within-product comparisons in paragraph 4 is accurate.\n- The data description, \"procurement records with information on supplier revenues provided by the Chilean tax authority,\" is inferred from mentions of the IRS revenue categories. Please confirm the data sources.\n- \"Suppliers with stronger relationships... were less affected\" is a paraphrase. The actual relational-contract measure and the result details need verification.\n- I stated that the subsidiaries were not constrained by the Agreement. This is implied but not explicit in the material, so please verify.\n- The criteria for \"small\" may include more than the revenue cutoff, since those paragraphs were omitted. Please check paragraph 3.\n- The roadmap beyond Sections I–II is assumed, because the numbering of later sections is unknown.\n- The policy claim that governments in other jurisdictions regulate payment terms needs a citation and verification.\n- All `\\todo{CITATION NEEDED}` items need real references. That includes Wilson and Summers (2003) and Murfin and Njoroge (2015), which are cited in Section I but have no BibTeX keys.", "cost_usd": 0.12647, "latency_s": 55.5, "usage": {"input": 5878, "output": 5148}, "n_calls": 1, "model": "claude-opus-5-5", "effort": "medium", "metrics": {"n_words": 1505, "preserved_rate": 0.48, "new_numbers": 2, "new_rate": 0.143, "n_author_year": 2, "n_unverifiable_citations": 0, "unverifiable_examples": [], "unknown_cite_keys": 0, "n_unsupported_claims": 2, "max_overlap_share": 0.0234, "todo_placeholders": 10}, "retrieved": [{"unit": "intro_move", "score": 1.0, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": "introduction", "sha256": "ed95aa3a0bd82030", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7929, "doc_id": "jof_12609", "doi": "10.1111/jofi.12609", "title": "Is Proprietary Trading Detrimental to Retail Investors?", "year": 2018, "page": 1, "section": NaN, "sha256": "d587694fb51b463b", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.82, "split": "train"}, {"unit": "document_summary", "score": 0.7878, "doc_id": "jof_12902", "doi": "10.1111/jofi.12902", "title": "The Value of Central Clearing", "year": 2020, "page": 1, "section": NaN, "sha256": "ed95aa3a0bd82030", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "document_summary", "score": 0.7847, "doc_id": "jof_12604", "doi": "10.1111/jofi.12604", "title": "Bank Capital and Lending Relationships", "year": 2018, "page": 1, "section": NaN, "sha256": "860c930fc2afa26d", "role": "document", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7825, "doc_id": "jof_12726", "doi": "10.1111/jofi.12726", "title": "The Impact of Bank Credit on Labor Reallocation and Aggregate Industry Productivity", "year": 2018, "page": 3, "section": "introduction", "sha256": "3b9ad8a3cde1762d", "role": "introduction", "genre": "empirical", "subfield": "financial_intermediation_banking", "confidence": 0.8, "split": "train"}, {"unit": "intro_move", "score": 0.7743, "doc_id": "jof_12519", "doi": "10.1111/jofi.12519", "title": "The Downside of Asset Screening for Market Liquidity", "year": 2017, "page": 1, "section": "introduction", "sha256": "773110aa8eba1110", "role": "introduction", "genre": "theoretical", "subfield": "financial_intermediation_banking", "confidence": 0.85, "split": "train"}], "profile": "financial_intermediation_banking"} | |
modified
figures/fig_abstract_moves.pdf
+0 −0
Binary file not shown.
modified
figures/fig_contribution_position.pdf
+0 −0
Binary file not shown.
modified
figures/fig_moves_robustness.pdf
+0 −0
Binary file not shown.
modified
figures/fig_structure_distributions.pdf
+0 −0
Binary file not shown.
modified
paper/appendix/appendix.tex
+124 −124
@@ -6,59 +6,59 @@ | ||
| 6 | 6 | \section{Ontology schema} |
| 7 | 7 | \label{app:ontology} |
| 8 | 8 | |
| 9 | −The annotation schema (ontology version 1.0) is defined once, in \texttt{src/jof250/rhetoric.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\_index} within the abstract, \texttt{paragraph\_index} within the introduction, \texttt{idx} over the sections of the payload); the value $-1$ means ``not seen''. The \texttt{causal\_language\_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]$. | |
| 9 | +The 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]$. | |
| 10 | 10 | |
| 11 | 11 | \begin{itemize}[leftmargin=1.2em]\small |
| 12 | −\item \texttt{genre} --- string: \texttt{empirical}, \texttt{theoretical}, \texttt{mixed\_theory\_empirical}, \texttt{methodological\_econometric}, \texttt{survey\_or\_address}, \texttt{replication\_or\_correction} | |
| 13 | −\item \texttt{subfield} --- string: \texttt{asset\_pricing}, \texttt{corporate\_finance}, \texttt{financial\_intermediation\_banking}, \texttt{household\_finance}, \texttt{market\_microstructure}, \texttt{international\_finance}, \texttt{behavioral\_finance}, \texttt{macro\_finance}, \texttt{financial\_econometrics}, \texttt{entrepreneurial\_finance\_private\_equity}, \texttt{other} | |
| 14 | −\item \texttt{subfield\_secondary} --- string | |
| 15 | −\item \texttt{primary\_method} --- string: \texttt{reduced\_form\_regression}, \texttt{difference\_in\_differences}, \texttt{instrumental\_variables}, \texttt{regression\_discontinuity}, \texttt{natural\_experiment\_event\_study}, \texttt{structural\_estimation}, \texttt{calibration\_simulation}, \texttt{theoretical\_model\_analytical}, \texttt{machine\_learning\_textual}, \texttt{survey\_or\_experiment}, \texttt{other}, \texttt{none} | |
| 16 | −\item \texttt{identification.estimand} --- string | |
| 17 | −\item \texttt{identification.strategy} --- string | |
| 18 | −\item \texttt{identification.key\_assumptions[]} --- array of string | |
| 19 | −\item \texttt{identification.threats\_addressed[]} --- array of string | |
| 20 | −\item \texttt{identification.causal\_language\_strength} --- integer | |
| 21 | −\item \texttt{identification.uses\_causal\_claim} --- boolean | |
| 22 | −\item \texttt{abstract\_moves.question.present} --- boolean | |
| 23 | −\item \texttt{abstract\_moves.question.sentence\_index} --- integer | |
| 24 | −\item \texttt{abstract\_moves.gap.present} --- boolean | |
| 25 | −\item \texttt{abstract\_moves.gap.sentence\_index} --- integer | |
| 26 | −\item \texttt{abstract\_moves.method.present} --- boolean | |
| 27 | −\item \texttt{abstract\_moves.method.sentence\_index} --- integer | |
| 28 | −\item \texttt{abstract\_moves.results.present} --- boolean | |
| 29 | −\item \texttt{abstract\_moves.results.sentence\_index} --- integer | |
| 30 | −\item \texttt{abstract\_moves.magnitude.present} --- boolean | |
| 31 | −\item \texttt{abstract\_moves.magnitude.sentence\_index} --- integer | |
| 32 | −\item \texttt{abstract\_moves.contribution.present} --- boolean | |
| 33 | −\item \texttt{abstract\_moves.contribution.sentence\_index} --- integer | |
| 34 | −\item \texttt{introduction.moves[].paragraph\_index} --- integer | |
| 35 | −\item \texttt{introduction.moves[].move} --- string: \texttt{motivation}, \texttt{tension\_or\_puzzle}, \texttt{literature\_gap}, \texttt{preview\_of\_approach}, \texttt{preview\_of\_results}, \texttt{contribution\_statement}, \texttt{mechanism\_or\_theory\_sketch}, \texttt{identification\_defense}, \texttt{robustness\_mention}, \texttt{roadmap}, \texttt{related\_literature\_positioning}, \texttt{policy\_or\_broader\_implication}, \texttt{other} | |
| 36 | −\item \texttt{introduction.contribution\_paragraph\_index} --- integer | |
| 37 | −\item \texttt{introduction.contribution\_types[]} --- array of string: \texttt{new\_evidence}, \texttt{new\_data\_or\_measure}, \texttt{new\_identification}, \texttt{new\_theory\_or\_model}, \texttt{new\_method}, \texttt{resolution\_of\_puzzle}, \texttt{replication\_or\_correction}, \texttt{synthesis} | |
| 38 | −\item \texttt{introduction.roadmap\_present} --- boolean | |
| 39 | −\item \texttt{introduction.literature\_positioning\_location} --- string: \texttt{inside\_introduction}, \texttt{separate\_section}, \texttt{both}, \texttt{none} | |
| 40 | −\item \texttt{section\_roles[].idx} --- integer | |
| 41 | −\item \texttt{section\_roles[].role} --- string: \texttt{introduction}, \texttt{literature}, \texttt{theory}, \texttt{data}, \texttt{empirical\_design}, \texttt{results}, \texttt{robustness}, \texttt{conclusion}, \texttt{appendix}, \texttt{other} | |
| 42 | −\item \texttt{results\_presentation.economic\_significance\_discussed} --- boolean | |
| 43 | −\item \texttt{results\_presentation.statistical\_significance\_language} --- string: \texttt{stars\_and\_tstats}, \texttt{confidence\_intervals}, \texttt{p\_values}, \texttt{mixed}, \texttt{unclear} | |
| 44 | −\item \texttt{results\_presentation.magnitude\_statements\_in\_intro} --- boolean | |
| 45 | −\item \texttt{robustness.location} --- string: \texttt{main\_text\_section}, \texttt{within\_results}, \texttt{appendix}, \texttt{internet\_appendix}, \texttt{mixed}, \texttt{none\_seen} | |
| 46 | −\item \texttt{robustness.types[]} --- array of string: \texttt{alternative\_specification}, \texttt{placebo}, \texttt{subsample}, \texttt{alternative\_measure}, \texttt{alternative\_sample\_period}, \texttt{falsification}, \texttt{sensitivity\_to\_parameters}, \texttt{other} | |
| 47 | −\item \texttt{tables.convention\_notes} --- string | |
| 48 | −\item \texttt{tables.units\_stated\_in\_notes} --- boolean | |
| 49 | −\item \texttt{tables.standard\_errors\_description} --- string: \texttt{clustered}, \texttt{robust}, \texttt{bootstrap}, \texttt{newey\_west}, \texttt{mixed}, \texttt{unclear}, \texttt{none} | |
| 50 | −\item \texttt{figures.uncertainty\_shown} --- string: \texttt{yes}, \texttt{no}, \texttt{mixed}, \texttt{unclear}, \texttt{no\_figures} | |
| 51 | −\item \texttt{conclusion.bounded\_claims} --- boolean | |
| 52 | −\item \texttt{conclusion.policy\_implications} --- boolean | |
| 53 | −\item \texttt{conclusion.open\_questions} --- boolean | |
| 54 | −\item \texttt{conclusion.restates\_contribution} --- boolean | |
| 55 | −\item \texttt{hedging.level} --- string: \texttt{low}, \texttt{moderate}, \texttt{high} | |
| 56 | −\item \texttt{hedging.typical\_devices[]} --- array of string | |
| 57 | −\item \texttt{claim\_evidence[].claim} --- string | |
| 58 | −\item \texttt{claim\_evidence[].evidence\_type} --- string: \texttt{table}, \texttt{figure}, \texttt{equation\_or\_proof}, \texttt{prior\_literature}, \texttt{descriptive\_statistic}, \texttt{none\_stated} | |
| 59 | −\item \texttt{claim\_evidence[].evidence\_ref} --- string | |
| 60 | −\item \texttt{structural\_summary} --- string | |
| 61 | −\item \texttt{writing\_profile\_keywords[]} --- array of string | |
| 12 | +\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} --- string | |
| 15 | +\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} --- string | |
| 17 | +\item \texttt{identification.\allowbreak{}strategy} --- string | |
| 18 | +\item \texttt{identification.\allowbreak{}key\_\allowbreak{}assumptions[]} --- array of string | |
| 19 | +\item \texttt{identification.\allowbreak{}threats\_\allowbreak{}addressed[]} --- array of string | |
| 20 | +\item \texttt{identification.\allowbreak{}causal\_\allowbreak{}language\_\allowbreak{}strength} --- integer | |
| 21 | +\item \texttt{identification.\allowbreak{}uses\_\allowbreak{}causal\_\allowbreak{}claim} --- boolean | |
| 22 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}question.\allowbreak{}present} --- boolean | |
| 23 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}question.\allowbreak{}sentence\_\allowbreak{}index} --- integer | |
| 24 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}gap.\allowbreak{}present} --- boolean | |
| 25 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}gap.\allowbreak{}sentence\_\allowbreak{}index} --- integer | |
| 26 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}method.\allowbreak{}present} --- boolean | |
| 27 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}method.\allowbreak{}sentence\_\allowbreak{}index} --- integer | |
| 28 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}results.\allowbreak{}present} --- boolean | |
| 29 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}results.\allowbreak{}sentence\_\allowbreak{}index} --- integer | |
| 30 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}magnitude.\allowbreak{}present} --- boolean | |
| 31 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}magnitude.\allowbreak{}sentence\_\allowbreak{}index} --- integer | |
| 32 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}contribution.\allowbreak{}present} --- boolean | |
| 33 | +\item \texttt{abstract\_\allowbreak{}moves.\allowbreak{}contribution.\allowbreak{}sentence\_\allowbreak{}index} --- integer | |
| 34 | +\item \texttt{introduction.\allowbreak{}moves[].\allowbreak{}paragraph\_\allowbreak{}index} --- integer | |
| 35 | +\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} --- integer | |
| 37 | +\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} --- boolean | |
| 39 | +\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} --- integer | |
| 41 | +\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} --- boolean | |
| 43 | +\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} --- boolean | |
| 45 | +\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} --- string | |
| 48 | +\item \texttt{tables.\allowbreak{}units\_\allowbreak{}stated\_\allowbreak{}in\_\allowbreak{}notes} --- boolean | |
| 49 | +\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} --- boolean | |
| 52 | +\item \texttt{conclusion.\allowbreak{}policy\_\allowbreak{}implications} --- boolean | |
| 53 | +\item \texttt{conclusion.\allowbreak{}open\_\allowbreak{}questions} --- boolean | |
| 54 | +\item \texttt{conclusion.\allowbreak{}restates\_\allowbreak{}contribution} --- boolean | |
| 55 | +\item \texttt{hedging.\allowbreak{}level} --- string: \texttt{low}, \texttt{moderate}, \texttt{high} | |
| 56 | +\item \texttt{hedging.\allowbreak{}typical\_\allowbreak{}devices[]} --- array of string | |
| 57 | +\item \texttt{claim\_\allowbreak{}evidence[].\allowbreak{}claim} --- string | |
| 58 | +\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} --- string | |
| 60 | +\item \texttt{structural\_\allowbreak{}summary} --- string | |
| 61 | +\item \texttt{writing\_\allowbreak{}profile\_\allowbreak{}keywords[]} --- array of string | |
| 62 | 62 | \item \texttt{confidence} --- number |
| 63 | 63 | \item \texttt{notes} --- string |
| 64 | 64 | \end{itemize} |
@@ -66,11 +66,11 @@ The annotation schema (ontology version 1.0) is defined once, in \texttt{src/jof | ||
| 66 | 66 | \section{Prompts} |
| 67 | 67 | \label{app:prompts} |
| 68 | 68 | |
| 69 | −The prompt files are reproduced verbatim from \texttt{prompts/} (YAML front matter omitted; prompt identifier and version shown). Placeholders in braces (\texttt{\{section\}}, \texttt{\{retrieved\}}, \texttt{\{profile\_summary\}}, \texttt{\{genre\_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. | |
| 69 | +The 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. | |
| 70 | 70 | |
| 71 | 71 | \subsection{Annotation prompt} |
| 72 | 72 | |
| 73 | −\paragraph{\texttt{annotation/document\_annotation\_v1.md} (prompt id \texttt{document\_annotation}, version 1.0).} | |
| 73 | +\paragraph{\texttt{annotation/\allowbreak{}document\_\allowbreak{}annotation\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{document\_\allowbreak{}annotation}, version 1.0).} | |
| 74 | 74 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 75 | 75 | You 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. |
| 76 | 76 | |
@@ -98,7 +98,7 @@ Return only the JSON object. | ||
| 98 | 98 | |
| 99 | 99 | \subsection{Writing prompts (system prompt and conditions A--E)} |
| 100 | 100 | |
| 101 | −\paragraph{\texttt{writing/system\_base\_v1.md} (prompt id \texttt{writing\_system\_base}, version 1.0).} | |
| 101 | +\paragraph{\texttt{writing/\allowbreak{}system\_\allowbreak{}base\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{writing\_\allowbreak{}system\_\allowbreak{}base}, version 1.0).} | |
| 102 | 102 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 103 | 103 | You are a scholarly writing engine for economics and finance manuscripts. You produce LaTeX-ready prose for a specified section of the user's manuscript. |
| 104 | 104 | |
@@ -114,13 +114,13 @@ Hard constraints (apply in every condition): | ||
| 114 | 114 | |
| 115 | 115 | \end{quote} |
| 116 | 116 | |
| 117 | −\paragraph{\texttt{writing/condition\_A\_v1.md} (prompt id \texttt{condition\_A\_minimal}, version 1.0).} | |
| 117 | +\paragraph{\texttt{writing/\allowbreak{}condition\_\allowbreak{}A\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{condition\_\allowbreak{}A\_\allowbreak{}minimal}, version 1.0).} | |
| 118 | 118 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 119 | 119 | Write the \{section\} of this paper. |
| 120 | 120 | |
| 121 | 121 | \end{quote} |
| 122 | 122 | |
| 123 | −\paragraph{\texttt{writing/condition\_B\_v1.md} (prompt id \texttt{condition\_B\_strong\_prompt}, version 1.0).} | |
| 123 | +\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 | 124 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 125 | 125 | Write the \{section\} of this paper as an experienced academic economist would for a top general-interest finance or economics journal. |
| 126 | 126 | |
@@ -128,7 +128,7 @@ Guidance: state the research question early; motivate why it matters; make the c | ||
| 128 | 128 | |
| 129 | 129 | \end{quote} |
| 130 | 130 | |
| 131 | −\paragraph{\texttt{writing/condition\_C\_v1.md} (prompt id \texttt{condition\_C\_conventional\_rag}, version 1.0).} | |
| 131 | +\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 | 132 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 133 | 133 | Write the \{section\} of this paper as an experienced academic economist would for a top general-interest finance or economics journal. |
| 134 | 134 | |
@@ -142,7 +142,7 @@ Below are short excerpts retrieved by similarity from a private corpus of publis | ||
| 142 | 142 | |
| 143 | 143 | \end{quote} |
| 144 | 144 | |
| 145 | −\paragraph{\texttt{writing/condition\_D\_v1.md} (prompt id \texttt{condition\_D\_profiles\_structured}, version 1.0).} | |
| 145 | +\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 | 146 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 147 | 147 | Write the \{section\} of this paper as an experienced academic economist would for a top general-interest finance or economics journal. |
| 148 | 148 | |
@@ -166,7 +166,7 @@ Procedure: (1) identify what this manuscript's actual evidence supports; (2) cho | ||
| 166 | 166 | |
| 167 | 167 | \end{quote} |
| 168 | 168 | |
| 169 | −\paragraph{\texttt{writing/condition\_E\_referee\_v1.md} (prompt id \texttt{condition\_E\_specialist\_referee}, version 1.0).} | |
| 169 | +\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 | 170 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 171 | 171 | You 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). |
| 172 | 172 | |
@@ -178,31 +178,31 @@ Output exactly: the revised LaTeX text, then `=== CHANGE LOG ===` with the refer | ||
| 178 | 178 | |
| 179 | 179 | \subsection{Review prompts} |
| 180 | 180 | |
| 181 | −\paragraph{\texttt{review/referee\_v1.md} (prompt id \texttt{review\_referee}, version 1.0).} | |
| 181 | +\paragraph{\texttt{review/\allowbreak{}referee\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}referee}, version 1.0).} | |
| 182 | 182 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 183 | 183 | You 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\} |
| 184 | 184 | |
| 185 | 185 | \end{quote} |
| 186 | 186 | |
| 187 | −\paragraph{\texttt{review/editor\_v1.md} (prompt id \texttt{review\_editor}, version 1.0).} | |
| 187 | +\paragraph{\texttt{review/\allowbreak{}editor\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}editor}, version 1.0).} | |
| 188 | 188 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 189 | 189 | You 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\} |
| 190 | 190 | |
| 191 | 191 | \end{quote} |
| 192 | 192 | |
| 193 | −\paragraph{\texttt{review/table\_editor\_v1.md} (prompt id \texttt{review\_table\_editor}, version 1.0).} | |
| 193 | +\paragraph{\texttt{review/\allowbreak{}table\_\allowbreak{}editor\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}table\_\allowbreak{}editor}, version 1.0).} | |
| 194 | 194 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 195 | 195 | You 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\} |
| 196 | 196 | |
| 197 | 197 | \end{quote} |
| 198 | 198 | |
| 199 | −\paragraph{\texttt{review/integrity\_v1.md} (prompt id \texttt{review\_integrity}, version 1.0).} | |
| 199 | +\paragraph{\texttt{review/\allowbreak{}integrity\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}integrity}, version 1.0).} | |
| 200 | 200 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 201 | 201 | You 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\} |
| 202 | 202 | |
| 203 | 203 | \end{quote} |
| 204 | 204 | |
| 205 | −\paragraph{\texttt{review/replication\_v1.md} (prompt id \texttt{review\_replication}, version 1.0).} | |
| 205 | +\paragraph{\texttt{review/\allowbreak{}replication\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{review\_\allowbreak{}replication}, version 1.0).} | |
| 206 | 206 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 207 | 207 | You 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\} |
| 208 | 208 | |
@@ -210,7 +210,7 @@ You are a replication auditor. From the manuscript material, extract what a repl | ||
| 210 | 210 | |
| 211 | 211 | \subsection{Judge rubric} |
| 212 | 212 | |
| 213 | −\paragraph{\texttt{evaluation/judge\_rubric\_v1.md} (prompt id \texttt{judge\_rubric}, version 1.0).} | |
| 213 | +\paragraph{\texttt{evaluation/\allowbreak{}judge\_\allowbreak{}rubric\_\allowbreak{}v1.\allowbreak{}md} (prompt id \texttt{judge\_\allowbreak{}rubric}, version 1.0).} | |
| 214 | 214 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 215 | 215 | You 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. |
| 216 | 216 | |
@@ -237,65 +237,65 @@ Return only JSON: \{''scores'': \{''\textless{}letter\textgreater{}'': \{''clari | ||
| 237 | 237 | \section{Parser QA} |
| 238 | 238 | \label{app:parser-qa} |
| 239 | 239 | |
| 240 | −Table~\ref{tab:parser-qa-docs} reproduces the per-document rows of \texttt{data/derived/parser\_qa.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. | |
| 240 | +Table~\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. | |
| 241 | 241 | |
| 242 | 242 | \begin{table}[htbp]\centering\small |
| 243 | 243 | \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 | 244 | \label{tab:parser-qa-docs} |
| 245 | −\begin{tabular}{llcccccc}\toprule | |
| 245 | +\resizebox{\linewidth}{!}{\begin{tabular}{llcccccc}\toprule | |
| 246 | 246 | Document & Type & Sections & Tables & Figures & Equations & References & Abstract \\ \midrule |
| 247 | −\texttt{jof\_12484} & article & 5/5 & 6/5 & 13/12 & 22/20 & 65/64 & 1/1 \\ | |
| 248 | −\texttt{jof\_12499} & article & 4/4 & 13/13 & 4/4 & 17/8 & 35/35 & 1/1 \\ | |
| 249 | −\texttt{jof\_12495} & article & 5/5 & 12/12 & 2/2 & 5/15 & 64/64 & 1/1 \\ | |
| 250 | −\texttt{jof\_12488} & article & 5/6 & 6/6 & 8/8 & 41/37 & 57/57 & 1/1 \\ | |
| 251 | −\texttt{jof\_12465} & article & 5/5 & 13/11 & 4/4 & 32/45 & 64/63 & 1/1 \\ | |
| 252 | −\texttt{jof\_12684} & article & 3/3 & 4/4 & 5/5 & 24/30 & 73/73 & 1/1 \\ | |
| 253 | −\texttt{jof\_12691} & article & 7/7 & 14/14 & 2/2 & 6/16 & 35/35 & 1/1 \\ | |
| 254 | −\texttt{jof\_12584} & article & 7/7 & 0/0 & 9/9 & 12/13 & 56/56 & 1/1 \\ | |
| 255 | −\texttt{jof\_12590} & article & 8/9 & 1/1 & 3/3 & 90/52 & 18/18 & 1/1 \\ | |
| 256 | −\texttt{jof\_12726} & article & 6/6 & 10/10 & 2/2 & 11/33 & 47/47 & 1/1 \\ | |
| 257 | −\texttt{jof\_12732} & article & 4/4 & 6/6 & 10/10 & 19/21 & 43/40 & 1/1 \\ | |
| 258 | −\texttt{jof\_12749} & article & 6/6 & 8/7 & 0/0 & 2/11 & 75/75 & 1/1 \\ | |
| 259 | −\texttt{jof\_12773} & article & 6/6 & 3/3 & 12/11 & 45/33 & 59/60 & 1/1 \\ | |
| 260 | −\texttt{jof\_12734} & article & 5/5 & 8/8 & 3/3 & 15/21 & 44/43 & 1/1 \\ | |
| 261 | −\texttt{jof\_12765} & article & 7/7 & 9/9 & 6/6 & 19/27 & 64/64 & 1/1 \\ | |
| 262 | −\texttt{jof\_12842} & article & 5/5 & 6/6 & 9/9 & 27/13 & 89/89 & 1/1 \\ | |
| 263 | −\texttt{jof\_12856} & article & 7/7 & 1/0 & 0/0 & 19/19 & 44/43 & 1/1 \\ | |
| 264 | −\texttt{jof\_12843} & article & 6/7 & 11/10 & 5/5 & 10/27 & 60/60 & 1/1 \\ | |
| 265 | −\texttt{jof\_12890} & article & 6/6 & 11/10 & 5/5 & 16/24 & 34/34 & 1/1 \\ | |
| 266 | −\texttt{jof\_12862} & article & 7/8 & 4/4 & 1/1 & 33/35 & 58/0 & 1/1 \\ | |
| 267 | −\texttt{jof\_12530} & presidential\_address & 10/10 & 4/4 & 7/7 & 0/1 & 69/66 & 1/1 \\ | |
| 268 | −\texttt{jof\_12548} & corrigendum\_or\_replication & 2/2 & 2/2 & 0/0 & 38/6 & 4/4 & 1/1 \\ | |
| 269 | −\texttt{jof\_12710} & presidential\_address & 5/5 & 6/6 & 14/14 & 22/27 & 72/71 & 1/1 \\ | |
| 270 | −\texttt{jof\_12762} & corrigendum\_or\_replication & 4/4 & 0/0 & 0/0 & 19/20 & 12/10 & 1/1 \\ | |
| 271 | −\texttt{jof\_12782} & presidential\_address & 3/3 & 0/0 & 9/9 & 38/40 & 45/44 & 1/1 \\ | |
| 272 | −\texttt{jof\_12786} & corrigendum\_or\_replication & 0/0 & 0/0 & 0/0 & 0/0 & 169/5 & 0/0 \\ | |
| 273 | −\bottomrule\end{tabular} | |
| 247 | +\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 | 274 | \end{table} |
| 275 | 275 | |
| 276 | 276 | \section{Profiles} |
| 277 | 277 | \label{app:profiles} |
| 278 | 278 | |
| 279 | −Table~\ref{tab:profile-rules} lists every profile file and its selection rule; Table~\ref{tab:profiles-all} gives the structure medians and interquartile ranges of each. 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\_all} and then to \texttt{corpus\_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; their macros (for example the share of abstracts stating a magnitude, or the median relative position of the contribution paragraph) are generated by the same script and will be quoted in the results sections once the full annotation run completes. | |
| 279 | +Table~\ref{tab:profile-rules} lists every profile file and its selection rule; Table~\ref{tab:profiles-all} gives the structure medians and interquartile ranges of each. 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; their macros (for example the share of abstracts stating a magnitude, or the median relative position of the contribution paragraph) are generated by the same script and will be quoted in the results sections once the full annotation run completes. | |
| 280 | 280 | |
| 281 | 281 | \begin{table}[htbp]\centering\small |
| 282 | −\caption{Profile files and their selection rules (\texttt{PROFILE\_DEFS} in \texttt{src/jof250/features.py}).} | |
| 282 | +\caption{Profile files and their selection rules (\texttt{PROFILE\_\allowbreak{}DEFS} in \texttt{src/\allowbreak{}jof250/\allowbreak{}features.\allowbreak{}py}).} | |
| 283 | 283 | \label{tab:profile-rules} |
| 284 | 284 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.36\linewidth}X}\toprule |
| 285 | 285 | Profile & Selection rule (train split only) \\ \midrule |
| 286 | −\texttt{corpus\_all} & all included train documents \\ | |
| 287 | −\texttt{empirical\_all} & genre in \{empirical, mixed\_theory\_empirical\} \\ | |
| 288 | −\texttt{empirical\_asset\_pricing} & annotation.subfield == asset\_pricing and genre in \{empirical, mixed\_theory\_empirical\} \\ | |
| 289 | −\texttt{corporate\_finance} & annotation.subfield == corporate\_finance and genre in \{empirical, mixed\_theory\_empirical\} \\ | |
| 290 | −\texttt{theoretical\_finance} & genre == theoretical \\ | |
| 291 | −\texttt{financial\_econometrics} & subfield == financial\_econometrics or genre == methodological\_econometric \\ | |
| 292 | −\texttt{financial\_intermediation\_banking} & annotation.subfield == financial\_intermediation\_banking (empirical/mixed) \\ | |
| 293 | −\texttt{household\_behavioral\_finance} & subfield in \{household\_finance, behavioral\_finance\} (empirical/mixed) \\ | |
| 286 | +\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 | 294 | \bottomrule\end{tabularx} |
| 295 | 295 | \end{table} |
| 296 | 296 | |
| 297 | 297 | \begin{table}[htbp]\centering\scriptsize |
| 298 | −\caption{Structure medians (interquartile range in parentheses) of every profile file in \texttt{profiles/}, training split only. Columns: all = \texttt{corpus\_all}; empirical = \texttt{empirical\_all}; asset pr. = \texttt{empirical\_asset\_pricing}; corp.\ fin.\ = \texttt{corporate\_finance}; theory = \texttt{theoretical\_finance}; econom.\ = \texttt{financial\_econometrics}; banking = \texttt{financial\_intermediation\_banking}; household = \texttt{household\_behavioral\_finance}. Cells marked TODO belong to profiles whose selection rule depends on document-level annotations and are filled automatically by \texttt{scripts/07\_make\_numbers.py} once the full annotation run completes; a profile with $n = 0$ has no distribution. Observed frequencies describe what published articles did; they are not editorial rules.} | |
| 298 | +\caption{Structure medians (interquartile range in parentheses) of every profile file in \texttt{profiles/\allowbreak{}}, training split only. Columns: all = \texttt{corpus\_\allowbreak{}all}; empirical = \texttt{empirical\_\allowbreak{}all}; asset pr. = \texttt{empirical\_\allowbreak{}asset\_\allowbreak{}pricing}; corp.\ fin.\ = \texttt{corporate\_\allowbreak{}finance}; theory = \texttt{theoretical\_\allowbreak{}finance}; econom.\ = \texttt{financial\_\allowbreak{}econometrics}; banking = \texttt{financial\_\allowbreak{}intermediation\_\allowbreak{}banking}; household = \texttt{household\_\allowbreak{}behavioral\_\allowbreak{}finance}. Cells marked TODO belong to profiles whose selection rule depends on document-level annotations and are filled automatically by \texttt{scripts/\allowbreak{}07\_\allowbreak{}make\_\allowbreak{}numbers.\allowbreak{}py} once the full annotation run completes; a profile with $n = 0$ has no distribution. Observed frequencies describe what published articles did; they are not editorial rules.} | |
| 299 | 299 | \label{tab:profiles-all} |
| 300 | 300 | \resizebox{\linewidth}{!}{\begin{tabular}{lcccccccc}\toprule |
| 301 | 301 | Statistic & all & empirical & asset pr. & corp. fin. & theory & econom. & banking & household \\ \midrule |
@@ -314,19 +314,19 @@ Conclusion share & \profvalc{profCorpusAllConclusionShareMed} (\profvalc{profCor | ||
| 314 | 314 | \section{Splits and fixtures} |
| 315 | 315 | \label{app:splits} |
| 316 | 316 | |
| 317 | −\paragraph{Split protocol.} \texttt{heldout\_v1} (\texttt{data/splits/heldout\_v1.json}, \texttt{scripts/03\_make\_splits.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\_\textit{nnnnn}}, the numeric suffix of the article's DOI. | |
| 317 | +\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. | |
| 318 | 318 | |
| 319 | −\paragraph{Fixtures.} \texttt{scripts/04\_build\_fixtures.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.md} (the parsed structure rendered as Markdown with the published introduction withheld), \texttt{manuscript\_with\_intro.md}, \texttt{published\_introduction.txt}, \texttt{meta.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. | |
| 319 | +\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. | |
| 320 | 320 | |
| 321 | 321 | \section{Reproducibility} |
| 322 | 322 | \label{app:reproducibility} |
| 323 | 323 | |
| 324 | −Table~\ref{tab:repro} lists the command that regenerates each artefact (\texttt{docs/REPRODUCIBILITY.md}). Every JSON artefact carries a \texttt{timestamp}, a \texttt{code\_version} (git short hash, suffixed \texttt{-dirty} when uncommitted changes were present), and a \texttt{host} description; the environment is pinned in \texttt{pyproject.toml} (Python 3.12.13) and model identifiers in \texttt{config/models.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. | |
| 324 | +Table~\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. | |
| 325 | 325 | |
| 326 | 326 | \begin{table}[htbp] |
| 327 | 327 | \centering |
| 328 | 328 | \small |
| 329 | −\caption{Regeneration commands (run from the repository root; \texttt{make} targets wrap \texttt{.venv/bin/jof250}).} | |
| 329 | +\caption{Regeneration commands (run from the repository root; \texttt{make} targets wrap \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}jof250}).} | |
| 330 | 330 | \label{tab:repro} |
| 331 | 331 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.26\linewidth}>{\raggedright\arraybackslash}p{0.40\linewidth}>{\raggedright\arraybackslash}X} |
| 332 | 332 | \toprule |
@@ -334,15 +334,15 @@ Artefact & Command & Deterministic? \\ | ||
| 334 | 334 | \midrule |
| 335 | 335 | Corpus manifest and audit & \texttt{make audit} & yes, given the Crossref cache \\ |
| 336 | 336 | Parsed documents & \texttt{make parse} & yes (parser version in each file) \\ |
| 337 | −Parser QA & \texttt{.venv/bin/python -I scripts/02\_parser\_qa.py} & yes (seed 45) \\ | |
| 338 | −Splits & \texttt{.venv/bin/python -I scripts/03\_make\_splits.py} & yes (seed 45) \\ | |
| 337 | +Parser QA & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}02\_\allowbreak{}parser\_\allowbreak{}qa.\allowbreak{}py} & yes (seed 45) \\ | |
| 338 | +Splits & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}03\_\allowbreak{}make\_\allowbreak{}splits.\allowbreak{}py} & yes (seed 45) \\ | |
| 339 | 339 | Annotations & \texttt{make annotate} & no (LLM; responses cached by prompt hash) \\ |
| 340 | 340 | Profiles and figures & \texttt{make profiles} & yes (bootstrap seed 45) \\ |
| 341 | 341 | Retrieval index & \texttt{make index} & yes (same embedding model) \\ |
| 342 | −Fixtures & \texttt{.venv/bin/python -I scripts/04\_build\_fixtures.py} & yes (seed 45) \\ | |
| 343 | −Benchmark & \texttt{jof250 benchmark --config config/evaluation.yaml} & no (LLM; all raw runs stored) \\ | |
| 344 | −Analysis, paper tables and figures & \texttt{.venv/bin/python -I scripts/05\_analyze\_benchmark.py} & yes (seed 45) \\ | |
| 345 | −Number macros & \texttt{.venv/bin/python -I scripts/07\_make\_numbers.py} & yes \\ | |
| 342 | +Fixtures & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}04\_\allowbreak{}build\_\allowbreak{}fixtures.\allowbreak{}py} & yes (seed 45) \\ | |
| 343 | +Benchmark & \texttt{jof250 benchmark --config config/\allowbreak{}evaluation.\allowbreak{}yaml} & no (LLM; all raw runs stored) \\ | |
| 344 | +Analysis, paper tables and figures & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}05\_\allowbreak{}analyze\_\allowbreak{}benchmark.\allowbreak{}py} & yes (seed 45) \\ | |
| 345 | +Number macros & \texttt{.\allowbreak{}venv/\allowbreak{}bin/\allowbreak{}python -I scripts/\allowbreak{}07\_\allowbreak{}make\_\allowbreak{}numbers.\allowbreak{}py} & yes \\ | |
| 346 | 346 | Paper & \texttt{cd paper \&\& make} & yes \\ |
| 347 | 347 | Tests & \texttt{make test} & yes (synthetic fixtures; no API calls) \\ |
| 348 | 348 | \bottomrule |
@@ -352,22 +352,22 @@ Tests & \texttt{make test} & yes (synthetic fixtures; no API calls) \\ | ||
| 352 | 352 | \section{User manual} |
| 353 | 353 | \label{app:manual} |
| 354 | 354 | |
| 355 | −This appendix condenses \texttt{docs/USER\_GUIDE.md} and \texttt{docs/INSTALL.md}. | |
| 355 | +This appendix condenses \texttt{docs/\allowbreak{}USER\_\allowbreak{}GUIDE.\allowbreak{}md} and \texttt{docs/\allowbreak{}INSTALL.\allowbreak{}md}. | |
| 356 | 356 | |
| 357 | −\paragraph{Installation.} Create the environment (\texttt{uv venv --python 3.12 .venv} and \texttt{uv pip install -e ".[dev]"}), copy \texttt{.env.example} to \texttt{.env} and point \texttt{JOF250\_ANTHROPIC\_KEY\_FILE} to a file holding the API key (never committed), and run \texttt{.venv/bin/jof250 --help}. The corpus root is set in \texttt{config/corpus.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{.venv/bin/jof250}; after moving the repository, re-run the install command. | |
| 357 | +\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. | |
| 358 | 358 | |
| 359 | −\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{/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). | |
| 359 | +\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). | |
| 360 | 360 | |
| 361 | −\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{.report.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\_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. | |
| 361 | +\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. | |
| 362 | 362 | |
| 363 | −\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{.claude/skills/jof250/SKILL.md}) states the rules for the assistant: always pass an explicit output path under the paper's \texttt{jof250\_proposals/} or \texttt{jof250\_reviews/} folder or under \texttt{/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}. | |
| 363 | +\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}. | |
| 364 | 364 | |
| 365 | −\paragraph{Manuscripts supported.} LaTeX projects (a directory with \texttt{paper/main.tex} or \texttt{main.tex}; \texttt{\textbackslash input} and \texttt{\textbackslash include} resolved; UQO \texttt{\textbackslash WP\ldots} macros read; \texttt{*.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. | |
| 365 | +\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. | |
| 366 | 366 | |
| 367 | 367 | \section{Claude Code command files} |
| 368 | 368 | \label{app:commands} |
| 369 | 369 | |
| 370 | −The ten command files under \texttt{.claude/commands/} are generated from \texttt{integrations/claude\_code.py}. One is reproduced verbatim below (\texttt{jof-write.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). | |
| 370 | +The 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). | |
| 371 | 371 | |
| 372 | 372 | \begin{quote}\small\setlength{\parskip}{3pt}\setlength{\parindent}{0pt} |
| 373 | 373 | --- |
@@ -376,10 +376,10 @@ description: Draft a manuscript section with the full JoF-250 engine (profiles, | ||
| 376 | 376 | |
| 377 | 377 | argument-hint: \textless{}paper-path\textgreater{} --section \textless{}name\textgreater{} [--condition A|B|C|D|E] |
| 378 | 378 | |
| 379 | −allowed-tools: Bash(/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/.venv/bin/jof250:*), Bash(ls:*), Bash(cat:*), Bash(mkdir:*), Read, Glob, Grep | |
| 379 | +allowed-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, Grep | |
| 380 | 380 | |
| 381 | 381 | --- |
| 382 | 382 | |
| 383 | −Parse `\$ARGUMENTS` as `\textless{}paper-path\textgreater{} [--section \textless{}name\textgreater{}] [--condition X]` (defaults: introduction, E\_full\_engine). Run `/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/methodes/wp45-jof250/.venv/bin/jof250 write --paper \textless{}path\textgreater{} --section \textless{}name\textgreater{} --mode write --condition \textless{}X\textgreater{} --output \textless{}paper-path\textgreater{}/jof250\_proposals/\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. | |
| 383 | +Parse `\$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. | |
| 384 | 384 | |
| 385 | 385 | \end{quote} |
modified
paper/figures/fig_abstract_moves.pdf
+0 −0
Binary file not shown.
modified
paper/figures/fig_contribution_position.pdf
+0 −0
Binary file not shown.
modified
paper/figures/fig_moves_robustness.pdf
+0 −0
Binary file not shown.
modified
paper/figures/fig_structure_distributions.pdf
+0 −0
Binary file not shown.
modified
paper/sections/architecture.tex
+28 −28
@@ -14,24 +14,24 @@ JoF-250 is a local-first pipeline implemented as a Python package (\texttt{jof25 | ||
| 14 | 14 | \begin{table}[htbp] |
| 15 | 15 | \centering |
| 16 | 16 | \small |
| 17 | −\caption{Pipeline stages of JoF-250. Modules are in \texttt{src/jof250/}; artefacts marked \textit{private} are excluded from version control.} | |
| 17 | +\caption{Pipeline stages of JoF-250. Modules are in \texttt{src/\allowbreak{}jof250/\allowbreak{}}; artefacts marked \textit{private} are excluded from version control.} | |
| 18 | 18 | \label{tab:pipeline} |
| 19 | 19 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.17\linewidth}>{\raggedright\arraybackslash}p{0.21\linewidth}X} |
| 20 | 20 | \toprule |
| 21 | 21 | Stage (module) & Input & Output / artefacts \\ |
| 22 | 22 | \midrule |
| 23 | −Inventory (\texttt{inventory}) & PDF folder, \texttt{index.csv}, Crossref & \texttt{corpus\_manifest.parquet}, \texttt{corpus\_audit.md}, frozen manifest, inventory ledger \\ | |
| 24 | −Extraction (\texttt{parsing}) & included PDFs & one structured JSON per document (\textit{private}), \texttt{parse\_summary.parquet}, parse ledger \\ | |
| 23 | +Inventory (\texttt{inventory}) & PDF folder, \texttt{index.\allowbreak{}csv}, Crossref & \texttt{corpus\_\allowbreak{}manifest.\allowbreak{}parquet}, \texttt{corpus\_\allowbreak{}audit.\allowbreak{}md}, frozen manifest, inventory ledger \\ | |
| 24 | +Extraction (\texttt{parsing}) & included PDFs & one structured JSON per document (\textit{private}), \texttt{parse\_\allowbreak{}summary.\allowbreak{}parquet}, parse ledger \\ | |
| 25 | 25 | Segmentation (\texttt{segmentation}) & parsed JSON & rule-based section roles; bounded annotation payload (rights cap) \\ |
| 26 | −Annotation (\texttt{rhetoric}, \texttt{llm}) & payload, prompt v1.0, Claude API & schema-validated annotation per document, \texttt{annotations\_table.parquet}, API ledger, response cache \\ | |
| 27 | −Splits (\texttt{scripts/03}) & manifest & \texttt{heldout\_v1.json} (train / held-out document identifiers) \\ | |
| 28 | −Profiles (\texttt{features}) & parsed JSON, annotations, train split & \texttt{profiles/*.yaml}, \texttt{features.parquet}, figures \\ | |
| 29 | −Index (\texttt{embeddings}) & parsed JSON, annotations & \texttt{units.parquet}, \texttt{embeddings.npy}, \texttt{index\_meta.json}, 8-gram shingles \\ | |
| 26 | +Annotation (\texttt{rhetoric}, \texttt{llm}) & payload, prompt v1.0, Claude API & schema-validated annotation per document, \texttt{annotations\_\allowbreak{}table.\allowbreak{}parquet}, API ledger, response cache \\ | |
| 27 | +Splits (\texttt{scripts/\allowbreak{}03}) & manifest & \texttt{heldout\_\allowbreak{}v1.\allowbreak{}json} (train / held-out document identifiers) \\ | |
| 28 | +Profiles (\texttt{features}) & parsed JSON, annotations, train split & \texttt{profiles/\allowbreak{}*.\allowbreak{}yaml}, \texttt{features.\allowbreak{}parquet}, figures \\ | |
| 29 | +Index (\texttt{embeddings}) & parsed JSON, annotations & \texttt{units.\allowbreak{}parquet}, \texttt{embeddings.\allowbreak{}npy}, \texttt{index\_\allowbreak{}meta.\allowbreak{}json}, 8-gram shingles \\ | |
| 30 | 30 | Retrieval (\texttt{retrieval}) & query, filters & ranked units with provenance \\ |
| 31 | 31 | Engine (\texttt{generation}) & manuscript, profile, retrieved units, Claude API & proposal file, report (change log, flags, audit, diff), engine-run ledger \\ |
| 32 | 32 | Audits (\texttt{auditing}) & manuscript, bibliography, Crossref & deterministic audit report; evidence lookup \\ |
| 33 | −Evaluation (\texttt{evaluation}) & fixtures, protocol, Claude API & \texttt{runs.jsonl}, \texttt{judgments.jsonl}, \texttt{summary.json} \\ | |
| 34 | −Integration (\texttt{integrations.claude\_code}) & command, agent and skill definitions & \texttt{.claude/\{commands,agents,skills\}} (project scope) or \texttt{\textasciitilde/.claude/} (user scope, on request) \\ | |
| 33 | +Evaluation (\texttt{evaluation}) & fixtures, protocol, Claude API & \texttt{runs.\allowbreak{}jsonl}, \texttt{judgments.\allowbreak{}jsonl}, \texttt{summary.\allowbreak{}json} \\ | |
| 34 | +Integration (\texttt{integrations.\allowbreak{}claude\_\allowbreak{}code}) & command, agent and skill definitions & \texttt{.\allowbreak{}claude/\allowbreak{}\{commands,agents,skills\}} (project scope) or \texttt{\textasciitilde/\allowbreak{}.\allowbreak{}claude/\allowbreak{}} (user scope, on request) \\ | |
| 35 | 35 | \bottomrule |
| 36 | 36 | \end{tabularx} |
| 37 | 37 | \end{table} |
@@ -39,21 +39,21 @@ Integration (\texttt{integrations.claude\_code}) & command, agent and skill defi | ||
| 39 | 39 | \subsection{Measured writing profiles} |
| 40 | 40 | \label{sec:arch-profiles} |
| 41 | 41 | |
| 42 | −A profile is a YAML file that records, for a named subset of the training split, the empirical distribution of structural and rhetorical features. The structural features are computed from the parsed documents (\texttt{features.py}): page count; words in the body and in the appendix; abstract words; numbers of sections, subsections, paragraphs, equations, tables, figures, footnotes, reference entries, and in-text citations; words and paragraphs of the introduction and its share of the body; words and share of the conclusion; the body shares of sections whose rule-based role is theory, data, results, or robustness; words per table; references and equations per thousand words; and indicator variables for the presence of a robustness section, a separate literature section, an in-text appendix, and an Internet Appendix. For each numeric feature the profile stores the sample size, median, quartiles, mean, minimum, maximum, and a 95\% bootstrap interval for the median (500 resamples, seed 45). When the subset contains annotated documents, a \texttt{rhetoric} block adds the distribution of genres, subfields, and methods; the share of abstracts in which each of the six abstract moves is present, and the median sentence position of each; the number of abstract sentences; the distribution of the first introduction move and of the most common move sequences (consecutive duplicates collapsed); the position of the contribution paragraph, absolute and relative to the length of the introduction; the share of introductions with a roadmap according to the model and according to the regular expression; the location of literature positioning; contribution types; the causal-language score; results-presentation conventions; robustness location and types; standard-error and unit conventions in table notes; uncertainty in figures; the conclusion flags; hedging; the share of claims with a stated evidence type; and, as diagnostics, the model--rule role agreement and the model's own confidence. | |
| 42 | +A profile is a YAML file that records, for a named subset of the training split, the empirical distribution of structural and rhetorical features. The structural features are computed from the parsed documents (\texttt{features.\allowbreak{}py}): page count; words in the body and in the appendix; abstract words; numbers of sections, subsections, paragraphs, equations, tables, figures, footnotes, reference entries, and in-text citations; words and paragraphs of the introduction and its share of the body; words and share of the conclusion; the body shares of sections whose rule-based role is theory, data, results, or robustness; words per table; references and equations per thousand words; and indicator variables for the presence of a robustness section, a separate literature section, an in-text appendix, and an Internet Appendix. For each numeric feature the profile stores the sample size, median, quartiles, mean, minimum, maximum, and a 95\% bootstrap interval for the median (500 resamples, seed 45). When the subset contains annotated documents, a \texttt{rhetoric} block adds the distribution of genres, subfields, and methods; the share of abstracts in which each of the six abstract moves is present, and the median sentence position of each; the number of abstract sentences; the distribution of the first introduction move and of the most common move sequences (consecutive duplicates collapsed); the position of the contribution paragraph, absolute and relative to the length of the introduction; the share of introductions with a roadmap according to the model and according to the regular expression; the location of literature positioning; contribution types; the causal-language score; results-presentation conventions; robustness location and types; standard-error and unit conventions in table notes; uncertainty in figures; the conclusion flags; hedging; the share of claims with a stated evidence type; and, as diagnostics, the model--rule role agreement and the model's own confidence. | |
| 43 | 43 | |
| 44 | −Profiles are stratified by selection rules on genre and subfield (Appendix~\ref{app:profiles}): an all-document profile (\texttt{corpus\_all}), an all-empirical profile, and subfield profiles for empirical asset pricing, corporate finance, financial intermediation and banking, household and behavioural finance, financial econometrics, and theoretical finance. Because the subfield of a document is an annotation output, the subfield profiles are populated only as the annotation run progresses, and the engine falls back from a subfield profile with fewer than eight documents to the all-empirical profile and then to the all-document profile. Every profile file carries the same caveat in its header, which the engine repeats to the model in every prompt that uses a profile: observed frequencies describe what published articles did in 2017--2020; they are not evidence that these choices are editorially superior or required. The point is not rhetorical modesty. A convention can be frequent because it is useful, because it is enforced, or because it is habitual, and a corpus of accepted articles cannot distinguish these cases; the profiles are offered as a measured description that an author can consult and deviate from, and the engine's prompts ask the model to say when it deviates. | |
| 44 | +Profiles are stratified by selection rules on genre and subfield (Appendix~\ref{app:profiles}): an all-document profile (\texttt{corpus\_\allowbreak{}all}), an all-empirical profile, and subfield profiles for empirical asset pricing, corporate finance, financial intermediation and banking, household and behavioural finance, financial econometrics, and theoretical finance. Because the subfield of a document is an annotation output, the subfield profiles are populated only as the annotation run progresses, and the engine falls back from a subfield profile with fewer than eight documents to the all-empirical profile and then to the all-document profile. Every profile file carries the same caveat in its header, which the engine repeats to the model in every prompt that uses a profile: observed frequencies describe what published articles did in 2017--2020; they are not evidence that these choices are editorially superior or required. The point is not rhetorical modesty. A convention can be frequent because it is useful, because it is enforced, or because it is habitual, and a corpus of accepted articles cannot distinguish these cases; the profiles are offered as a measured description that an author can consult and deviate from, and the engine's prompts ask the model to say when it deviates. | |
| 45 | 45 | |
| 46 | 46 | \subsection{Private hybrid retrieval} |
| 47 | 47 | \label{sec:arch-retrieval} |
| 48 | 48 | |
| 49 | −The retrieval index (\texttt{embeddings.py}, \texttt{retrieval.py}) is built from \emph{units} rather than from passages of full text. Seven unit types are indexed. Four are derived from the annotations and contain no quoted text: a document summary (title, genre, subfield, method, the annotator's structural summary, and keywords), an identification summary (estimand, strategy, assumptions, threats, causal-language score), one claim--evidence unit per annotated claim, and one introduction-move unit per introduction paragraph with at least one annotated move. Three contain short excerpts capped at 400 characters, which the rights policy permits: the opening of each section with its role, length, and subsection headings; the title and notes of each table; and figure captions (at most eight per document). Each unit records the document identifier, the SHA-256 digest of the source PDF, DOI, year, title, article type, page, section, role, genre, subfield, method, the annotator's confidence, and the split of the document. The current index holds \idxUnits{} units from \idxDocs{} documents (\idxDocsAnn{} with an annotation): \idxUnitSectionOpening{} section openings, \idxUnitTableNotes{} table-note units, \idxUnitFigureCaption{} captions, \idxUnitIntroMove{} introduction-move units, \idxUnitClaimEvidence{} claim--evidence units, and \idxUnitDocumentSummary{} document summaries and \idxUnitIdentification{} identification summaries; the annotation-derived counts will grow with the full annotation run. | |
| 49 | +The retrieval index (\texttt{embeddings.\allowbreak{}py}, \texttt{retrieval.\allowbreak{}py}) is built from \emph{units} rather than from passages of full text. Seven unit types are indexed. Four are derived from the annotations and contain no quoted text: a document summary (title, genre, subfield, method, the annotator's structural summary, and keywords), an identification summary (estimand, strategy, assumptions, threats, causal-language score), one claim--evidence unit per annotated claim, and one introduction-move unit per introduction paragraph with at least one annotated move. Three contain short excerpts capped at 400 characters, which the rights policy permits: the opening of each section with its role, length, and subsection headings; the title and notes of each table; and figure captions (at most eight per document). Each unit records the document identifier, the SHA-256 digest of the source PDF, DOI, year, title, article type, page, section, role, genre, subfield, method, the annotator's confidence, and the split of the document. The current index holds \idxUnits{} units from \idxDocs{} documents (\idxDocsAnn{} with an annotation): \idxUnitSectionOpening{} section openings, \idxUnitTableNotes{} table-note units, \idxUnitFigureCaption{} captions, \idxUnitIntroMove{} introduction-move units, \idxUnitClaimEvidence{} claim--evidence units, and \idxUnitDocumentSummary{} document summaries and \idxUnitIdentification{} identification summaries; the annotation-derived counts will grow with the full annotation run. | |
| 50 | 50 | |
| 51 | 51 | Queries are scored by a hybrid of BM25 \citep{TODOKEY-bm25-robertson} over a simple alphanumeric tokenisation and cosine similarity between normalised embeddings computed locally with a MiniLM sentence encoder \citep{TODOKEY-reimers-sbert, TODOKEY-wang-minilm} of dimension \idxDim{}; the two scores are min--max normalised within the filtered candidate set and combined with equal weight (the weight, and pure BM25 or pure dense modes, are parameters). Metadata filters restrict the candidates by split (training only by default), year, genre, subfield, section role or heading, and unit type; the \texttt{annotation} unit filter selects the four structural unit types and the \texttt{raw} filter the three excerpt types, which is how the conventional-RAG and structured-retrieval conditions of Section~\ref{sec:design} are distinguished. To avoid a single article dominating the context, at most two units per document are returned. Every hit carries its provenance record, which the engine writes into its reports so that a user can trace any retrieved pattern to a document, page, and section. |
| 52 | 52 | |
| 53 | 53 | \subsection{The writing engine} |
| 54 | 54 | \label{sec:arch-engine} |
| 55 | 55 | |
| 56 | −The engine (\texttt{generation.py}) operates on a manuscript directory or file. The loader (\texttt{auditing.load\_manuscript}) accepts LaTeX projects, locating \texttt{paper/main.tex} or \texttt{main.tex}, stripping comments, resolving \texttt{\textbackslash input} and \texttt{\textbackslash include} recursively, reading the UQO template's \texttt{\textbackslash WP\ldots} metadata macros, splitting the text into sections and subsections, and extracting tables, figures, equations, labels, cross-references, and citation commands; it also scans the project's BibTeX files for keys and DOIs. Markdown manuscripts are accepted with the same section logic. Each section receives a rule-based role (introduction, literature, theory, data, empirical design, results, robustness, conclusion, appendix) so that a request for ``the results section'' can be resolved against arbitrary headings. A cheap lexical heuristic then detects the manuscript's genre (theoretical versus empirical) and subfield from the title, abstract, and headings, without an API call, and the profile is selected by the rules of Section~\ref{sec:arch-profiles}; the user may override the profile. For manuscripts outside the corpus's core genre (theory, methods, computer science, real estate), the engine injects a genre note instructing the model to apply the corpus conventions only where the argument structure is comparable and to say in the change log which conventions it did not apply. | |
| 56 | +The engine (\texttt{generation.\allowbreak{}py}) operates on a manuscript directory or file. The loader (\texttt{auditing.\allowbreak{}load\_\allowbreak{}manuscript}) accepts LaTeX projects, locating \texttt{paper/\allowbreak{}main.\allowbreak{}tex} or \texttt{main.\allowbreak{}tex}, stripping comments, resolving \texttt{\textbackslash input} and \texttt{\textbackslash include} recursively, reading the UQO template's \texttt{\textbackslash WP\ldots} metadata macros, splitting the text into sections and subsections, and extracting tables, figures, equations, labels, cross-references, and citation commands; it also scans the project's BibTeX files for keys and DOIs. Markdown manuscripts are accepted with the same section logic. Each section receives a rule-based role (introduction, literature, theory, data, empirical design, results, robustness, conclusion, appendix) so that a request for ``the results section'' can be resolved against arbitrary headings. A cheap lexical heuristic then detects the manuscript's genre (theoretical versus empirical) and subfield from the title, abstract, and headings, without an API call, and the profile is selected by the rules of Section~\ref{sec:arch-profiles}; the user may override the profile. For manuscripts outside the corpus's core genre (theory, methods, computer science, real estate), the engine injects a genre note instructing the model to apply the corpus conventions only where the argument structure is comparable and to say in the change log which conventions it did not apply. | |
| 57 | 57 | |
| 58 | 58 | The material handed to the model is bounded to 60,000 characters: title, abstract, metadata, an optional verified research brief, the list of sections with roles and lengths, the current text of the target section (up to 12,000 characters, or a note that it is absent), the other sections truncated proportionally, the captions and number counts of up to twenty tables, up to twenty equations, and the list of available BibTeX keys. The task is one of three modes: \emph{outline} (a paragraph-by-paragraph plan with the rhetorical move and the evidence of each paragraph), \emph{write}, or \emph{upgrade} (rewrite an existing section preserving every number, citation, claim, and result). Conditions A to E of the experimental design are implemented as prompt families (Appendix~\ref{app:prompts}) that share one system prompt with hard constraints (never invent results, numbers, or citations; use only listed BibTeX keys or a visible \texttt{\textbackslash todo} placeholder; preserve verified facts; never copy sentences or imitate an author; return the section text followed by a change log and a list of flags). Condition A adds a one-line instruction; B a strong academic-writing instruction; C adds six raw excerpts retrieved by similarity from the training split; D adds the profile summary (sample size, caveat, length medians, abstract and introduction move patterns, contribution placement, identification, results, robustness, table and conclusion conventions) together with six structured units with provenance, and a four-step procedure (identify what the evidence supports, choose the sequence of moves and state it in the change log, write, list unsupported statements under flags). Condition E, the default engine, runs D and then two further stages: a deterministic audit of the draft (numeric preservation against the material, citation keys against the bibliography, unsupported-claim sentences, and eight-word overlap with the corpus), and a specialist-referee pass in which the model receives the material, the draft, and the audit and must return a revised draft that fixes every audit item while keeping every verified fact, strengthening the methodological framing, and replacing unsupported statements with placeholders. The audit is re-run on the revised text. Ablations of E switch off retrieval, the profile, the referee pass, or the fact-check individually. |
| 59 | 59 | |
@@ -62,33 +62,33 @@ The engine never edits the manuscript. Its output is a new file whose header rec | ||
| 62 | 62 | \subsection{Reviews, audits, and evidence lookup} |
| 63 | 63 | \label{sec:arch-audits} |
| 64 | 64 | |
| 65 | −Three further commands reuse the loader. \texttt{jof250 review} produces role-based reviews from five prompts (referee, writing editor, table-and-figure editor, citation and integrity auditor, replication auditor; Appendix~\ref{app:prompts}); each receives the manuscript material, the deterministic audit facts, and, by default, the measured conventions of the selected profile with the genre note, and is instructed to tie every comment to a section, table, or equation and to leave every number unchanged. \texttt{jof250 audit} makes no API call: it checks that tables have captions and notes and are referenced, that labelled equations and figures are referenced and that every cross-reference resolves, that every citation key exists in the bibliography, and that the DOIs in the bibliography resolve through Crossref (cached, at most sixty per run); it lists sentences with strong claim verbs that carry no citation, cross-reference, number, or hedge; and it reports the maximum share of the manuscript's eight-word shingles found in any single corpus document, computed from locally stored hashes. The limits of these checks are stated in \texttt{docs/LIMITATIONS.md}: numeric preservation compares sets of numbers, not their meaning; unsupported-claim detection is a lexical heuristic; and citation verification establishes that a key and a DOI exist, not that the cited work supports the claim. \texttt{jof250 evidence} locates, for a claim given as text, the tables whose bodies contain the claim's numbers or keywords and the sentences that mention them, and returns a status of supported by a table, mentioned in text, or no evidence found. | |
| 65 | +Three further commands reuse the loader. \texttt{jof250 review} produces role-based reviews from five prompts (referee, writing editor, table-and-figure editor, citation and integrity auditor, replication auditor; Appendix~\ref{app:prompts}); each receives the manuscript material, the deterministic audit facts, and, by default, the measured conventions of the selected profile with the genre note, and is instructed to tie every comment to a section, table, or equation and to leave every number unchanged. \texttt{jof250 audit} makes no API call: it checks that tables have captions and notes and are referenced, that labelled equations and figures are referenced and that every cross-reference resolves, that every citation key exists in the bibliography, and that the DOIs in the bibliography resolve through Crossref (cached, at most sixty per run); it lists sentences with strong claim verbs that carry no citation, cross-reference, number, or hedge; and it reports the maximum share of the manuscript's eight-word shingles found in any single corpus document, computed from locally stored hashes. The limits of these checks are stated in \texttt{docs/\allowbreak{}LIMITATIONS.\allowbreak{}md}: numeric preservation compares sets of numbers, not their meaning; unsupported-claim detection is a lexical heuristic; and citation verification establishes that a key and a DOI exist, not that the cited work supports the claim. \texttt{jof250 evidence} locates, for a claim given as text, the tables whose bodies contain the claim's numbers or keywords and the sentences that mention them, and returns a status of supported by a table, mentioned in text, or no evidence found. | |
| 66 | 66 | |
| 67 | 67 | \subsection{Claude Code integration} |
| 68 | 68 | \label{sec:arch-claude-code} |
| 69 | 69 | |
| 70 | −The host ran Claude Code version 2.1.317, which supports project-scoped slash commands as Markdown files with YAML front matter under \texttt{.claude/commands/}, sub-agents under \texttt{.claude/agents/}, and skills under \texttt{.claude/skills/}. The integration module generates these files from a single source of truth (\texttt{integrations/claude\_code.py}) so that the project copy and an optional user-scope copy cannot drift. Ten commands are installed (Table~\ref{tab:commands}): status, corpus audit, profile explanation, outline, write, review, upgrade, audit, evidence, and benchmark. The installed version passes the raw text typed after a command to the command file as \texttt{\$ARGUMENTS}; rather than relying on a parser that the version does not provide, each command file instructs the assistant how to parse its arguments (for example, \texttt{<paper-path> [--section <name>] [--condition X]}, with stated defaults), which CLI invocation to run, which output files to read, and what to show the user. The front matter restricts the tools each command may use to the project's CLI binary, a few read-only shell utilities, and file reading and searching, and the command bodies state that the manuscript is never modified and that proposals go to a \texttt{jof250\_proposals/} or \texttt{jof250\_reviews/} folder inside the user's paper directory. Seven specialist agents (Table~\ref{tab:agents}) wrap the review and audit commands with role-specific instructions and declared models; a skill file describes the engine, its rules for the assistant (always pass an explicit output path, relay every flag and audit item, state which conventions do not apply to non-finance manuscripts, warn that API calls cost money), and how to repair a missing environment. The project-scope installation is the default; because the author asked that the commands be available in every session, the CLI also offers a user-scope installation that copies only the files prefixed \texttt{jof-} or named \texttt{jof250} into the user's Claude Code directory and touches nothing else there, with documented removal. The commands were exercised from a separate sample research repository, as the mandate requires; the results of those exercises are reported with the engineering tests, not as experimental findings. | |
| 70 | +The host ran Claude Code version 2.1.317, which supports project-scoped slash commands as Markdown files with YAML front matter under \texttt{.\allowbreak{}claude/\allowbreak{}commands/\allowbreak{}}, sub-agents under \texttt{.\allowbreak{}claude/\allowbreak{}agents/\allowbreak{}}, and skills under \texttt{.\allowbreak{}claude/\allowbreak{}skills/\allowbreak{}}. The integration module generates these files from a single source of truth (\texttt{integrations/\allowbreak{}claude\_\allowbreak{}code.\allowbreak{}py}) so that the project copy and an optional user-scope copy cannot drift. Ten commands are installed (Table~\ref{tab:commands}): status, corpus audit, profile explanation, outline, write, review, upgrade, audit, evidence, and benchmark. The installed version passes the raw text typed after a command to the command file as \texttt{\$ARGUMENTS}; rather than relying on a parser that the version does not provide, each command file instructs the assistant how to parse its arguments (for example, \texttt{<paper-path> [--section <name>] [--condition X]}, with stated defaults), which CLI invocation to run, which output files to read, and what to show the user. The front matter restricts the tools each command may use to the project's CLI binary, a few read-only shell utilities, and file reading and searching, and the command bodies state that the manuscript is never modified and that proposals go to a \texttt{jof250\_\allowbreak{}proposals/\allowbreak{}} or \texttt{jof250\_\allowbreak{}reviews/\allowbreak{}} folder inside the user's paper directory. Seven specialist agents (Table~\ref{tab:agents}) wrap the review and audit commands with role-specific instructions and declared models; a skill file describes the engine, its rules for the assistant (always pass an explicit output path, relay every flag and audit item, state which conventions do not apply to non-finance manuscripts, warn that API calls cost money), and how to repair a missing environment. The project-scope installation is the default; because the author asked that the commands be available in every session, the CLI also offers a user-scope installation that copies only the files prefixed \texttt{jof-} or named \texttt{jof250} into the user's Claude Code directory and touches nothing else there, with documented removal. The commands were exercised from a separate sample research repository, as the mandate requires; the results of those exercises are reported with the engineering tests, not as experimental findings. | |
| 71 | 71 | |
| 72 | 72 | \begin{table}[htbp]\centering\small |
| 73 | −\caption{Slash commands installed under \texttt{.claude/commands/} and the CLI call each one wraps.} | |
| 73 | +\caption{Slash commands installed under \texttt{.\allowbreak{}claude/\allowbreak{}commands/\allowbreak{}} and the CLI call each one wraps.} | |
| 74 | 74 | \label{tab:commands} |
| 75 | 75 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.2\linewidth}>{\raggedright\arraybackslash}p{0.33\linewidth}X}\toprule |
| 76 | 76 | Command & Arguments & Purpose \\ \midrule |
| 77 | −\texttt{/jof-status} & \texttt{---} & Show JoF-250 pipeline status (corpus, parsing, annotations, profiles, index, spend) \\ | |
| 78 | −\texttt{/jof-corpus-audit} & \texttt{---} & Re-run the JoF corpus inventory/verification and summarize the audit \\ | |
| 79 | −\texttt{/jof-profile} & \texttt{[profile-name]} & Explain a measured JoF writing profile (empirical\_asset\_pricing, corporate\_finance, financial\_econometrics, theoretical\_finance, \ldots{}) \\ | |
| 80 | −\texttt{/jof-outline} & \texttt{\textless{}paper-path\textgreater{} --section \textless{}name\textgreater{}} & Propose a section outline for a manuscript using JoF-250 (profiles + structured retrieval) \\ | |
| 81 | −\texttt{/jof-write} & \texttt{\textless{}paper-path\textgreater{} --section \textless{}name\textgreater{} [--condition A|B|C|D|E]} & Draft a manuscript section with the full JoF-250 engine (profiles, structured retrieval, verification, specialist referee) \\ | |
| 82 | −\texttt{/jof-review} & \texttt{\textless{}paper-path\textgreater{} [--role referee|editor|table\_editor|integrity|replication] [--full]} & Produce a referee-style review of a manuscript (roles: referee, editor, table\_editor, integrity, replication) \\ | |
| 83 | −\texttt{/jof-upgrade} & \texttt{\textless{}paper-path\textgreater{} --section \textless{}name\textgreater{} [--preserve-results]} & Rewrite/upgrade an existing section while preserving every result, number and citation \\ | |
| 84 | −\texttt{/jof-audit} & \texttt{\textless{}paper-path\textgreater{} [--tables] [--equations]} & Deterministic manuscript audit: tables, equations, citations/DOIs, unsupported claims, corpus overlap \\ | |
| 85 | −\texttt{/jof-evidence} & \texttt{\textless{}paper-path\textgreater{} --claim ''...''} & Locate the evidence for a claim inside a manuscript (tables, numbers, sentences) \\ | |
| 86 | −\texttt{/jof-benchmark} & \texttt{[--protocol heldout\_v1] [--dry-run]} & Run (or dry-run) the preregistered JoF-250 evaluation protocol \\ | |
| 77 | +\texttt{/\allowbreak{}jof-status} & \texttt{---} & Show JoF-250 pipeline status (corpus, parsing, annotations, profiles, index, spend) \\ | |
| 78 | +\texttt{/\allowbreak{}jof-corpus-audit} & \texttt{---} & Re-run the JoF corpus inventory/verification and summarize the audit \\ | |
| 79 | +\texttt{/\allowbreak{}jof-profile} & \texttt{[profile-name]} & Explain a measured JoF writing profile (empirical\_asset\_pricing, corporate\_finance, financial\_econometrics, theoretical\_finance, \ldots{}) \\ | |
| 80 | +\texttt{/\allowbreak{}jof-outline} & \texttt{\textless{}paper-path\textgreater{} --section \textless{}name\textgreater{}} & Propose a section outline for a manuscript using JoF-250 (profiles + structured retrieval) \\ | |
| 81 | +\texttt{/\allowbreak{}jof-write} & \texttt{\textless{}paper-path\textgreater{} --section \textless{}name\textgreater{} [--condition A|B|C|D|E]} & Draft a manuscript section with the full JoF-250 engine (profiles, structured retrieval, verification, specialist referee) \\ | |
| 82 | +\texttt{/\allowbreak{}jof-review} & \texttt{\textless{}paper-path\textgreater{} [--role referee|editor|table\_\allowbreak{}editor|integrity|replication] [--full]} & Produce a referee-style review of a manuscript (roles: referee, editor, table\_editor, integrity, replication) \\ | |
| 83 | +\texttt{/\allowbreak{}jof-upgrade} & \texttt{\textless{}paper-path\textgreater{} --section \textless{}name\textgreater{} [--preserve-results]} & Rewrite/upgrade an existing section while preserving every result, number and citation \\ | |
| 84 | +\texttt{/\allowbreak{}jof-audit} & \texttt{\textless{}paper-path\textgreater{} [--tables] [--equations]} & Deterministic manuscript audit: tables, equations, citations/DOIs, unsupported claims, corpus overlap \\ | |
| 85 | +\texttt{/\allowbreak{}jof-evidence} & \texttt{\textless{}paper-path\textgreater{} --claim ''...''} & Locate the evidence for a claim inside a manuscript (tables, numbers, sentences) \\ | |
| 86 | +\texttt{/\allowbreak{}jof-benchmark} & \texttt{[--protocol heldout\_\allowbreak{}v1] [--dry-run]} & Run (or dry-run) the preregistered JoF-250 evaluation protocol \\ | |
| 87 | 87 | \bottomrule\end{tabularx} |
| 88 | 88 | \end{table} |
| 89 | 89 | |
| 90 | 90 | \begin{table}[htbp]\centering\small |
| 91 | −\caption{Specialist agents installed under \texttt{.claude/agents/} (frontmatter \texttt{model} field as declared).} | |
| 91 | +\caption{Specialist agents installed under \texttt{.\allowbreak{}claude/\allowbreak{}agents/\allowbreak{}} (frontmatter \texttt{model} field as declared).} | |
| 92 | 92 | \label{tab:agents} |
| 93 | 93 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.27\linewidth}lX}\toprule |
| 94 | 94 | Agent & Model & Role \\ \midrule |
@@ -105,4 +105,4 @@ Agent & Model & Role \\ \midrule | ||
| 105 | 105 | \subsection{Provenance, ledger, and budget} |
| 106 | 106 | \label{sec:arch-provenance} |
| 107 | 107 | |
| 108 | −Every API call goes through one wrapper (\texttt{llm.py}) that appends a record to \texttt{api\_ledger.jsonl} with the purpose, prompt identifier and version, model identifier as returned by the API, effort, input, output and cache token counts, cost computed from the list prices recorded in \texttt{config/models.yaml}, latency, stop reason, request identifier, cache key, and code version. Responses are cached by the hash of model, prompts, schema, effort, and output limit, so that re-running the annotation stage does not re-spend; generation and judging calls bypass the cache because nondeterminism is part of what the experiment measures. The wrapper refuses to place a call once cumulative spend reaches the budget cap fixed by amendment A-001 (\texttt{budget\_usd\_cap}), retries transient API errors with back-off, and records refusals. At the time of writing the ledger holds \apiCalls{} calls for \apiSpendUSD{}~USD, of which \apiSpendAnnotation{}~USD for annotation, \apiSpendWrite{}~USD for engine writing calls, and \apiSpendReferee{}~USD for referee passes. Engine invocations and benchmark runs are written to their own ledgers, and failed or refused runs are kept, not dropped. Together with the frozen manifest, the per-document hashes, the parser version stamped in every parsed file, and the seeds recorded in the split, profile, and fixture scripts, these ledgers allow every table and figure of this paper to be regenerated from recorded data by the commands listed in Appendix~\ref{app:reproducibility}. | |
| 108 | +Every API call goes through one wrapper (\texttt{llm.\allowbreak{}py}) that appends a record to \texttt{api\_\allowbreak{}ledger.\allowbreak{}jsonl} with the purpose, prompt identifier and version, model identifier as returned by the API, effort, input, output and cache token counts, cost computed from the list prices recorded in \texttt{config/\allowbreak{}models.\allowbreak{}yaml}, latency, stop reason, request identifier, cache key, and code version. Responses are cached by the hash of model, prompts, schema, effort, and output limit, so that re-running the annotation stage does not re-spend; generation and judging calls bypass the cache because nondeterminism is part of what the experiment measures. The wrapper refuses to place a call once cumulative spend reaches the budget cap fixed by amendment A-001 (\texttt{budget\_\allowbreak{}usd\_\allowbreak{}cap}), retries transient API errors with back-off, and records refusals. At the time of writing the ledger holds \apiCalls{} calls for \apiSpendUSD{}~USD, of which \apiSpendAnnotation{}~USD for annotation, \apiSpendWrite{}~USD for engine writing calls, and \apiSpendReferee{}~USD for referee passes. Engine invocations and benchmark runs are written to their own ledgers, and failed or refused runs are kept, not dropped. Together with the frozen manifest, the per-document hashes, the parser version stamped in every parsed file, and the seeds recorded in the split, profile, and fixture scripts, these ledgers allow every table and figure of this paper to be regenerated from recorded data by the commands listed in Appendix~\ref{app:reproducibility}. | |
modified
paper/sections/corpus.tex
+12 −12
@@ -11,16 +11,16 @@ | ||
| 11 | 11 | \subsection{Provenance and scope} |
| 12 | 12 | \label{sec:corpus-provenance} |
| 13 | 13 | |
| 14 | −The reference corpus consists of the research content of \emph{The Journal of Finance} (Wiley, on behalf of the American Finance Association), volumes 72 to 75, published between 2017 and 2020. The PDF files were obtained on 3 November 2026 through the library proxy of the Universit\'e du Qu\'ebec en Outaouais, under the institution's subscription and for the research use of a subscribing faculty member. The download produced one file per table-of-contents entry together with a bibliographic index (\texttt{index.csv}) listing, for each file, the title, authors, page range, publication date, DOI, table-of-contents section, year, volume and issue as displayed by the publisher. The original files are treated as read-only: no PDF is modified, moved, or redistributed, and the derived full-text structures described in Section~\ref{sec:extraction} are never committed to version control. | |
| 14 | +The reference corpus consists of the research content of \emph{The Journal of Finance} (Wiley, on behalf of the American Finance Association), volumes 72 to 75, published between 2017 and 2020. The PDF files were obtained on 3 November 2026 through the library proxy of the Universit\'e du Qu\'ebec en Outaouais, under the institution's subscription and for the research use of a subscribing faculty member. The download produced one file per table-of-contents entry together with a bibliographic index (\texttt{index.\allowbreak{}csv}) listing, for each file, the title, authors, page range, publication date, DOI, table-of-contents section, year, volume and issue as displayed by the publisher. The original files are treated as read-only: no PDF is modified, moved, or redistributed, and the derived full-text structures described in Section~\ref{sec:extraction} are never committed to version control. | |
| 15 | 15 | |
| 16 | −Two features of the scope deserve an explicit statement. First, the project is labelled ``JoF-250'' because the mandate anticipated roughly 250 articles from 2018--2020; the folder as delivered also contained volume 72 (2017), and we retained it because the sole substantive criterion of the design is that every document predates the public release of ChatGPT on 30 November 2022 (amendment A-002 in \texttt{docs/PROGRESS.md}). The label is therefore a name, not a count; the verified count is \nIncluded{} included documents. Second, ``pre-ChatGPT'' does not mean ``free of algorithmic writing assistance'': spelling and grammar tools, and in some cases earlier language models, were available to authors throughout the period. The corpus is best described as a sample of peer-reviewed finance writing produced before large language models became a routine drafting tool, not as a sample of unassisted human prose. | |
| 16 | +Two features of the scope deserve an explicit statement. First, the project is labelled ``JoF-250'' because the mandate anticipated roughly 250 articles from 2018--2020; the folder as delivered also contained volume 72 (2017), and we retained it because the sole substantive criterion of the design is that every document predates the public release of ChatGPT on 30 November 2022 (amendment A-002 in \texttt{docs/\allowbreak{}PROGRESS.\allowbreak{}md}). The label is therefore a name, not a count; the verified count is \nIncluded{} included documents. Second, ``pre-ChatGPT'' does not mean ``free of algorithmic writing assistance'': spelling and grammar tools, and in some cases earlier language models, were available to authors throughout the period. The corpus is best described as a sample of peer-reviewed finance writing produced before large language models became a routine drafting tool, not as a sample of unassisted human prose. | |
| 17 | 17 | |
| 18 | 18 | \subsection{Inventory and verification procedure} |
| 19 | 19 | \label{sec:corpus-inventory} |
| 20 | 20 | |
| 21 | −The inventory (\texttt{jof250 corpus audit}; module \texttt{inventory.py}) scans the corpus folder recursively, skipping the download tooling directory, and records for every file its relative path, size, and SHA-256 digest. Each PDF is then probed with PyMuPDF: a file is considered valid when it opens, has at least one page, and yields more than 50 characters of text over its first three pages. The three-page window is deliberate: presidential addresses open with a full-page portrait of the speaker, and a one-page test would have flagged them as broken. The probe also extracts the document's embedded metadata and searches the first three pages for a DOI of the form \texttt{10.1111/jofi.\textit{nnnnn}}. An early version of this search failed on a subset of files because the publisher's typesetting encodes the ligature ``fi'' as the single Unicode code point U+FB01, so that ``jofi'' did not match a plain ASCII pattern; all PDF text is now normalised with Unicode NFKC before any pattern matching, both in the inventory and in the parser. | |
| 21 | +The inventory (\texttt{jof250 corpus audit}; module \texttt{inventory.\allowbreak{}py}) scans the corpus folder recursively, skipping the download tooling directory, and records for every file its relative path, size, and SHA-256 digest. Each PDF is then probed with PyMuPDF: a file is considered valid when it opens, has at least one page, and yields more than 50 characters of text over its first three pages. The three-page window is deliberate: presidential addresses open with a full-page portrait of the speaker, and a one-page test would have flagged them as broken. The probe also extracts the document's embedded metadata and searches the first three pages for a DOI of the form \texttt{10.1111/\allowbreak{}jofi.\allowbreak{}\textit{nnnnn}}. An early version of this search failed on a subset of files because the publisher's typesetting encodes the ligature ``fi'' as the single Unicode code point U+FB01, so that ``jofi'' did not match a plain ASCII pattern; all PDF text is now normalised with Unicode NFKC before any pattern matching, both in the inventory and in the parser. | |
| 22 | 22 | |
| 23 | −The scanned records are joined to \texttt{index.csv} on the relative path, which attaches the publisher's bibliographic fields to every file. Every DOI is then verified against the Crossref public API (polite pool, cached locally so that the verification is reproducible offline). A record is marked \texttt{crossref\_ok} when the request returns status~200, the container title contains ``Journal of Finance'', and the fuzzy similarity between the index title and the Crossref title is at least 85 on a 0--100 scale. Missing metadata are never inferred: a file without a bibliographic record, or whose in-PDF DOI disagrees with the index DOI, is routed to a \texttt{review} decision rather than silently included. The final manifest (\texttt{corpus\_manifest.parquet}), the human-readable audit (\texttt{corpus\_audit.md}), and a frozen, hashed list of included documents (\texttt{corpus\_v1\_frozen.json}) are written together with an append-only inventory ledger. | |
| 23 | +The scanned records are joined to \texttt{index.\allowbreak{}csv} on the relative path, which attaches the publisher's bibliographic fields to every file. Every DOI is then verified against the Crossref public API (polite pool, cached locally so that the verification is reproducible offline). A record is marked \texttt{crossref\_\allowbreak{}ok} when the request returns status~200, the container title contains ``Journal of Finance'', and the fuzzy similarity between the index title and the Crossref title is at least 85 on a 0--100 scale. Missing metadata are never inferred: a file without a bibliographic record, or whose in-PDF DOI disagrees with the index DOI, is routed to a \texttt{review} decision rather than silently included. The final manifest (\texttt{corpus\_\allowbreak{}manifest.\allowbreak{}parquet}), the human-readable audit (\texttt{corpus\_\allowbreak{}audit.\allowbreak{}md}), and a frozen, hashed list of included documents (\texttt{corpus\_\allowbreak{}v1\_\allowbreak{}frozen.\allowbreak{}json}) are written together with an append-only inventory ledger. | |
| 24 | 24 | |
| 25 | 25 | \subsection{Inclusion and exclusion} |
| 26 | 26 | \label{sec:corpus-inclusion} |
@@ -32,7 +32,7 @@ Table~\ref{tab:corpus-counts} reports the outcome. Of \nFiles{} files scanned (\ | ||
| 32 | 32 | \begin{table}[htbp] |
| 33 | 33 | \centering |
| 34 | 34 | \small |
| 35 | −\caption{Corpus inventory: included documents by publication year and by article type. Source: \texttt{data/manifests/corpus\_audit.md}, generated by \texttt{jof250 corpus audit}.} | |
| 35 | +\caption{Corpus inventory: included documents by publication year and by article type. Source: \texttt{data/\allowbreak{}manifests/\allowbreak{}corpus\_\allowbreak{}audit.\allowbreak{}md}, generated by \texttt{jof250 corpus audit}.} | |
| 36 | 36 | \label{tab:corpus-counts} |
| 37 | 37 | \begin{tabular}{lr@{\hspace{3em}}lr} |
| 38 | 38 | \toprule |
@@ -47,30 +47,30 @@ Total & \nIncluded & Total & \nIncluded \\ | ||
| 47 | 47 | \bottomrule |
| 48 | 48 | \end{tabular} |
| 49 | 49 | \begin{minipage}{0.92\linewidth}\vspace{2pt}\footnotesize |
| 50 | −Notes: files scanned \nFiles{} (\nPDF{} PDFs); excluded \nExcluded{} (\texttt{index.csv} and the mislabelled AFA 2021 participant schedule); exact duplicates 0; Crossref-verified included records \nCrossrefOk{}; pages \pagesTotal{} (median \pagesMedian{}); size \sizeMB{}~MB. | |
| 50 | +Notes: files scanned \nFiles{} (\nPDF{} PDFs); excluded \nExcluded{} (\texttt{index.\allowbreak{}csv} and the mislabelled AFA 2021 participant schedule); exact duplicates 0; Crossref-verified included records \nCrossrefOk{}; pages \pagesTotal{} (median \pagesMedian{}); size \sizeMB{}~MB. | |
| 51 | 51 | \end{minipage} |
| 52 | 52 | \end{table} |
| 53 | 53 | |
| 54 | 54 | \subsection{Document-level split} |
| 55 | 55 | \label{sec:corpus-split} |
| 56 | 56 | |
| 57 | −Before any profile was computed or any prompt was tuned, the included documents were split at the document level into a training set and a held-out set (\texttt{data/splits/heldout\_v1.json}; script \texttt{03\_make\_splits.py}, seed 45). Within each (year, article type) stratum, 20\% of the documents were drawn at random into the held-out set, giving \nTrain{} training and \nHeldout{} held-out documents. Profiles (Section~\ref{sec:arch-profiles}) are built from the training set only, and the retrieval index records the split of every unit so that the writing engine can be restricted to training material. Author overlap between the two sets is measured and reported rather than eliminated: \nHeldoutAuthorOverlap{} of the \nHeldout{} held-out documents share at least one author surname with a training document. In a single-journal corpus with a dense co-authorship network, removing every such document would have left too few held-out articles to be useful; we therefore treat author overlap as a documented limitation of the split rather than a solved problem, and the preregistration (Section~\ref{sec:design}) states this explicitly. | |
| 57 | +Before any profile was computed or any prompt was tuned, the included documents were split at the document level into a training set and a held-out set (\texttt{data/\allowbreak{}splits/\allowbreak{}heldout\_\allowbreak{}v1.\allowbreak{}json}; script \texttt{03\_\allowbreak{}make\_\allowbreak{}splits.\allowbreak{}py}, seed 45). Within each (year, article type) stratum, 20\% of the documents were drawn at random into the held-out set, giving \nTrain{} training and \nHeldout{} held-out documents. Profiles (Section~\ref{sec:arch-profiles}) are built from the training set only, and the retrieval index records the split of every unit so that the writing engine can be restricted to training material. Author overlap between the two sets is measured and reported rather than eliminated: \nHeldoutAuthorOverlap{} of the \nHeldout{} held-out documents share at least one author surname with a training document. In a single-journal corpus with a dense co-authorship network, removing every such document would have left too few held-out articles to be useful; we therefore treat author overlap as a documented limitation of the split rather than a solved problem, and the preregistration (Section~\ref{sec:design}) states this explicitly. | |
| 58 | 58 | |
| 59 | 59 | \subsection{Rights policy and data exposure} |
| 60 | 60 | \label{sec:corpus-rights} |
| 61 | 61 | |
| 62 | −The policy is recorded in \texttt{config/rights.yaml} and \texttt{docs/RIGHTS\_AND\_ETHICS.md}. Three classes of material are distinguished. \emph{Private} material comprises the PDFs and the structured full texts produced by the parser (\texttt{data/derived/parsed/}); it stays on the author's machine, is excluded from version control, and is never redistributed or used for fine-tuning. \emph{Material sent to the API} for annotation is bounded: for one document and one call, the payload contains the abstract, the paragraphs of the introduction and of the conclusion, the heading and the first paragraph of every section, table titles with notes truncated to 350 characters, figure captions truncated to 300 characters, and section-level counts, with a hard cap of 60,000 characters per call enforced by trimming paragraphs from the middle of the introduction and conclusion. No full article is sent in a single call, no fine-tuning is performed, and every call is written to a ledger. \emph{Committed} material comprises metadata, counts, structural annotations, paraphrased summaries, aggregate profiles, and the retrieval index, whose textual units are capped at 400 characters so that the index cannot reconstruct a protected text. The engine is also instructed never to reuse sentences from the corpus, and every output is screened for eight-word overlap with the corpus (Section~\ref{sec:arch-audits}). None of this amounts to an endorsement by the journal or its publisher; the corpus is used as evidence about conventions, not as a style authority. | |
| 62 | +The policy is recorded in \texttt{config/\allowbreak{}rights.\allowbreak{}yaml} and \texttt{docs/\allowbreak{}RIGHTS\_\allowbreak{}AND\_\allowbreak{}ETHICS.\allowbreak{}md}. Three classes of material are distinguished. \emph{Private} material comprises the PDFs and the structured full texts produced by the parser (\texttt{data/\allowbreak{}derived/\allowbreak{}parsed/\allowbreak{}}); it stays on the author's machine, is excluded from version control, and is never redistributed or used for fine-tuning. \emph{Material sent to the API} for annotation is bounded: for one document and one call, the payload contains the abstract, the paragraphs of the introduction and of the conclusion, the heading and the first paragraph of every section, table titles with notes truncated to 350 characters, figure captions truncated to 300 characters, and section-level counts, with a hard cap of 60,000 characters per call enforced by trimming paragraphs from the middle of the introduction and conclusion. No full article is sent in a single call, no fine-tuning is performed, and every call is written to a ledger. \emph{Committed} material comprises metadata, counts, structural annotations, paraphrased summaries, aggregate profiles, and the retrieval index, whose textual units are capped at 400 characters so that the index cannot reconstruct a protected text. The engine is also instructed never to reuse sentences from the corpus, and every output is screened for eight-word overlap with the corpus (Section~\ref{sec:arch-audits}). None of this amounts to an endorsement by the journal or its publisher; the corpus is used as evidence about conventions, not as a style authority. | |
| 63 | 63 | |
| 64 | 64 | \subsection{Descriptive structural statistics} |
| 65 | 65 | \label{sec:corpus-descriptives} |
| 66 | 66 | |
| 67 | −Table~\ref{tab:corpus-structure} and Figure~\ref{fig:structure} summarise the structural statistics extracted by the parser of Section~\ref{sec:extraction}. Two sets of numbers are reported. The first column block gives medians over all \nIncluded{} included documents, as recorded in the parse summary; the second gives medians with interquartile ranges over the \profCorpusAllN{} training documents, as recorded in the \texttt{corpus\_all} profile, which is the quantity the writing engine actually consults. The two agree closely, as expected from a stratified random split. | |
| 67 | +Table~\ref{tab:corpus-structure} and Figure~\ref{fig:structure} summarise the structural statistics extracted by the parser of Section~\ref{sec:extraction}. Two sets of numbers are reported. The first column block gives medians over all \nIncluded{} included documents, as recorded in the parse summary; the second gives medians with interquartile ranges over the \profCorpusAllN{} training documents, as recorded in the \texttt{corpus\_\allowbreak{}all} profile, which is the quantity the writing engine actually consults. The two agree closely, as expected from a stratified random split. | |
| 68 | 68 | |
| 69 | −A typical included document has a body of \profCorpusAllNWordsBodyMed{} words (interquartile range \profCorpusAllNWordsBodyQa{}--\profCorpusAllNWordsBodyQb{}), an introduction of \profCorpusAllIntroWordsMed{} words in \profCorpusAllIntroParagraphsMed{} paragraphs, that is a \profCorpusAllIntroShareMed{} share of the body, \profCorpusAllNTablesMed{} tables, \parseMedianNFigures{} figures, \profCorpusAllNEquationsMed{} numbered equations, \profCorpusAllNReferencesMed{} reference entries, and \parseMedianNFootnotes{} footnotes; the abstract has \parseMedianAbstractWords{} words, which reflects the journal's abstract length limit, and the main text is divided into \parseMedianNSections{} roman-numbered sections. The conclusion is short, a \profCorpusAllConclusionShareMed{} share of the body. Minimum values of the distributions are driven by the corrigenda and the one-page replication notes, which the profiles retain for the \texttt{corpus\_all} aggregate but which are excluded by genre from the rhetoric profiles. We stress, here and wherever a profile is quoted, that these distributions describe what published articles did in 2017--2020; they are not evidence that any of these choices is editorially superior or required. | |
| 69 | +A typical included document has a body of \profCorpusAllNWordsBodyMed{} words (interquartile range \profCorpusAllNWordsBodyQa{}--\profCorpusAllNWordsBodyQb{}), an introduction of \profCorpusAllIntroWordsMed{} words in \profCorpusAllIntroParagraphsMed{} paragraphs, that is a \profCorpusAllIntroShareMed{} share of the body, \profCorpusAllNTablesMed{} tables, \parseMedianNFigures{} figures, \profCorpusAllNEquationsMed{} numbered equations, \profCorpusAllNReferencesMed{} reference entries, and \parseMedianNFootnotes{} footnotes; the abstract has \parseMedianAbstractWords{} words, which reflects the journal's abstract length limit, and the main text is divided into \parseMedianNSections{} roman-numbered sections. The conclusion is short, a \profCorpusAllConclusionShareMed{} share of the body. Minimum values of the distributions are driven by the corrigenda and the one-page replication notes, which the profiles retain for the \texttt{corpus\_\allowbreak{}all} aggregate but which are excluded by genre from the rhetoric profiles. We stress, here and wherever a profile is quoted, that these distributions describe what published articles did in 2017--2020; they are not evidence that any of these choices is editorially superior or required. | |
| 70 | 70 | |
| 71 | 71 | \begin{figure}[htbp] |
| 72 | 72 | \centering |
| 73 | −\IfFileExists{figures/fig_structure_distributions.pdf}{\includegraphics[width=\linewidth]{figures/fig_structure_distributions.pdf}}{\fbox{\parbox{0.9\linewidth}{\centering\small Figure \texttt{fig\_structure\_distributions.pdf} is produced by \texttt{jof250 profiles build}.}}} | |
| 73 | +\IfFileExists{figures/fig_structure_distributions.pdf}{\includegraphics[width=\linewidth]{figures/fig_structure_distributions.pdf}}{\fbox{\parbox{0.9\linewidth}{\centering\small Figure \texttt{fig\_\allowbreak{}structure\_\allowbreak{}distributions.\allowbreak{}pdf} is produced by \texttt{jof250 profiles build}.}}} | |
| 74 | 74 | \caption{Structural distributions of the training split (\profCorpusAllN{} documents): body words, tables, figures, numbered equations, reference entries, and introduction share of the body. The vertical line marks the median. Counts come from the heuristic PyMuPDF parser (Section~\ref{sec:extraction}); numbered-equation counts in particular are approximate. Held-out documents are not shown.} |
| 75 | 75 | \label{fig:structure} |
| 76 | 76 | \end{figure} |
@@ -78,7 +78,7 @@ A typical included document has a body of \profCorpusAllNWordsBodyMed{} words (i | ||
| 78 | 78 | \begin{table}[htbp] |
| 79 | 79 | \centering |
| 80 | 80 | \small |
| 81 | −\caption{Descriptive structural statistics of the corpus. Left block: medians over all \nIncluded{} included documents (\texttt{parse\_summary.parquet}). Right block: median and interquartile range over the \profCorpusAllN{} training documents (\texttt{profiles/corpus\_all.yaml}, structure block). Bootstrap 95\% intervals for the medians (500 resamples, seed 45) are stored in the profile file. Entries marked TODO await a macro in \texttt{numbers.tex}.} | |
| 81 | +\caption{Descriptive structural statistics of the corpus. Left block: medians over all \nIncluded{} included documents (\texttt{parse\_\allowbreak{}summary.\allowbreak{}parquet}). Right block: median and interquartile range over the \profCorpusAllN{} training documents (\texttt{profiles/\allowbreak{}corpus\_\allowbreak{}all.\allowbreak{}yaml}, structure block). Bootstrap 95\% intervals for the medians (500 resamples, seed 45) are stored in the profile file. Entries marked TODO await a macro in \texttt{numbers.\allowbreak{}tex}.} | |
| 82 | 82 | \label{tab:corpus-structure} |
| 83 | 83 | \begin{tabular}{lccc} |
| 84 | 84 | \toprule |
modified
paper/sections/design.tex
+20 −20
@@ -7,7 +7,7 @@ | ||
| 7 | 7 | \section{Experimental design, hypotheses, and preregistration} |
| 8 | 8 | \label{sec:design} |
| 9 | 9 | |
| 10 | −This section transcribes the preregistered protocol \texttt{heldout\_v1} (\texttt{experiments/preregistration.md}), which was frozen on 3 November 2026, before any benchmark run, at the code version recorded in the repository history. Any departure from it is logged as an amendment in \texttt{docs/PROGRESS.md}. No result is reported here; Sections~\ref{sec:results} to~\ref{sec:human} report only what was actually run. | |
| 10 | +This section transcribes the preregistered protocol \texttt{heldout\_\allowbreak{}v1} (\texttt{experiments/\allowbreak{}preregistration.\allowbreak{}md}), which was frozen on 3 November 2026, before any benchmark run, at the code version recorded in the repository history. Any departure from it is logged as an amendment in \texttt{docs/\allowbreak{}PROGRESS.\allowbreak{}md}. No result is reported here; Sections~\ref{sec:results} to~\ref{sec:human} report only what was actually run. | |
| 11 | 11 | |
| 12 | 12 | \subsection{Research question and hypotheses} |
| 13 | 13 | \label{sec:design-hypotheses} |
@@ -30,22 +30,22 @@ The five conditions form a ladder from a minimal prompt to the full engine, so t | ||
| 30 | 30 | \begin{table}[htbp] |
| 31 | 31 | \centering |
| 32 | 32 | \small |
| 33 | −\caption{Experimental conditions and ablations (\texttt{config/evaluation.yaml}; prompts in Appendix~\ref{app:prompts}). Retrieval is restricted to the training split.} | |
| 33 | +\caption{Experimental conditions and ablations (\texttt{config/\allowbreak{}evaluation.\allowbreak{}yaml}; prompts in Appendix~\ref{app:prompts}). Retrieval is restricted to the training split.} | |
| 34 | 34 | \label{tab:conditions} |
| 35 | 35 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.23\linewidth}X} |
| 36 | 36 | \toprule |
| 37 | 37 | Condition & Definition \\ |
| 38 | 38 | \midrule |
| 39 | 39 | A \texttt{baseline} & Shared system prompt; one-line instruction (``Write the \textit{section} of this paper''). \\ |
| 40 | −B \texttt{strong\_prompt} & A plus an experienced-economist writing instruction (question early, explicit contribution, closest prior work without a laundry list, preview of findings with magnitudes, proportionate claims, plain English, one idea per paragraph, manuscript's own notation and numbers). \\ | |
| 41 | −C \texttt{conventional\_rag} & B plus six raw excerpts (at most 400 characters each: section openings, table notes, captions) retrieved by hybrid similarity, presented as examples of tone and organisation only. \\ | |
| 42 | −D \texttt{profiles\_retrieval} & B plus the measured profile summary (sample size, caveat, length and move distributions, contribution placement, identification, results, robustness, table and conclusion conventions) and six structured rhetorical units with provenance; a four-step procedure (evidence, move sequence stated in the change log, draft, flags); genre note when applicable. \\ | |
| 43 | −E \texttt{full\_engine} & D plus a deterministic fact-check of the draft (numeric preservation, citation keys, unsupported claims, corpus overlap) and a specialist-referee revision pass that must fix every audit item while keeping every verified fact; the audit is re-run on the revised text. \\ | |
| 40 | +B \texttt{strong\_\allowbreak{}prompt} & A plus an experienced-economist writing instruction (question early, explicit contribution, closest prior work without a laundry list, preview of findings with magnitudes, proportionate claims, plain English, one idea per paragraph, manuscript's own notation and numbers). \\ | |
| 41 | +C \texttt{conventional\_\allowbreak{}rag} & B plus six raw excerpts (at most 400 characters each: section openings, table notes, captions) retrieved by hybrid similarity, presented as examples of tone and organisation only. \\ | |
| 42 | +D \texttt{profiles\_\allowbreak{}retrieval} & B plus the measured profile summary (sample size, caveat, length and move distributions, contribution placement, identification, results, robustness, table and conclusion conventions) and six structured rhetorical units with provenance; a four-step procedure (evidence, move sequence stated in the change log, draft, flags); genre note when applicable. \\ | |
| 43 | +E \texttt{full\_\allowbreak{}engine} & D plus a deterministic fact-check of the draft (numeric preservation, citation keys, unsupported claims, corpus overlap) and a specialist-referee revision pass that must fix every audit item while keeping every verified fact; the audit is re-run on the revised text. \\ | |
| 44 | 44 | \midrule |
| 45 | −E \texttt{no\_retrieval} & E without the six structured units. \\ | |
| 46 | −E \texttt{no\_profile} & E without the profile summary. \\ | |
| 47 | −E \texttt{no\_referee} & E without the referee pass (draft plus audit only). \\ | |
| 48 | −E \texttt{no\_factcheck} & E without the deterministic audit (the referee pass receives no audit). \\ | |
| 45 | +E \texttt{no\_\allowbreak{}retrieval} & E without the six structured units. \\ | |
| 46 | +E \texttt{no\_\allowbreak{}profile} & E without the profile summary. \\ | |
| 47 | +E \texttt{no\_\allowbreak{}referee} & E without the referee pass (draft plus audit only). \\ | |
| 48 | +E \texttt{no\_\allowbreak{}factcheck} & E without the deterministic audit (the referee pass receives no audit). \\ | |
| 49 | 49 | \bottomrule |
| 50 | 50 | \end{tabularx} |
| 51 | 51 | \end{table} |
@@ -58,20 +58,20 @@ The experimental unit is a task $\times$ source document $\times$ condition $\ti | ||
| 58 | 58 | \begin{table}[htbp] |
| 59 | 59 | \centering |
| 60 | 60 | \small |
| 61 | −\caption{Evaluation tasks (\texttt{evaluation.py}, \texttt{TASKS}). ``Mode'' is the engine mode; the brief is paraphrased. The published introduction is withheld from every finance fixture.} | |
| 61 | +\caption{Evaluation tasks (\texttt{evaluation.\allowbreak{}py}, \texttt{TASKS}). ``Mode'' is the engine mode; the brief is paraphrased. The published introduction is withheld from every finance fixture.} | |
| 62 | 62 | \label{tab:tasks} |
| 63 | 63 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.22\linewidth}>{\raggedright\arraybackslash}p{0.17\linewidth}lX} |
| 64 | 64 | \toprule |
| 65 | 65 | Task & Section role & Mode & Brief (summary) \\ |
| 66 | 66 | \midrule |
| 67 | −\texttt{draft\_introduction} & introduction & write & Draft the introduction from the verified material (abstract, section structure, tables, figures, references); no numbers beyond the material. \\ | |
| 68 | −\texttt{rewrite\_literature} & literature & upgrade & Rewrite a deterministically degraded ``laundry-list'' positioning passage into paragraphs that relate, differentiate, and build on the cited work, citing only works in the reference list. \\ | |
| 69 | −\texttt{explain\_specification} & empirical design & upgrade & Improve the explanation of the research design: estimand, identifying assumptions, fixed effects, inference, as stated; add no specification. \\ | |
| 70 | −\texttt{interpret\_results} & results & write & Interpret the main results from the tables' captions and notes and the stated facts; economic and statistical significance only as far as supported; never invent coefficients. \\ | |
| 71 | −\texttt{improve\_table} & results & upgrade & Propose an improved caption and notes for the first main regression table (sample, unit of observation, period, definitions, standard errors, significance conventions) without inventing values. \\ | |
| 72 | −\texttt{flag\_causal\_claims} & results & write & Identify every causal claim; classify as supported by the design, over-stated, or associational; name the design element that would support it; propose a bounded rewording. \\ | |
| 73 | −\texttt{referee\_report} & results & write & Referee report: summary, contribution, major comments (identification, inference, measurement, robustness, presentation), minor comments, recommendation; every comment tied to a section or table. \\ | |
| 74 | −\texttt{improve\_abstract} & abstract & upgrade & Improve the abstract without altering any finding, number, or claim; 100--150 words. \\ | |
| 67 | +\texttt{draft\_\allowbreak{}introduction} & introduction & write & Draft the introduction from the verified material (abstract, section structure, tables, figures, references); no numbers beyond the material. \\ | |
| 68 | +\texttt{rewrite\_\allowbreak{}literature} & literature & upgrade & Rewrite a deterministically degraded ``laundry-list'' positioning passage into paragraphs that relate, differentiate, and build on the cited work, citing only works in the reference list. \\ | |
| 69 | +\texttt{explain\_\allowbreak{}specification} & empirical design & upgrade & Improve the explanation of the research design: estimand, identifying assumptions, fixed effects, inference, as stated; add no specification. \\ | |
| 70 | +\texttt{interpret\_\allowbreak{}results} & results & write & Interpret the main results from the tables' captions and notes and the stated facts; economic and statistical significance only as far as supported; never invent coefficients. \\ | |
| 71 | +\texttt{improve\_\allowbreak{}table} & results & upgrade & Propose an improved caption and notes for the first main regression table (sample, unit of observation, period, definitions, standard errors, significance conventions) without inventing values. \\ | |
| 72 | +\texttt{flag\_\allowbreak{}causal\_\allowbreak{}claims} & results & write & Identify every causal claim; classify as supported by the design, over-stated, or associational; name the design element that would support it; propose a bounded rewording. \\ | |
| 73 | +\texttt{referee\_\allowbreak{}report} & results & write & Referee report: summary, contribution, major comments (identification, inference, measurement, robustness, presentation), minor comments, recommendation; every comment tied to a section or table. \\ | |
| 74 | +\texttt{improve\_\allowbreak{}abstract} & abstract & upgrade & Improve the abstract without altering any finding, number, or claim; 100--150 words. \\ | |
| 75 | 75 | \bottomrule |
| 76 | 76 | \end{tabularx} |
| 77 | 77 | \end{table} |
@@ -99,4 +99,4 @@ The generator and the judge are foundation models whose pretraining data may inc | ||
| 99 | 99 | \subsection{Human evaluation} |
| 100 | 100 | \label{sec:design-human} |
| 101 | 101 | |
| 102 | −Blind evaluation by qualified human reviewers was not available in this study. A rating protocol and rating sheets were prepared (\texttt{experiments/protocols/human\_rating\_sheet.md}): at least two PhD-level finance researchers, blind to condition, each rating all outputs of a (task, document) set in random order under random letters on the six primary dimensions plus a count of invented facts, with a joint calibration on two anchor sets, reliability measured by Krippendorff's $\alpha$ \citep{TODOKEY-krippendorff}, and disagreements above two points resolved by discussion while the original scores are kept for analysis. Until such ratings exist, every quality outcome of this paper is a model-judge rating and is labelled as such; the mandate's H1, which is phrased in terms of human ratings, remains untested in its original form. | |
| 102 | +Blind evaluation by qualified human reviewers was not available in this study. A rating protocol and rating sheets were prepared (\texttt{experiments/\allowbreak{}protocols/\allowbreak{}human\_\allowbreak{}rating\_\allowbreak{}sheet.\allowbreak{}md}): at least two PhD-level finance researchers, blind to condition, each rating all outputs of a (task, document) set in random order under random letters on the six primary dimensions plus a count of invented facts, with a joint calibration on two anchor sets, reliability measured by Krippendorff's $\alpha$ \citep{TODOKEY-krippendorff}, and disagreements above two points resolved by discussion while the original scores are kept for analysis. Until such ratings exist, every quality outcome of this paper is a model-judge rating and is labelled as such; the mandate's H1, which is phrased in terms of human ratings, remains untested in its original form. | |
modified
paper/sections/extraction_ontology.tex
+35 −35
@@ -14,9 +14,9 @@ The mandate asked that installed scientific PDF parsers be evaluated before one | ||
| 14 | 14 | \subsection{Layout heuristics} |
| 15 | 15 | \label{sec:extraction-heuristics} |
| 16 | 16 | |
| 17 | −The parser (\texttt{parsing.py}, version \texttt{pymupdf-jof-heuristics-1.3}) proceeds in two passes over the text lines of a document. Every line is first normalised (Unicode NFKC, removal of non-printable characters, unification of the minus sign) and tagged with its dominant span's font, size, bold and italic attributes, and whether the font belongs to a mathematical family. Lines in the running head, the publisher's download watermark (a very small Times font in the margin), bare page numbers near the foot of the page, and narrow vertical fragments are discarded. The \emph{body font size} is estimated as the modal size of lines set in the template's roman text font; all subsequent thresholds are expressed relative to it. | |
| 17 | +The parser (\texttt{parsing.\allowbreak{}py}, version \texttt{pymupdf-jof-heuristics-1.3}) proceeds in two passes over the text lines of a document. Every line is first normalised (Unicode NFKC, removal of non-printable characters, unification of the minus sign) and tagged with its dominant span's font, size, bold and italic attributes, and whether the font belongs to a mathematical family. Lines in the running head, the publisher's download watermark (a very small Times font in the margin), bare page numbers near the foot of the page, and narrow vertical fragments are discarded. The \emph{body font size} is estimated as the modal size of lines set in the template's roman text font; all subsequent thresholds are expressed relative to it. | |
| 18 | 18 | |
| 19 | −The front-matter pass identifies the title (bold lines at least 2.5 points larger than the body, on the first three pages), the author block (smaller non-bold lines between the title and the ``ABSTRACT'' marker), and the abstract (the small-type lines that follow the marker until body-size text resumes). The structural pass then walks the remaining lines and applies, in order, the following rules. A bold body-size line reading ``REFERENCES'' opens the reference list; a bold line beginning with ``Supporting Information'' records the page of the Internet Appendix pointer. Section headings are bold body-size lines that either begin with a roman numeral followed by a period (``\texttt{III.\ Data}'') or are centred on the page; headings beginning with ``Appendix'' switch the parser to appendix mode so that appendix words are counted separately. Subsection headings are italic body-size lines matching the template's ``\texttt{A.\ Title}'' pattern. Table captions are bold small-type lines matching ``\texttt{Table~\textit{roman}}'', followed by a bold title and small-type notes; landscape tables, whose lines are rotated by ninety degrees, are collected in a separate pass over rotated lines so that their captions and notes are not lost, and the ``Continued'' marker suppresses duplicate captions. Figure captions are bold-initial small-type lines matching ``\texttt{Figure~\textit{n}.}''; small-type lines located above a figure caption on the same page are treated as text inside the figure and ignored. Numbered equations are detected from their tag, a parenthesised number set flush with the right margin on a line in a mathematical or italic font or containing an operator; the equation text is reconstructed from the lines in the same vertical band. Footnotes are small-type lines in the lower part of the page, grouped into one footnote per leading number and per page. Reference entries are split using the hanging indent of the template: a line starting at the page's left margin begins a new entry, and each entry is parsed into an author string, a year, the remainder, and a DOI when present. Finally, body lines are grouped into paragraphs using the first-line indent, hyphenation across lines is repaired, and in-text author--year citations are collected with a regular expression. | |
| 19 | +The front-matter pass identifies the title (bold lines at least 2.5 points larger than the body, on the first three pages), the author block (smaller non-bold lines between the title and the ``ABSTRACT'' marker), and the abstract (the small-type lines that follow the marker until body-size text resumes). The structural pass then walks the remaining lines and applies, in order, the following rules. A bold body-size line reading ``REFERENCES'' opens the reference list; a bold line beginning with ``Supporting Information'' records the page of the Internet Appendix pointer. Section headings are bold body-size lines that either begin with a roman numeral followed by a period (``\texttt{III.\allowbreak{}\ Data}'') or are centred on the page; headings beginning with ``Appendix'' switch the parser to appendix mode so that appendix words are counted separately. Subsection headings are italic body-size lines matching the template's ``\texttt{A.\allowbreak{}\ Title}'' pattern. Table captions are bold small-type lines matching ``\texttt{Table~\textit{roman}}'', followed by a bold title and small-type notes; landscape tables, whose lines are rotated by ninety degrees, are collected in a separate pass over rotated lines so that their captions and notes are not lost, and the ``Continued'' marker suppresses duplicate captions. Figure captions are bold-initial small-type lines matching ``\texttt{Figure~\textit{n}.}''; small-type lines located above a figure caption on the same page are treated as text inside the figure and ignored. Numbered equations are detected from their tag, a parenthesised number set flush with the right margin on a line in a mathematical or italic font or containing an operator; the equation text is reconstructed from the lines in the same vertical band. Footnotes are small-type lines in the lower part of the page, grouped into one footnote per leading number and per page. Reference entries are split using the hanging indent of the template: a line starting at the page's left margin begins a new entry, and each entry is parsed into an author string, a year, the remainder, and a DOI when present. Finally, body lines are grouped into paragraphs using the first-line indent, hyphenation across lines is repaired, and in-text author--year citations are collected with a regular expression. | |
| 20 | 20 | |
| 21 | 21 | The output of the parser for one document is a JSON record holding the metadata, the abstract, the sections with their paragraphs and page numbers, subsections, equations, tables, figures, footnotes, references, in-text citations, page markers (references, appendix, supporting information), and summary counts; it is kept private because it contains the full text. |
| 22 | 22 | |
@@ -28,36 +28,36 @@ Each parsed document carries a confidence score per component and an overall sco | ||
| 28 | 28 | \subsection{Parser quality assurance} |
| 29 | 29 | \label{sec:extraction-qa} |
| 30 | 30 | |
| 31 | −The mandate called for a manually checked gold-standard sample. No human annotator other than the author was available in the time frame of this study, and we did not want to present the author's own inspection as an independent gold standard. We therefore report an \emph{automated cross-parser agreement} check (\texttt{scripts/02\_parser\_qa.py}, results in \texttt{data/derived/parser\_qa.md}, reproduced per document in Appendix~\ref{app:parser-qa}): the structural counts produced by the PyMuPDF parser are compared with counts obtained by regular expressions on the layout-preserving output of \texttt{pdftotext}, on a stratified sample of \qaNSample{} documents (five randomly chosen articles per year, seed 45, plus every document of a non-article type). This is a comparison between two automated extractions, each with its own failure modes; agreement between them is evidence that the counts are not artefacts of one tool, but it is not an accuracy figure against human judgement, and we do not describe it as such. | |
| 31 | +The mandate called for a manually checked gold-standard sample. No human annotator other than the author was available in the time frame of this study, and we did not want to present the author's own inspection as an independent gold standard. We therefore report an \emph{automated cross-parser agreement} check (\texttt{scripts/\allowbreak{}02\_\allowbreak{}parser\_\allowbreak{}qa.\allowbreak{}py}, results in \texttt{data/\allowbreak{}derived/\allowbreak{}parser\_\allowbreak{}qa.\allowbreak{}md}, reproduced per document in Appendix~\ref{app:parser-qa}): the structural counts produced by the PyMuPDF parser are compared with counts obtained by regular expressions on the layout-preserving output of \texttt{pdftotext}, on a stratified sample of \qaNSample{} documents (five randomly chosen articles per year, seed 45, plus every document of a non-article type). This is a comparison between two automated extractions, each with its own failure modes; agreement between them is evidence that the counts are not artefacts of one tool, but it is not an accuracy figure against human judgement, and we do not describe it as such. | |
| 32 | 32 | |
| 33 | 33 | On this sample, the number of roman-numbered sections agrees exactly for \qaSectionsExact\% of documents, the number of tables agrees exactly for \qaTablesExact\% and within one for \profval{qaTablesWithinOne}\%, the number of figures agrees exactly for \qaFiguresExact\%, and the number of reference entries agrees within 10\% for \profval{qaReferencesWithinTenPct}\%. The abstract is found by both tools in \qaAbstractAgree\% of documents. Numbered-equation counts are the weak point: exact agreement is reached for only \qaEquationsExact\% of documents and agreement within 10\% for \profval{qaEquationsWithinTenPct}\%, because the two tools disagree on what constitutes an equation tag (the regular expression on the layout text also matches enumerated items and footnote markers in parentheses at the end of a line, while the PyMuPDF parser requires a right-margin position and a mathematical font). Equation counts should therefore be read as approximate throughout the paper. As a corpus-wide check of the front matter, the title extracted by the parser matches the Crossref title with a fuzzy similarity of at least 90 for \profval{qaTitleVsCrossrefGeNinetyAllDocs}\% of the \qaTitleNAllDocs{} included documents. The per-document table in Appendix~\ref{app:parser-qa} shows that the worst disagreements are concentrated in corrigenda, whose reference lists and headings do not follow the article template. |
| 34 | 34 | |
| 35 | 35 | \subsection{Annotation ontology} |
| 36 | 36 | \label{sec:extraction-ontology} |
| 37 | 37 | |
| 38 | −The mandate specified twelve families of properties to annotate, from the structure of the abstract to the boundedness of the conclusion, plus rhetorical moves, claim--evidence relations, hedging, and contribution types. We implemented them as a single document-level JSON schema (ontology version 1.0, \texttt{rhetoric.py}; full listing in Appendix~\ref{app:ontology}) whose enumerated fields use the controlled vocabularies of Table~\ref{tab:vocab}. Table~\ref{tab:ontology-map} maps each family of the mandate to the fields of the schema. Two families are deliberately annotated at a coarser level than the mandate's wording suggests. The \emph{literature} family is captured by the location of the literature positioning (inside the introduction, in a separate section, both, or none) and by the \texttt{related\_literature\_positioning} move, rather than by a graph of contrasts and lineage, because the bounded payload (Section~\ref{sec:corpus-rights}) does not contain the full literature discussion. The \emph{data} and \emph{empirical design} families are captured through section roles, the identification block (estimand, strategy, key assumptions, threats addressed, a 1--5 causal-language score, and a flag for explicit causal claims), and the table conventions block (units stated in notes, description of standard errors), rather than through variable lists. Theory papers are explicitly allowed not to follow the empirical template: the annotator is instructed to assign section roles honestly and to use the ``none'', ``unclear'', or ``not applicable'' values for empirical-only fields. | |
| 38 | +The mandate specified twelve families of properties to annotate, from the structure of the abstract to the boundedness of the conclusion, plus rhetorical moves, claim--evidence relations, hedging, and contribution types. We implemented them as a single document-level JSON schema (ontology version 1.0, \texttt{rhetoric.\allowbreak{}py}; full listing in Appendix~\ref{app:ontology}) whose enumerated fields use the controlled vocabularies of Table~\ref{tab:vocab}. Table~\ref{tab:ontology-map} maps each family of the mandate to the fields of the schema. Two families are deliberately annotated at a coarser level than the mandate's wording suggests. The \emph{literature} family is captured by the location of the literature positioning (inside the introduction, in a separate section, both, or none) and by the \texttt{related\_\allowbreak{}literature\_\allowbreak{}positioning} move, rather than by a graph of contrasts and lineage, because the bounded payload (Section~\ref{sec:corpus-rights}) does not contain the full literature discussion. The \emph{data} and \emph{empirical design} families are captured through section roles, the identification block (estimand, strategy, key assumptions, threats addressed, a 1--5 causal-language score, and a flag for explicit causal claims), and the table conventions block (units stated in notes, description of standard errors), rather than through variable lists. Theory papers are explicitly allowed not to follow the empirical template: the annotator is instructed to assign section roles honestly and to use the ``none'', ``unclear'', or ``not applicable'' values for empirical-only fields. | |
| 39 | 39 | |
| 40 | 40 | The rhetorical-move inventory for introductions (motivation, tension or puzzle, literature gap, preview of approach, preview of results, contribution statement, mechanism or theory sketch, identification defence, robustness mention, roadmap, related-literature positioning, policy or broader implication, other) is an adaptation of move analysis in the tradition of genre studies \citep{TODOKEY-swales-genre} to the conventions of empirical finance, where the preview of results with magnitudes and the defence of identification are moves in their own right. Hedging is recorded as a three-level intensity with free-text devices, following the applied-linguistics literature on hedging in academic prose \citep{TODOKEY-hyland-hedging}, rather than as a word count, since the payload is a sample of the text. |
| 41 | 41 | |
| 42 | 42 | \begin{table}[htbp]\centering\small |
| 43 | −\caption{Controlled vocabularies of the annotation ontology (version 1.0), as defined in \texttt{src/jof250/rhetoric.py}. Free-text and numeric fields are listed in Appendix~\ref{app:ontology}.} | |
| 43 | +\caption{Controlled vocabularies of the annotation ontology (version 1.0), as defined in \texttt{src/\allowbreak{}jof250/\allowbreak{}rhetoric.\allowbreak{}py}. Free-text and numeric fields are listed in Appendix~\ref{app:ontology}.} | |
| 44 | 44 | \label{tab:vocab} |
| 45 | 45 | \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}p{0.34\linewidth}>{\raggedright\arraybackslash}X}\toprule |
| 46 | 46 | Field & Allowed values \\ \midrule |
| 47 | −\texttt{genre} & \texttt{empirical}, \texttt{theoretical}, \texttt{mixed\_theory\_empirical}, \texttt{methodological\_econometric}, \texttt{survey\_or\_address}, \texttt{replication\_or\_correction} \\ | |
| 48 | −\texttt{subfield} & \texttt{asset\_pricing}, \texttt{corporate\_finance}, \texttt{financial\_intermediation\_banking}, \texttt{household\_finance}, \texttt{market\_microstructure}, \texttt{international\_finance}, \texttt{behavioral\_finance}, \texttt{macro\_finance}, \texttt{financial\_econometrics}, \texttt{entrepreneurial\_finance\_private\_equity}, \texttt{other} \\ | |
| 49 | −\texttt{primary\_method} & \texttt{reduced\_form\_regression}, \texttt{difference\_in\_differences}, \texttt{instrumental\_variables}, \texttt{regression\_discontinuity}, \texttt{natural\_experiment\_event\_study}, \texttt{structural\_estimation}, \texttt{calibration\_simulation}, \texttt{theoretical\_model\_analytical}, \texttt{machine\_learning\_textual}, \texttt{survey\_or\_experiment}, \texttt{other}, \texttt{none} \\ | |
| 50 | −\texttt{introduction.moves[].move} & \texttt{motivation}, \texttt{tension\_or\_puzzle}, \texttt{literature\_gap}, \texttt{preview\_of\_approach}, \texttt{preview\_of\_results}, \texttt{contribution\_statement}, \texttt{mechanism\_or\_theory\_sketch}, \texttt{identification\_defense}, \texttt{robustness\_mention}, \texttt{roadmap}, \texttt{related\_literature\_positioning}, \texttt{policy\_or\_broader\_implication}, \texttt{other} \\ | |
| 51 | −\texttt{introduction.contribution\_types[]} & \texttt{new\_evidence}, \texttt{new\_data\_or\_measure}, \texttt{new\_identification}, \texttt{new\_theory\_or\_model}, \texttt{new\_method}, \texttt{resolution\_of\_puzzle}, \texttt{replication\_or\_correction}, \texttt{synthesis} \\ | |
| 52 | −\texttt{section\_roles[].role} & \texttt{introduction}, \texttt{literature}, \texttt{theory}, \texttt{data}, \texttt{empirical\_design}, \texttt{results}, \texttt{robustness}, \texttt{conclusion}, \texttt{appendix}, \texttt{other} \\ | |
| 53 | −\texttt{robustness.types[]} & \texttt{alternative\_specification}, \texttt{placebo}, \texttt{subsample}, \texttt{alternative\_measure}, \texttt{alternative\_sample\_period}, \texttt{falsification}, \texttt{sensitivity\_to\_parameters}, \texttt{other} \\ | |
| 54 | −\texttt{introduction.literature\_positioning\_location} & \texttt{inside\_introduction}, \texttt{separate\_section}, \texttt{both}, \texttt{none} \\ | |
| 55 | −\texttt{results\_presentation.statistical\_significance\_language} & \texttt{stars\_and\_tstats}, \texttt{confidence\_intervals}, \texttt{p\_values}, \texttt{mixed}, \texttt{unclear} \\ | |
| 56 | −\texttt{robustness.location} & \texttt{main\_text\_section}, \texttt{within\_results}, \texttt{appendix}, \texttt{internet\_appendix}, \texttt{mixed}, \texttt{none\_seen} \\ | |
| 57 | −\texttt{tables.standard\_errors\_description} & \texttt{clustered}, \texttt{robust}, \texttt{bootstrap}, \texttt{newey\_west}, \texttt{mixed}, \texttt{unclear}, \texttt{none} \\ | |
| 58 | −\texttt{figures.uncertainty\_shown} & \texttt{yes}, \texttt{no}, \texttt{mixed}, \texttt{unclear}, \texttt{no\_figures} \\ | |
| 59 | −\texttt{hedging.level} & \texttt{low}, \texttt{moderate}, \texttt{high} \\ | |
| 60 | −\texttt{claim\_evidence[].evidence\_type} & \texttt{table}, \texttt{figure}, \texttt{equation\_or\_proof}, \texttt{prior\_literature}, \texttt{descriptive\_statistic}, \texttt{none\_stated} \\ | |
| 47 | +\texttt{genre} & \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} \\ | |
| 48 | +\texttt{subfield} & \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} \\ | |
| 49 | +\texttt{primary\_\allowbreak{}method} & \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} \\ | |
| 50 | +\texttt{introduction.\allowbreak{}moves[].\allowbreak{}move} & \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} \\ | |
| 51 | +\texttt{introduction.\allowbreak{}contribution\_\allowbreak{}types[]} & \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} \\ | |
| 52 | +\texttt{section\_\allowbreak{}roles[].\allowbreak{}role} & \texttt{introduction}, \texttt{literature}, \texttt{theory}, \texttt{data}, \texttt{empirical\_\allowbreak{}design}, \texttt{results}, \texttt{robustness}, \texttt{conclusion}, \texttt{appendix}, \texttt{other} \\ | |
| 53 | +\texttt{robustness.\allowbreak{}types[]} & \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} \\ | |
| 54 | +\texttt{introduction.\allowbreak{}literature\_\allowbreak{}positioning\_\allowbreak{}location} & \texttt{inside\_\allowbreak{}introduction}, \texttt{separate\_\allowbreak{}section}, \texttt{both}, \texttt{none} \\ | |
| 55 | +\texttt{results\_\allowbreak{}presentation.\allowbreak{}statistical\_\allowbreak{}significance\_\allowbreak{}language} & \texttt{stars\_\allowbreak{}and\_\allowbreak{}tstats}, \texttt{confidence\_\allowbreak{}intervals}, \texttt{p\_\allowbreak{}values}, \texttt{mixed}, \texttt{unclear} \\ | |
| 56 | +\texttt{robustness.\allowbreak{}location} & \texttt{main\_\allowbreak{}text\_\allowbreak{}section}, \texttt{within\_\allowbreak{}results}, \texttt{appendix}, \texttt{internet\_\allowbreak{}appendix}, \texttt{mixed}, \texttt{none\_\allowbreak{}seen} \\ | |
| 57 | +\texttt{tables.\allowbreak{}standard\_\allowbreak{}errors\_\allowbreak{}description} & \texttt{clustered}, \texttt{robust}, \texttt{bootstrap}, \texttt{newey\_\allowbreak{}west}, \texttt{mixed}, \texttt{unclear}, \texttt{none} \\ | |
| 58 | +\texttt{figures.\allowbreak{}uncertainty\_\allowbreak{}shown} & \texttt{yes}, \texttt{no}, \texttt{mixed}, \texttt{unclear}, \texttt{no\_\allowbreak{}figures} \\ | |
| 59 | +\texttt{hedging.\allowbreak{}level} & \texttt{low}, \texttt{moderate}, \texttt{high} \\ | |
| 60 | +\texttt{claim\_\allowbreak{}evidence[].\allowbreak{}evidence\_\allowbreak{}type} & \texttt{table}, \texttt{figure}, \texttt{equation\_\allowbreak{}or\_\allowbreak{}proof}, \texttt{prior\_\allowbreak{}literature}, \texttt{descriptive\_\allowbreak{}statistic}, \texttt{none\_\allowbreak{}stated} \\ | |
| 61 | 61 | \bottomrule\end{tabularx} |
| 62 | 62 | \end{table} |
| 63 | 63 | |
@@ -70,19 +70,19 @@ Field & Allowed values \\ \midrule | ||
| 70 | 70 | \toprule |
| 71 | 71 | Mandate family & Schema fields \\ |
| 72 | 72 | \midrule |
| 73 | −1. Abstract & \texttt{abstract\_moves.\{question, gap, method, results, magnitude, contribution\}}, each with \texttt{present} and \texttt{sentence\_index} \\ | |
| 74 | −2. Introduction & \texttt{introduction.moves[]} (paragraph index, move), \texttt{contribution\_paragraph\_index}, \texttt{contribution\_types[]}, \texttt{roadmap\_present} \\ | |
| 75 | −3. Literature & \texttt{introduction.literature\_positioning\_location}; move \texttt{related\_literature\_positioning} \\ | |
| 76 | −4. Theory & \texttt{genre}; section role \texttt{theory}; move \texttt{mechanism\_or\_theory\_sketch}; evidence type \texttt{equation\_or\_proof} \\ | |
| 77 | −5. Data & section role \texttt{data}; \texttt{primary\_method}; \texttt{subfield} \\ | |
| 78 | −6. Identification & \texttt{identification.\{estimand, strategy, key\_assumptions[], threats\_addressed[], causal\_language\_strength, uses\_causal\_claim\}} \\ | |
| 79 | −7. Empirical design & section role \texttt{empirical\_design}; \texttt{primary\_method}; \texttt{tables.standard\_errors\_description} \\ | |
| 80 | −8. Results & \texttt{results\_presentation.\{economic\_significance\_discussed, statistical\_significance\_language, magnitude\_statements\_in\_intro\}} \\ | |
| 81 | −9. Robustness & \texttt{robustness.\{location, types[]\}}; move \texttt{robustness\_mention} \\ | |
| 82 | −10. Tables & \texttt{tables.\{convention\_notes, units\_stated\_in\_notes, standard\_errors\_description\}} \\ | |
| 83 | −11. Figures & \texttt{figures.uncertainty\_shown} \\ | |
| 84 | −12. Conclusion & \texttt{conclusion.\{bounded\_claims, policy\_implications, open\_questions, restates\_contribution\}} \\ | |
| 85 | −Moves, claims, hedging & \texttt{introduction.moves[]}, \texttt{claim\_evidence[]} (claim, evidence type, evidence reference), \texttt{hedging.\{level, typical\_devices[]\}}, \texttt{structural\_summary}, \texttt{writing\_profile\_keywords[]}, \texttt{confidence} \\ | |
| 73 | +1. Abstract & \texttt{abstract\_\allowbreak{}moves.\allowbreak{}\{question, gap, method, results, magnitude, contribution\}}, each with \texttt{present} and \texttt{sentence\_\allowbreak{}index} \\ | |
| 74 | +2. Introduction & \texttt{introduction.\allowbreak{}moves[]} (paragraph index, move), \texttt{contribution\_\allowbreak{}paragraph\_\allowbreak{}index}, \texttt{contribution\_\allowbreak{}types[]}, \texttt{roadmap\_\allowbreak{}present} \\ | |
| 75 | +3. Literature & \texttt{introduction.\allowbreak{}literature\_\allowbreak{}positioning\_\allowbreak{}location}; move \texttt{related\_\allowbreak{}literature\_\allowbreak{}positioning} \\ | |
| 76 | +4. Theory & \texttt{genre}; section role \texttt{theory}; move \texttt{mechanism\_\allowbreak{}or\_\allowbreak{}theory\_\allowbreak{}sketch}; evidence type \texttt{equation\_\allowbreak{}or\_\allowbreak{}proof} \\ | |
| 77 | +5. Data & section role \texttt{data}; \texttt{primary\_\allowbreak{}method}; \texttt{subfield} \\ | |
| 78 | +6. Identification & \texttt{identification.\allowbreak{}\{estimand, strategy, key\_\allowbreak{}assumptions[], threats\_\allowbreak{}addressed[], causal\_\allowbreak{}language\_\allowbreak{}strength, uses\_\allowbreak{}causal\_\allowbreak{}claim\}} \\ | |
| 79 | +7. Empirical design & section role \texttt{empirical\_\allowbreak{}design}; \texttt{primary\_\allowbreak{}method}; \texttt{tables.\allowbreak{}standard\_\allowbreak{}errors\_\allowbreak{}description} \\ | |
| 80 | +8. Results & \texttt{results\_\allowbreak{}presentation.\allowbreak{}\{economic\_\allowbreak{}significance\_\allowbreak{}discussed, statistical\_\allowbreak{}significance\_\allowbreak{}language, magnitude\_\allowbreak{}statements\_\allowbreak{}in\_\allowbreak{}intro\}} \\ | |
| 81 | +9. Robustness & \texttt{robustness.\allowbreak{}\{location, types[]\}}; move \texttt{robustness\_\allowbreak{}mention} \\ | |
| 82 | +10. Tables & \texttt{tables.\allowbreak{}\{convention\_\allowbreak{}notes, units\_\allowbreak{}stated\_\allowbreak{}in\_\allowbreak{}notes, standard\_\allowbreak{}errors\_\allowbreak{}description\}} \\ | |
| 83 | +11. Figures & \texttt{figures.\allowbreak{}uncertainty\_\allowbreak{}shown} \\ | |
| 84 | +12. Conclusion & \texttt{conclusion.\allowbreak{}\{bounded\_\allowbreak{}claims, policy\_\allowbreak{}implications, open\_\allowbreak{}questions, restates\_\allowbreak{}contribution\}} \\ | |
| 85 | +Moves, claims, hedging & \texttt{introduction.\allowbreak{}moves[]}, \texttt{claim\_\allowbreak{}evidence[]} (claim, evidence type, evidence reference), \texttt{hedging.\allowbreak{}\{level, typical\_\allowbreak{}devices[]\}}, \texttt{structural\_\allowbreak{}summary}, \texttt{writing\_\allowbreak{}profile\_\allowbreak{}keywords[]}, \texttt{confidence} \\ | |
| 86 | 86 | \bottomrule |
| 87 | 87 | \end{tabularx} |
| 88 | 88 | \end{table} |
@@ -90,16 +90,16 @@ Moves, claims, hedging & \texttt{introduction.moves[]}, \texttt{claim\_evidence[ | ||
| 90 | 90 | \subsection{Annotation procedure} |
| 91 | 91 | \label{sec:extraction-procedure} |
| 92 | 92 | |
| 93 | −Each document is annotated by one call to the Claude API (\texttt{claude-opus-5-5}, the annotation model recorded in \texttt{config/models.yaml}, with reasoning effort \texttt{medium} and a 4,000-token output limit) using prompt \texttt{document\_annotation} version 1.0 (Appendix~\ref{app:prompts}). The system prompt consists of the prompt body, the list of allowed values for every enumerated field, and the JSON schema itself; it is marked for prompt caching so that the per-document cost is dominated by the payload. The user message is the bounded payload of Section~\ref{sec:corpus-rights}, serialised as JSON. The model is asked to return a single JSON object; the response is parsed and validated locally against the strict schema (JSON Schema draft 2020-12, enumerations enforced, no additional properties, every listed property required). A response that fails validation is stored with its validation errors and marked invalid; invalid documents are re-run with a fresh call rather than repaired by hand, and documents that remain invalid are excluded from the rhetoric profiles and from the annotation units of the index. The record written for each document holds the annotation, the prompt and ontology versions, the model identifier returned by the API, the effort, the timestamp, the source document hash, the parser version, the payload size, token usage, cost, the API request identifier, and the code version. At the time of writing, \nAnnotated{} documents have been annotated and \nAnnValid{} validate against the strict schema; the measured cost is \annCostPerDoc{}~USD per valid document (\annCostUSD{}~USD in total). These counts will be superseded by the full annotation run; the macros that print them are regenerated from the recorded artefacts. | |
| 93 | +Each document is annotated by one call to the Claude API (\texttt{claude-opus-5-5}, the annotation model recorded in \texttt{config/\allowbreak{}models.\allowbreak{}yaml}, with reasoning effort \texttt{medium} and a 4,000-token output limit) using prompt \texttt{document\_\allowbreak{}annotation} version 1.0 (Appendix~\ref{app:prompts}). The system prompt consists of the prompt body, the list of allowed values for every enumerated field, and the JSON schema itself; it is marked for prompt caching so that the per-document cost is dominated by the payload. The user message is the bounded payload of Section~\ref{sec:corpus-rights}, serialised as JSON. The model is asked to return a single JSON object; the response is parsed and validated locally against the strict schema (JSON Schema draft 2020-12, enumerations enforced, no additional properties, every listed property required). A response that fails validation is stored with its validation errors and marked invalid; invalid documents are re-run with a fresh call rather than repaired by hand, and documents that remain invalid are excluded from the rhetoric profiles and from the annotation units of the index. The record written for each document holds the annotation, the prompt and ontology versions, the model identifier returned by the API, the effort, the timestamp, the source document hash, the parser version, the payload size, token usage, cost, the API request identifier, and the code version. At the time of writing, \nAnnotated{} documents have been annotated and \nAnnValid{} validate against the strict schema; the measured cost is \annCostPerDoc{}~USD per valid document (\annCostUSD{}~USD in total). These counts will be superseded by the full annotation run; the macros that print them are regenerated from the recorded artefacts. | |
| 94 | 94 | |
| 95 | 95 | \subsection{Deterministic checks and model--rule agreement} |
| 96 | 96 | \label{sec:extraction-checks} |
| 97 | 97 | |
| 98 | −Independently of the model, a set of rule-based signals is computed from the same payload for every document (\texttt{deterministic\_checks} in \texttt{rhetoric.py}): the presence of a roadmap paragraph (regular expression on ``the remainder of the paper'', ``Section~\textit{n} presents'', and similar phrasings), of contribution language in the introduction (``contribute'', ``this paper is the first'', ``this paper adds''), and of a magnitude in the abstract (a number followed by a percentage, basis-point, or standard-deviation unit); the number of sentences in the abstract and of paragraphs and words in the introduction; counts of causal and hedging words in the abstract; whether table notes mention significance stars or clustered standard errors; whether the introduction or the headings mention an Internet Appendix; and a rule-based role for every section derived from its heading (\texttt{segmentation.py}). These signals serve two purposes. They enter the profiles alongside the model's judgements, so that a reader can compare, for instance, the share of introductions with a roadmap according to the model and according to the regular expression. And they provide a check on the model: for each annotated document we compute the agreement between the model's section roles and the rule-based roles over sections where the rule assigns a role, the agreement between the model's roadmap flag and the regular expression, and the agreement between the model's identification of a contribution paragraph and the contribution regular expression. | |
| 98 | +Independently of the model, a set of rule-based signals is computed from the same payload for every document (\texttt{deterministic\_\allowbreak{}checks} in \texttt{rhetoric.\allowbreak{}py}): the presence of a roadmap paragraph (regular expression on ``the remainder of the paper'', ``Section~\textit{n} presents'', and similar phrasings), of contribution language in the introduction (``contribute'', ``this paper is the first'', ``this paper adds''), and of a magnitude in the abstract (a number followed by a percentage, basis-point, or standard-deviation unit); the number of sentences in the abstract and of paragraphs and words in the introduction; counts of causal and hedging words in the abstract; whether table notes mention significance stars or clustered standard errors; whether the introduction or the headings mention an Internet Appendix; and a rule-based role for every section derived from its heading (\texttt{segmentation.\allowbreak{}py}). These signals serve two purposes. They enter the profiles alongside the model's judgements, so that a reader can compare, for instance, the share of introductions with a roadmap according to the model and according to the regular expression. And they provide a check on the model: for each annotated document we compute the agreement between the model's section roles and the rule-based roles over sections where the rule assigns a role, the agreement between the model's roadmap flag and the regular expression, and the agreement between the model's identification of a contribution paragraph and the contribution regular expression. | |
| 99 | 99 | |
| 100 | 100 | On the documents annotated so far, the median per-document agreement on section roles is \roleAgreementMedian{}, the roadmap flags agree for \roadmapAgree\% of documents, and the contribution flags agree for \contribAgree\% of documents. The lower contribution agreement is expected: the regular expression requires explicit contribution vocabulary, whereas the model also recognises contribution paragraphs phrased as ``we show'' or ``our results'', and the disagreements are informative about the limits of lexical rules rather than necessarily about the model. |
| 101 | 101 | |
| 102 | 102 | \subsection{What the agreement figures do and do not mean} |
| 103 | 103 | \label{sec:extraction-honesty} |
| 104 | 104 | |
| 105 | −We state the limits of this evidence plainly. The annotations are produced by one language model under one prompt; the agreement figures above compare that model with lexical rules, and the self-consistency of the profiles compares the model with itself. Neither is inter-rater reliability in the sense used in content analysis, which requires at least two independent human coders and a chance-corrected statistic such as Krippendorff's $\alpha$ \citep{TODOKEY-krippendorff}. A human audit protocol (\texttt{experiments/protocols/}) has been prepared for the day qualified coders are available, and the rhetoric profiles should be read, until then, as a model's structured reading of the corpus whose aggregate patterns are checked against simple rules, not as a validated coding of it. The same caution applies to the downstream uses of the annotations: structured retrieval units and profile summaries inherit whatever systematic bias the annotator has, and the experiment of Section~\ref{sec:design} evaluates the usefulness of the resulting engine, not the correctness of the annotations. | |
| 105 | +We state the limits of this evidence plainly. The annotations are produced by one language model under one prompt; the agreement figures above compare that model with lexical rules, and the self-consistency of the profiles compares the model with itself. Neither is inter-rater reliability in the sense used in content analysis, which requires at least two independent human coders and a chance-corrected statistic such as Krippendorff's $\alpha$ \citep{TODOKEY-krippendorff}. A human audit protocol (\texttt{experiments/\allowbreak{}protocols/\allowbreak{}}) has been prepared for the day qualified coders are available, and the rhetoric profiles should be read, until then, as a model's structured reading of the corpus whose aggregate patterns are checked against simple rules, not as a validated coding of it. The same caution applies to the downstream uses of the annotations: structured retrieval units and profile summaries inherit whatever systematic bias the annotator has, and the experiment of Section~\ref{sec:design} evaluates the usefulness of the resulting engine, not the correctness of the annotations. | |
modified
paper/tables/numbers.tex
+3 −3
@@ -441,10 +441,10 @@ | ||
| 441 | 441 | \newcommand{\nTrain}{221} |
| 442 | 442 | \newcommand{\nHeldout}{55} |
| 443 | 443 | \newcommand{\nHeldoutAuthorOverlap}{20} |
| 444 | −\newcommand{\apiCalls}{290} | |
| 445 | −\newcommand{\apiSpendUSD}{22.09} | |
| 444 | +\newcommand{\apiCalls}{302} | |
| 445 | +\newcommand{\apiSpendUSD}{23.47} | |
| 446 | 446 | \newcommand{\apiSpendAnnotation}{20.58} |
| 447 | −\newcommand{\apiSpendWrite}{0.18} | |
| 447 | +\newcommand{\apiSpendWrite}{1.56} | |
| 448 | 448 | \newcommand{\apiSpendReferee}{0.19} |
| 449 | 449 | \newcommand{\apiSpendReview}{0.19} |
| 450 | 450 | \newcommand{\apiSpendAnnotationretry}{0.96} |
modified
profiles/corporate_finance.yaml
+54 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: corporate_finance |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:17+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:46+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -486,6 +486,58 @@ rhetoric: | ||
| 486 | 486 | motivation: 0.929 |
| 487 | 487 | other: 0.036 |
| 488 | 488 | preview_of_approach: 0.036 |
| 489 | + move_prevalence: | |
| 490 | + n: 28 | |
| 491 | + motivation: | |
| 492 | + share: 0.964 | |
| 493 | + median_relative_position: 0.0 | |
| 494 | + preview_of_results: | |
| 495 | + share: 0.964 | |
| 496 | + median_relative_position: 0.3 | |
| 497 | + related_literature_positioning: | |
| 498 | + share: 0.857 | |
| 499 | + median_relative_position: 0.78 | |
| 500 | + preview_of_approach: | |
| 501 | + share: 0.857 | |
| 502 | + median_relative_position: 0.23 | |
| 503 | + contribution_statement: | |
| 504 | + share: 0.821 | |
| 505 | + median_relative_position: 0.83 | |
| 506 | + identification_defense: | |
| 507 | + share: 0.786 | |
| 508 | + median_relative_position: 0.45 | |
| 509 | + mechanism_or_theory_sketch: | |
| 510 | + share: 0.679 | |
| 511 | + median_relative_position: 0.28 | |
| 512 | + literature_gap: | |
| 513 | + share: 0.679 | |
| 514 | + median_relative_position: 0.1 | |
| 515 | + roadmap: | |
| 516 | + share: 0.571 | |
| 517 | + median_relative_position: 1.0 | |
| 518 | + policy_or_broader_implication: | |
| 519 | + share: 0.536 | |
| 520 | + median_relative_position: 0.91 | |
| 521 | + robustness_mention: | |
| 522 | + share: 0.464 | |
| 523 | + median_relative_position: 0.7 | |
| 524 | + tension_or_puzzle: | |
| 525 | + share: 0.429 | |
| 526 | + median_relative_position: 0.11 | |
| 527 | + other: | |
| 528 | + share: 0.179 | |
| 529 | + median_relative_position: 0.91 | |
| 530 | + moves_per_intro: | |
| 531 | + n: 28 | |
| 532 | + median: 12.0 | |
| 533 | + q25: 11.0 | |
| 534 | + q75: 14.0 | |
| 535 | + mean: 12.679 | |
| 536 | + min: 7.0 | |
| 537 | + max: 23.0 | |
| 538 | + median_ci95_bootstrap: | |
| 539 | + - 11.5 | |
| 540 | + - 13.0 | |
| 489 | 541 | common_move_sequences: |
| 490 | 542 | n: 28 |
| 491 | 543 | ? motivation > preview_of_approach > identification_defense > mechanism_or_theory_sketch > preview_of_approach > preview_of_results |
modified
profiles/corpus_all.yaml
+54 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: corpus_all |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:16+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:46+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -505,6 +505,58 @@ rhetoric: | ||
| 505 | 505 | literature_gap: 0.009 |
| 506 | 506 | related_literature_positioning: 0.009 |
| 507 | 507 | mechanism_or_theory_sketch: 0.005 |
| 508 | + move_prevalence: | |
| 509 | + n: 221 | |
| 510 | + preview_of_results: | |
| 511 | + share: 0.95 | |
| 512 | + median_relative_position: 0.37 | |
| 513 | + motivation: | |
| 514 | + share: 0.932 | |
| 515 | + median_relative_position: 0.0 | |
| 516 | + preview_of_approach: | |
| 517 | + share: 0.873 | |
| 518 | + median_relative_position: 0.23 | |
| 519 | + related_literature_positioning: | |
| 520 | + share: 0.864 | |
| 521 | + median_relative_position: 0.73 | |
| 522 | + mechanism_or_theory_sketch: | |
| 523 | + share: 0.819 | |
| 524 | + median_relative_position: 0.33 | |
| 525 | + contribution_statement: | |
| 526 | + share: 0.774 | |
| 527 | + median_relative_position: 0.73 | |
| 528 | + roadmap: | |
| 529 | + share: 0.624 | |
| 530 | + median_relative_position: 1.0 | |
| 531 | + literature_gap: | |
| 532 | + share: 0.511 | |
| 533 | + median_relative_position: 0.12 | |
| 534 | + tension_or_puzzle: | |
| 535 | + share: 0.498 | |
| 536 | + median_relative_position: 0.11 | |
| 537 | + identification_defense: | |
| 538 | + share: 0.425 | |
| 539 | + median_relative_position: 0.5 | |
| 540 | + policy_or_broader_implication: | |
| 541 | + share: 0.367 | |
| 542 | + median_relative_position: 0.79 | |
| 543 | + robustness_mention: | |
| 544 | + share: 0.285 | |
| 545 | + median_relative_position: 0.62 | |
| 546 | + other: | |
| 547 | + share: 0.158 | |
| 548 | + median_relative_position: 0.69 | |
| 549 | + moves_per_intro: | |
| 550 | + n: 221 | |
| 551 | + median: 12.0 | |
| 552 | + q25: 10.0 | |
| 553 | + q75: 13.0 | |
| 554 | + mean: 11.679 | |
| 555 | + min: 1.0 | |
| 556 | + max: 23.0 | |
| 557 | + median_ci95_bootstrap: | |
| 558 | + - 11.0 | |
| 559 | + - 12.0 | |
| 508 | 560 | common_move_sequences: |
| 509 | 561 | n: 221 |
| 510 | 562 | ? motivation > preview_of_approach > identification_defense > mechanism_or_theory_sketch > preview_of_approach > preview_of_results |
modified
profiles/empirical_all.yaml
+54 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: empirical_all |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:17+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:47+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -501,6 +501,58 @@ rhetoric: | ||
| 501 | 501 | contribution_statement: 0.006 |
| 502 | 502 | related_literature_positioning: 0.006 |
| 503 | 503 | mechanism_or_theory_sketch: 0.006 |
| 504 | + move_prevalence: | |
| 505 | + n: 173 | |
| 506 | + preview_of_results: | |
| 507 | + share: 0.983 | |
| 508 | + median_relative_position: 0.36 | |
| 509 | + motivation: | |
| 510 | + share: 0.948 | |
| 511 | + median_relative_position: 0.0 | |
| 512 | + preview_of_approach: | |
| 513 | + share: 0.896 | |
| 514 | + median_relative_position: 0.25 | |
| 515 | + related_literature_positioning: | |
| 516 | + share: 0.873 | |
| 517 | + median_relative_position: 0.75 | |
| 518 | + mechanism_or_theory_sketch: | |
| 519 | + share: 0.838 | |
| 520 | + median_relative_position: 0.33 | |
| 521 | + contribution_statement: | |
| 522 | + share: 0.809 | |
| 523 | + median_relative_position: 0.75 | |
| 524 | + roadmap: | |
| 525 | + share: 0.653 | |
| 526 | + median_relative_position: 1.0 | |
| 527 | + literature_gap: | |
| 528 | + share: 0.578 | |
| 529 | + median_relative_position: 0.12 | |
| 530 | + identification_defense: | |
| 531 | + share: 0.543 | |
| 532 | + median_relative_position: 0.5 | |
| 533 | + tension_or_puzzle: | |
| 534 | + share: 0.497 | |
| 535 | + median_relative_position: 0.11 | |
| 536 | + robustness_mention: | |
| 537 | + share: 0.341 | |
| 538 | + median_relative_position: 0.62 | |
| 539 | + policy_or_broader_implication: | |
| 540 | + share: 0.335 | |
| 541 | + median_relative_position: 0.79 | |
| 542 | + other: | |
| 543 | + share: 0.15 | |
| 544 | + median_relative_position: 0.7 | |
| 545 | + moves_per_intro: | |
| 546 | + n: 173 | |
| 547 | + median: 12.0 | |
| 548 | + q25: 10.0 | |
| 549 | + q75: 14.0 | |
| 550 | + mean: 12.127 | |
| 551 | + min: 7.0 | |
| 552 | + max: 23.0 | |
| 553 | + median_ci95_bootstrap: | |
| 554 | + - 12.0 | |
| 555 | + - 12.0 | |
| 504 | 556 | common_move_sequences: |
| 505 | 557 | n: 173 |
| 506 | 558 | ? motivation > preview_of_approach > identification_defense > mechanism_or_theory_sketch > preview_of_approach > preview_of_results |
modified
profiles/empirical_asset_pricing.yaml
+54 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: empirical_asset_pricing |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:16+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:46+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -493,6 +493,58 @@ rhetoric: | ||
| 493 | 493 | literature_gap: 0.017 |
| 494 | 494 | mechanism_or_theory_sketch: 0.017 |
| 495 | 495 | other: 0.017 |
| 496 | + move_prevalence: | |
| 497 | + n: 58 | |
| 498 | + preview_of_results: | |
| 499 | + share: 0.966 | |
| 500 | + median_relative_position: 0.36 | |
| 501 | + mechanism_or_theory_sketch: | |
| 502 | + share: 0.931 | |
| 503 | + median_relative_position: 0.3 | |
| 504 | + related_literature_positioning: | |
| 505 | + share: 0.897 | |
| 506 | + median_relative_position: 0.71 | |
| 507 | + motivation: | |
| 508 | + share: 0.897 | |
| 509 | + median_relative_position: 0.0 | |
| 510 | + preview_of_approach: | |
| 511 | + share: 0.879 | |
| 512 | + median_relative_position: 0.22 | |
| 513 | + contribution_statement: | |
| 514 | + share: 0.862 | |
| 515 | + median_relative_position: 0.75 | |
| 516 | + roadmap: | |
| 517 | + share: 0.672 | |
| 518 | + median_relative_position: 1.0 | |
| 519 | + tension_or_puzzle: | |
| 520 | + share: 0.569 | |
| 521 | + median_relative_position: 0.1 | |
| 522 | + literature_gap: | |
| 523 | + share: 0.5 | |
| 524 | + median_relative_position: 0.13 | |
| 525 | + robustness_mention: | |
| 526 | + share: 0.328 | |
| 527 | + median_relative_position: 0.6 | |
| 528 | + identification_defense: | |
| 529 | + share: 0.276 | |
| 530 | + median_relative_position: 0.63 | |
| 531 | + policy_or_broader_implication: | |
| 532 | + share: 0.155 | |
| 533 | + median_relative_position: 0.77 | |
| 534 | + other: | |
| 535 | + share: 0.121 | |
| 536 | + median_relative_position: 0.86 | |
| 537 | + moves_per_intro: | |
| 538 | + n: 58 | |
| 539 | + median: 12.0 | |
| 540 | + q25: 10.0 | |
| 541 | + q75: 13.0 | |
| 542 | + mean: 12.052 | |
| 543 | + min: 7.0 | |
| 544 | + max: 20.0 | |
| 545 | + median_ci95_bootstrap: | |
| 546 | + - 11.0 | |
| 547 | + - 12.0 | |
| 496 | 548 | common_move_sequences: |
| 497 | 549 | n: 58 |
| 498 | 550 | ? motivation > tension_or_puzzle > mechanism_or_theory_sketch > preview_of_results > related_literature_positioning |
modified
profiles/financial_econometrics.yaml
+51 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: financial_econometrics |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:17+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:47+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -485,6 +485,55 @@ rhetoric: | ||
| 485 | 485 | n: 8 |
| 486 | 486 | motivation: 0.875 |
| 487 | 487 | contribution_statement: 0.125 |
| 488 | + move_prevalence: | |
| 489 | + n: 8 | |
| 490 | + related_literature_positioning: | |
| 491 | + share: 0.875 | |
| 492 | + median_relative_position: 0.6 | |
| 493 | + motivation: | |
| 494 | + share: 0.875 | |
| 495 | + median_relative_position: 0.0 | |
| 496 | + contribution_statement: | |
| 497 | + share: 0.875 | |
| 498 | + median_relative_position: 0.5 | |
| 499 | + preview_of_approach: | |
| 500 | + share: 0.875 | |
| 501 | + median_relative_position: 0.45 | |
| 502 | + tension_or_puzzle: | |
| 503 | + share: 0.75 | |
| 504 | + median_relative_position: 0.19 | |
| 505 | + preview_of_results: | |
| 506 | + share: 0.75 | |
| 507 | + median_relative_position: 0.37 | |
| 508 | + roadmap: | |
| 509 | + share: 0.625 | |
| 510 | + median_relative_position: 1.0 | |
| 511 | + policy_or_broader_implication: | |
| 512 | + share: 0.5 | |
| 513 | + median_relative_position: 0.76 | |
| 514 | + literature_gap: | |
| 515 | + share: 0.5 | |
| 516 | + median_relative_position: 0.16 | |
| 517 | + mechanism_or_theory_sketch: | |
| 518 | + share: 0.375 | |
| 519 | + median_relative_position: 0.42 | |
| 520 | + robustness_mention: | |
| 521 | + share: 0.25 | |
| 522 | + median_relative_position: 0.47 | |
| 523 | + other: | |
| 524 | + share: 0.25 | |
| 525 | + median_relative_position: 0.8 | |
| 526 | + moves_per_intro: | |
| 527 | + n: 8 | |
| 528 | + median: 11.0 | |
| 529 | + q25: 6.75 | |
| 530 | + q75: 13.25 | |
| 531 | + mean: 10.25 | |
| 532 | + min: 3.0 | |
| 533 | + max: 17.0 | |
| 534 | + median_ci95_bootstrap: | |
| 535 | + - 6.0 | |
| 536 | + - 14.0 | |
| 488 | 537 | common_move_sequences: |
| 489 | 538 | n: 8 |
| 490 | 539 | ? motivation > tension_or_puzzle > mechanism_or_theory_sketch > related_literature_positioning > policy_or_broader_implication |
modified
profiles/financial_intermediation_banking.yaml
+54 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: financial_intermediation_banking |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:17+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:46+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -485,6 +485,58 @@ rhetoric: | ||
| 485 | 485 | n: 21 |
| 486 | 486 | motivation: 0.952 |
| 487 | 487 | related_literature_positioning: 0.048 |
| 488 | + move_prevalence: | |
| 489 | + n: 21 | |
| 490 | + preview_of_results: | |
| 491 | + share: 1.0 | |
| 492 | + median_relative_position: 0.38 | |
| 493 | + motivation: | |
| 494 | + share: 0.952 | |
| 495 | + median_relative_position: 0.0 | |
| 496 | + mechanism_or_theory_sketch: | |
| 497 | + share: 0.905 | |
| 498 | + median_relative_position: 0.31 | |
| 499 | + contribution_statement: | |
| 500 | + share: 0.857 | |
| 501 | + median_relative_position: 0.76 | |
| 502 | + related_literature_positioning: | |
| 503 | + share: 0.857 | |
| 504 | + median_relative_position: 0.83 | |
| 505 | + preview_of_approach: | |
| 506 | + share: 0.857 | |
| 507 | + median_relative_position: 0.24 | |
| 508 | + identification_defense: | |
| 509 | + share: 0.857 | |
| 510 | + median_relative_position: 0.5 | |
| 511 | + literature_gap: | |
| 512 | + share: 0.714 | |
| 513 | + median_relative_position: 0.09 | |
| 514 | + roadmap: | |
| 515 | + share: 0.714 | |
| 516 | + median_relative_position: 1.0 | |
| 517 | + policy_or_broader_implication: | |
| 518 | + share: 0.476 | |
| 519 | + median_relative_position: 0.54 | |
| 520 | + tension_or_puzzle: | |
| 521 | + share: 0.381 | |
| 522 | + median_relative_position: 0.43 | |
| 523 | + robustness_mention: | |
| 524 | + share: 0.286 | |
| 525 | + median_relative_position: 0.56 | |
| 526 | + other: | |
| 527 | + share: 0.143 | |
| 528 | + median_relative_position: 0.82 | |
| 529 | + moves_per_intro: | |
| 530 | + n: 21 | |
| 531 | + median: 13.0 | |
| 532 | + q25: 11.0 | |
| 533 | + q75: 14.0 | |
| 534 | + mean: 12.286 | |
| 535 | + min: 8.0 | |
| 536 | + max: 16.0 | |
| 537 | + median_ci95_bootstrap: | |
| 538 | + - 11.0 | |
| 539 | + - 14.0 | |
| 488 | 540 | common_move_sequences: |
| 489 | 541 | n: 21 |
| 490 | 542 | ? motivation > policy_or_broader_implication > mechanism_or_theory_sketch > tension_or_puzzle > preview_of_approach |
modified
profiles/household_behavioral_finance.yaml
+54 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: household_behavioral_finance |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:17+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:47+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -490,6 +490,58 @@ rhetoric: | ||
| 490 | 490 | motivation: 0.938 |
| 491 | 491 | tension_or_puzzle: 0.031 |
| 492 | 492 | other: 0.031 |
| 493 | + move_prevalence: | |
| 494 | + n: 32 | |
| 495 | + preview_of_results: | |
| 496 | + share: 1.0 | |
| 497 | + median_relative_position: 0.39 | |
| 498 | + motivation: | |
| 499 | + share: 0.969 | |
| 500 | + median_relative_position: 0.0 | |
| 501 | + preview_of_approach: | |
| 502 | + share: 0.938 | |
| 503 | + median_relative_position: 0.25 | |
| 504 | + contribution_statement: | |
| 505 | + share: 0.812 | |
| 506 | + median_relative_position: 0.68 | |
| 507 | + related_literature_positioning: | |
| 508 | + share: 0.781 | |
| 509 | + median_relative_position: 0.75 | |
| 510 | + mechanism_or_theory_sketch: | |
| 511 | + share: 0.781 | |
| 512 | + median_relative_position: 0.56 | |
| 513 | + roadmap: | |
| 514 | + share: 0.719 | |
| 515 | + median_relative_position: 1.0 | |
| 516 | + identification_defense: | |
| 517 | + share: 0.656 | |
| 518 | + median_relative_position: 0.47 | |
| 519 | + tension_or_puzzle: | |
| 520 | + share: 0.562 | |
| 521 | + median_relative_position: 0.11 | |
| 522 | + literature_gap: | |
| 523 | + share: 0.5 | |
| 524 | + median_relative_position: 0.14 | |
| 525 | + policy_or_broader_implication: | |
| 526 | + share: 0.438 | |
| 527 | + median_relative_position: 0.73 | |
| 528 | + robustness_mention: | |
| 529 | + share: 0.344 | |
| 530 | + median_relative_position: 0.6 | |
| 531 | + other: | |
| 532 | + share: 0.125 | |
| 533 | + median_relative_position: 0.36 | |
| 534 | + moves_per_intro: | |
| 535 | + n: 32 | |
| 536 | + median: 12.0 | |
| 537 | + q25: 10.0 | |
| 538 | + q75: 14.0 | |
| 539 | + mean: 12.188 | |
| 540 | + min: 8.0 | |
| 541 | + max: 20.0 | |
| 542 | + median_ci95_bootstrap: | |
| 543 | + - 10.0 | |
| 544 | + - 13.0 | |
| 493 | 545 | common_move_sequences: |
| 494 | 546 | n: 32 |
| 495 | 547 | ? tension_or_puzzle > literature_gap > contribution_statement > preview_of_approach > mechanism_or_theory_sketch > identification_defense |
modified
profiles/theoretical_finance.yaml
+51 −2
@@ -2,8 +2,8 @@ | ||
| 2 | 2 | profile: theoretical_finance |
| 3 | 3 | ontology_version: '1.0' |
| 4 | 4 | built: |
| 5 | − timestamp: '2026-11-03T23:27:17+00:00' | |
| 6 | − code_version: 87c73cd-dirty | |
| 5 | + timestamp: '2026-11-03T23:29:47+00:00' | |
| 6 | + code_version: f8b9e5a-dirty | |
| 7 | 7 | host: |
| 8 | 8 | platform: macOS-27.0-arm64-arm-64bit |
| 9 | 9 | python: 3.12.13 |
@@ -471,6 +471,55 @@ rhetoric: | ||
| 471 | 471 | preview_of_approach: 0.062 |
| 472 | 472 | contribution_statement: 0.031 |
| 473 | 473 | tension_or_puzzle: 0.031 |
| 474 | + move_prevalence: | |
| 475 | + n: 32 | |
| 476 | + mechanism_or_theory_sketch: | |
| 477 | + share: 0.938 | |
| 478 | + median_relative_position: 0.3 | |
| 479 | + motivation: | |
| 480 | + share: 0.906 | |
| 481 | + median_relative_position: 0.0 | |
| 482 | + preview_of_results: | |
| 483 | + share: 0.875 | |
| 484 | + median_relative_position: 0.39 | |
| 485 | + related_literature_positioning: | |
| 486 | + share: 0.844 | |
| 487 | + median_relative_position: 0.7 | |
| 488 | + preview_of_approach: | |
| 489 | + share: 0.844 | |
| 490 | + median_relative_position: 0.18 | |
| 491 | + contribution_statement: | |
| 492 | + share: 0.562 | |
| 493 | + median_relative_position: 0.63 | |
| 494 | + roadmap: | |
| 495 | + share: 0.5 | |
| 496 | + median_relative_position: 1.0 | |
| 497 | + policy_or_broader_implication: | |
| 498 | + share: 0.5 | |
| 499 | + median_relative_position: 0.72 | |
| 500 | + tension_or_puzzle: | |
| 501 | + share: 0.406 | |
| 502 | + median_relative_position: 0.09 | |
| 503 | + literature_gap: | |
| 504 | + share: 0.219 | |
| 505 | + median_relative_position: 0.15 | |
| 506 | + other: | |
| 507 | + share: 0.156 | |
| 508 | + median_relative_position: 0.7 | |
| 509 | + robustness_mention: | |
| 510 | + share: 0.031 | |
| 511 | + median_relative_position: 1.0 | |
| 512 | + moves_per_intro: | |
| 513 | + n: 32 | |
| 514 | + median: 11.0 | |
| 515 | + q25: 8.75 | |
| 516 | + q75: 13.0 | |
| 517 | + mean: 10.594 | |
| 518 | + min: 2.0 | |
| 519 | + max: 19.0 | |
| 520 | + median_ci95_bootstrap: | |
| 521 | + - 10.0 | |
| 522 | + - 12.0 | |
| 474 | 523 | common_move_sequences: |
| 475 | 524 | n: 32 |
| 476 | 525 | ? motivation > tension_or_puzzle > contribution_statement > mechanism_or_theory_sketch > preview_of_approach > motivation |
modified
src/jof250/features.py
+13 −1
@@ -66,6 +66,18 @@ def seq_dist(s: pd.Series, top=6) -> dict: | ||
| 66 | 66 | seqs.append(" > ".join(mv)) |
| 67 | 67 | s2 = pd.Series(seqs); return cat_dist(s2, top) |
| 68 | 68 | |
| 69 | +def move_prevalence(s: pd.Series) -> dict: | |
| 70 | + """Share of introductions containing each move at least once, and median relative position of its first occurrence.""" | |
| 71 | + s = s.dropna(); n = len(s); out = {"n": int(n)} | |
| 72 | + if not n: return out | |
| 73 | + from collections import Counter | |
| 74 | + c = Counter(); pos = {} | |
| 75 | + for x in s: | |
| 76 | + mv = x.split("|") | |
| 77 | + for m in set(mv): c[m] += 1; pos.setdefault(m, []).append(mv.index(m) / max(len(mv) - 1, 1)) | |
| 78 | + for m, k in c.most_common(): out[m] = {"share": round(k / n, 3), "median_relative_position": round(float(np.median(pos[m])), 2)} | |
| 79 | + return out | |
| 80 | + | |
| 69 | 81 | def first_move_dist(s: pd.Series) -> dict: |
| 70 | 82 | return cat_dist(s.dropna().map(lambda x: x.split("|")[0] if x else None)) |
| 71 | 83 | |
@@ -85,7 +97,7 @@ def build_profile(name: str, df: pd.DataFrame) -> dict: | ||
| 85 | 97 | "abstract_sentences": q(a["abstract_n_sent"]), "magnitude_in_abstract_regex": share(a["magnitude_regex_abstract"]), |
| 86 | 98 | "introduction": {"paragraphs": q(a["intro_n_paragraphs"]), "words": q(a["intro_n_words"]), "contribution_paragraph_index": q(a[a["contribution_para_idx"] >= 0]["contribution_para_idx"]), |
| 87 | 99 | "contribution_relative_position": q((a[a["contribution_para_idx"] >= 0]["contribution_para_idx"] / a[a["contribution_para_idx"] >= 0]["intro_n_paragraphs"].clip(lower=1))), |
| 88 | − "first_move": first_move_dist(a["intro_moves_seq"]), "common_move_sequences": seq_dist(a["intro_moves_seq"]), "roadmap_present_llm": share(a["roadmap_llm"]), "roadmap_present_regex": share(a["roadmap_regex"]), | |
| 100 | + "first_move": first_move_dist(a["intro_moves_seq"]), "move_prevalence": move_prevalence(a["intro_moves_seq"]), "moves_per_intro": q(a["intro_n_moves"]), "common_move_sequences": seq_dist(a["intro_moves_seq"]), "roadmap_present_llm": share(a["roadmap_llm"]), "roadmap_present_regex": share(a["roadmap_regex"]), | |
| 89 | 101 | "literature_positioning_location": cat_dist(a["lit_positioning"]), "contribution_types": cat_dist(a["contribution_types"].dropna().str.split("|").explode())}, |
| 90 | 102 | "identification": {"causal_language_strength": q(a["causal_strength"]), "uses_causal_claim": share(a["uses_causal_claim"])}, |
| 91 | 103 | "results": {"economic_significance_discussed": share(a["econ_signif"]), "statistical_language": cat_dist(a["stat_lang"]), "magnitude_statements_in_intro": share(a["magnitude_in_intro"])}, |
| 92 | 104 | |