kunalchevuri/question-evasion-detection-LLM-framework_research

GitHub: kunalchevuri/question-evasion-detection-LLM-framework_research

一个利用大语言模型自动检测财报电话会议中管理层回避行为,并研究其与市场异常收益关联性的金融文本分析框架。

Stars: 0 | Forks: 0

# question-evasion-detection-LLM-framework 研究 用于检测财报电话会议 Q&A 中机构性回避问题的 LLM-as-Judge 框架,并测试其是否能预测随后的市场反应。 ## 研究问题 在财报电话会议中回避分析师问题的管理团队,其市场反应(下一次财报发布前后 3 天的累计异常收益率)是否与直接回答的团队不同?LLM judge 会根据回避的四个维度(无回应性、模糊性、转移话题、含糊其辞),对 SEC 提交的财报电话会议记录语料库中的每一对分析师提问/管理层回答进行评分,并且由此得出的回避指标将与未来的市场反应、基本面数据和语言情绪进行对比测试。 ## 核心结果 **无结果(Null)。** 在最终的分析面板(155 个公司-季度观测值,32 家公司,财报年份 2015-2023)上,三个回避指标(平均值、方差、最大回避得分)均与 3 天 CAR 没有显著相关性(所有 \|r\| < 0.05,所有 p > 0.55),并且将回避得分添加到分类模型(基本面 + 情绪特征 → CAR 方向)中,并不能使样本外 AUROC 提升到超过自助抽样法 (bootstrap) 95% 置信区间所归结为随机因素的水平。该零结果在 5 折交叉验证下以及排除 2020 年(COVID)财报年份后均保持稳定。有关完整的分析,请参见 `results/final_robustness_checks.txt` 和 `results/final_correlation_matrix.csv`。 ## Pipeline 1. **抓取** (`scraper.py`, `fmp_scraper.py`) — 获取向 SEC 提交的财报电话会议记录。 2. **解析** (`parser.py`, `parse_new_transcripts.py`, `backfill_tickers.py`) — 提取 Q&A 部分,将分析师提问与管理层回答配对,解析公司股票代码。 3. **过滤** (`filter_before_scoring.py`, `prune_and_confirm.py`) — 在花费资金进行 LLM 评分之前,排除 REITs/SPACs 以及只有一份会议记录的公司。 4. **评分** (`judge.py`) — LLM-as-judge (Claude) 对每对 Q&A 在 4 个维度上进行评分(每个维度 1-5 分制),并重新缩放为 0-100 的回避得分。 5. **构建特征** (`features.py`, `build_features_new_transcripts.py`) — 将会议记录级别的回避指标与未来的 CAR (yfinance)、基本面数据(SEC XBRL,仅限上一季度的值)以及 Loughran-McDonald 情绪合并到 `data/features/master_panel.csv` 中。 6. **建模** (`models.py`) — 在按时间顺序划分的训练/测试集上进行嵌套的逻辑回归 / XGBoost 配置(基本面 → + 情绪 → + 回避),并使用自助抽样法 (bootstrap) 计算回避得分增量价值的置信区间。 7. **稳健性** (`robustness_checks.py`, `final_verification.py`) — 5 折交叉验证、排除 COVID 年份的敏感性分析、功效分析、公司集中度、行业构成。 8. **人工验证** (`sample_validation.py`, `merge_annotations.py`, `compute_kappa.py`) — 两名独立的人工评分员对 75 对分层抽样的问答进行评分;计算 Cohen's kappa(未加权 + 二次加权)以及与 LLM judge 的 Pearson r。 9. **跨模型验证** (`multi_llm_judge.py`, `compare_llm_judges.py`, `plot_cross_rater_agreement.py`) — 由第二个 LLM(Groq 托管的 `llama-3.3-70b-versatile`)对相同的 75 对问答重新评分,以测试回避的构念是否能跨模型架构通用,而不是特定于主要的 judge 模型。 `final_verification.py` 会直接从磁盘上的当前文件重新推导每一个核心数据,不依赖任何缓存的输出 —— 它是在任何图表或数据写入论文之前确认分析的预定入口点。 ## 仓库结构 ``` src/ all pipeline scripts (see Pipeline above) data/ raw_transcripts/ scraped .htm filings parsed_qa/ parsed Q&A pairs + LLM evasion scores features/ master_panel.csv (final modeling panel) validation/ human-annotated samples + second-LLM scores for cross-validation results/ all figures, tables, and text output from modeling/robustness/verification scripts ``` ## 数据来源 - 财报电话会议记录:SEC EDGAR 文件 - 市场数据:Yahoo Finance (`yfinance`) - 基本面数据:SEC XBRL 结构化数据 (`data.sec.gov/api/xbrl`) - 情绪词典:Loughran-McDonald 金融情绪词汇表 - LLM judge:Claude (Anthropic)、Llama 3.3 70B (Groq) ## 复现步骤 1. 克隆仓库并安装依赖: git clone cd question-evasion-detection-LLM-framework_research pip install -r requirements.txt 2. 如果要重新运行任何 LLM 评分步骤(`judge.py`、`multi_llm_judge.py`),请将相关的 API 密钥设置为环境变量: export ANTHROPIC_API_KEY=... export GROQ_API_KEY=... # 仅在跨模型验证步骤中需要 这些步骤已经生成的所有数据(解析后的 Q&A 对、回避得分、人工/跨 LLM 标注)均已提交至仓库,因此除非您想从头重新生成,否则此步骤是可选的。 3. 从当前磁盘上的文件复现论文中的每一个核心数据: python src/final_verification.py 这是规范的入口点 —— 它直接从 `data/` 和 `results/` 重新推导溯源计数、描述性统计、相关性矩阵、分类结果(包括表 2 的自助抽样法置信区间)、稳健性检验(5 折交叉验证、排除 COVID 年份、功效分析)以及人工验证的重合度,无需依赖缓存或之前打印的输出。 ## 许可证 MIT — 详见 `LICENSE`。
标签:DLL 劫持, Python, 后端开发, 大语言模型, 文本挖掘, 无后门, 逆向工具, 量化研究, 金融分析