AI Agents for Financial Research:
Build an Auditable Research System面向金融研究的 AI Agent:
构建可审计的研究系统
Turn a research question into point-in-time evidence, reproducible calculations, challenged conclusions, and a source-backed memo.
把研究问题转化为时点一致的证据、可复现的计算、经过反证的结论,以及带来源的研究备忘录。

Decision brief
TL;DR
Define the entity, question, allowed sources, cutoff time, horizon, materiality threshold, and prohibited actions before retrieval begins.
Store when each fact was published and available. Do not answer a historical question with later revisions, restatements, or future market knowledge.
Use deterministic code for ratios and transformations. Keep formula version, inputs, period, currency, unit scale, and validation status.
Label fact, calculation, management statement, and analyst inference separately; attach claim-level evidence and require human review for consequential use.
在检索前明确实体、问题、允许的数据源、截止时间、研究周期、重要性阈值和禁止动作。
记录每项事实何时发布、何时可用。历史问题不能使用后来修订、重述或未来市场信息。
比率和转换由确定性代码执行,并保留公式版本、输入、期间、币种、单位尺度和验证状态。
分别标注事实、计算、管理层陈述和分析推断;绑定 Claim-level Evidence,高影响使用必须人工复核。
Scope: this guide is about research infrastructure, not an AI stock picker. It does not provide investment advice or authorize automated trade execution.
范围:本文讨论研究基础设施,不是 AI 选股器;不提供投资建议,也不授权自动交易。
Who this is for and what you need适用对象与前置条件
Use this architecture for company research, earnings preparation, diligence, risk monitoring, thematic research, and portfolio support. You need a trusted backend, persistent evidence storage, access to licensed or public data, deterministic calculation services, and a named human owner.
适用于公司研究、财报准备、尽调、风险监控、主题研究和投研支持。你需要可信后端、持久化证据库、合规的数据访问、确定性计算服务以及明确的人工负责人。
Define the research mandate before collecting data先定义研究任务,再收集数据
A vague prompt such as “analyze this stock” has no stable completion condition. Convert it into a machine-readable mandate so every retrieval and conclusion can be tested against scope.
“分析这只股票”没有稳定的完成条件。应把它转成机器可读的 Research Mandate,让每次检索和每项结论都能按范围验证。
{
"entity": {"ticker": "ACME", "exchange": "NASDAQ"},
"question": "What changed in operating quality?",
"as_of": "2026-07-30T20:00:00Z",
"periods": ["FY2024", "FY2025", "LTM"],
"allowed_sources": ["filings", "official_macro", "licensed_market"],
"materiality": {"revenue_pct": 2.0, "margin_bps": 100},
"prohibited_actions": ["trade_execution", "personalized_advice"],
"required_output": "evidence_backed_memo"
}Financial data source hierarchy: match claims to authority金融数据源层级:让结论匹配权威来源
| Priority优先级 | Source class来源类别 | Use it for适合用途 | Required caution必要注意 |
|---|---|---|---|
| 1 | Regulatory filings and official records监管 Filing 与官方记录 | Reported financials, legal disclosures, filing events已披露财务数据、法律披露、Filing 事件 | Preserve accession, form, period, amendment保留 Accession、Form、期间、修订 |
| 2 | Official economic and statistical sources官方经济与统计数据 | Rates, inflation, employment, macro context利率、通胀、就业与宏观背景 | Use vintages when series can be revised可修订序列应使用 Vintage |
| 3 | Licensed market and reference data授权市场与参考数据 | Prices, corporate actions, identifiers, estimates价格、公司行动、标识符、预测 | Record vendor, adjustment policy, entitlement记录供应商、复权规则与授权 |
| 4 | Issuer materials公司材料 | Management framing, guidance, presentations管理层表述、指引与演示 | Label as management statement, not verified fact标为管理层陈述,而非已验证事实 |
| 5 | News, transcripts, and secondary analysis新闻、Transcript 与二手分析 | Discovery, chronology, competing interpretations线索发现、事件顺序、不同解释 | Corroborate material claims upstream重大结论须向上游来源核实 |
Point-in-time data: prevent look-ahead biasPoint-in-time 数据:防止前视偏差
Every historical answer needs a knowledge cutoff. Store both the period the value describes and the time the value became available. Current FRED observations may include later revisions; use ALFRED vintage dates when reconstructing what was knowable on an earlier date. Apply the same discipline to amended filings, restatements, estimates, prices, and corporate actions.
每个历史问题都需要 Knowledge Cutoff。既要保存数值描述的期间,也要保存数值何时可用。当前 FRED Observation 可能包含后续修订;重建历史认知时应使用 ALFRED Vintage Date。同样的纪律也适用于 Amendment、Restatement、Estimate、Price 与 Corporate Action。
| Timestamp时间字段 | Meaning含义 | Failure if omitted缺失后果 |
|---|---|---|
period_end | Economic/accounting period described数据描述的经济或会计期间 | Quarter and fiscal-year mismatch季度与财年错配 |
published_at | When the source released it来源发布时间 | Future information enters past analysis未来信息进入历史分析 |
retrieved_at | When your system captured it系统采集时间 | No reproducible audit trail无法复现审计 |
vintage_at | Historical revision snapshot历史修订快照 | Revised macro data creates hindsight修订后宏观数据造成后见之明 |
Resolve the security and issuer before research研究前先解析证券与发行人身份
A ticker alone is not a durable identity. Map issuer, legal entity, security, exchange, share class, currency, CIK, LEI, ISIN or vendor identifier where available. Record the mapping source and effective dates. This prevents ticker reuse, dual-listing confusion, ADR/local-share mixing, and post-merger entity errors.
Ticker 不是持久身份。应映射 Issuer、Legal Entity、Security、Exchange、Share Class、Currency,以及可用的 CIK、LEI、ISIN 或 Vendor ID,并记录映射来源与生效日期。这能避免 Ticker 复用、双重上市、ADR/本地股混用和并购后的实体错误。
Reference architecture for an auditable research agent可审计研究 Agent 的参考架构
- Orchestrator: enforces scope, cutoff time, budgets, retries, and approval gates.
- Connectors: retrieve official and licensed sources without exposing credentials to the model.
- Evidence store: keeps raw bytes, headers, source URL, timestamps, entitlement, and content hash.
- Normalization layer: maps identity, periods, currencies, units, taxonomies, and corporate actions.
- Calculation service: runs versioned formulas and accounting checks deterministically.
- Research model: plans retrieval, compares evidence, explains calculations, identifies contradictions, and drafts the memo.
- 编排层:执行范围、截止时间、预算、重试和审批门槛。
- 连接器:检索官方与授权来源,不向模型暴露凭证。
- 证据库:保留原始字节、Header、Source URL、时间、授权与 Content Hash。
- 标准化层:映射身份、期间、币种、单位、Taxonomy 和 Corporate Action。
- 计算服务:确定性执行带版本的公式与会计检查。
- 研究模型:规划检索、比较证据、解释计算、识别矛盾并起草 Memo。
Step-by-step company research workflow公司研究的分步工作流
| Step步骤 | System action系统动作 | Required output必须输出 |
|---|---|---|
| 1 | Parse mandate and reject ambiguity解析任务并拒绝歧义 | scope, entity, as_of, periods |
| 2 | Resolve issuer/security identity解析发行人/证券身份 | identity record + effective date |
| 3 | Build a source plan by claim type按结论类型生成来源计划 | source class + query + fallback |
| 4 | Acquire and freeze raw evidence采集并冻结原始证据 | payload + URL + hash + timestamps |
| 5 | Normalize and validate contracts标准化并验证契约 | canonical facts + warnings |
| 6 | Calculate and reconcile计算并勾稽 | formula + inputs + result |
| 7 | Search for contradictions主动寻找反证 | supporting and opposing evidence |
| 8 | Draft, cite, and route for review起草、引用并提交复核 | memo + confidence + reviewer |
Acquire raw evidence before transforming it先保存原始证据,再做转换
Write the exact response and safe request metadata before parsing. A normalized table without its raw source cannot explain later parser changes, vendor corrections, or conflicting values. For SEC data, keep accession and document URL; for market data, keep venue, adjustment policy and vendor timestamp; for macro data, keep series ID and vintage.
解析前先写入完整响应与安全的请求元数据。失去原始来源的标准化表无法解释 Parser 变化、供应商更正或冲突数值。SEC 数据应保留 Accession 与 Document URL;市场数据应保留 Venue、复权规则和 Vendor Timestamp;宏观数据应保留 Series ID 与 Vintage。
Use an evidence contract for every financial fact为每个金融事实使用 Evidence Contract
{
"claim_type": "observed_fact",
"entity_id": "issuer:12345",
"security_id": "isin:US0000000001",
"field": "revenue",
"original_field": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
"value": 1250000000,
"currency": "USD",
"unit_scale": 1,
"period": {"start": "2025-01-01", "end": "2025-12-31"},
"published_at": "2026-02-18T21:04:00Z",
"source": {"url": "https://…", "retrieved_at": "2026-07-30T12:00:00Z", "sha256": "…"},
"validation": {"status": "accepted", "checks": ["identity", "period", "unit"]}
}Never collapse provenance: observed fact, management statement, deterministic calculation, and analyst inference are different record types even when they appear in the same paragraph.
不要压平 Provenance:观察事实、管理层陈述、确定性计算与分析推断是不同记录类型,即使它们出现在同一段中。
Make calculations deterministic and reproducible让计算确定、可复现
The model may select a metric and explain it, but code should execute the arithmetic. Reject incompatible periods, currencies, scales, and accounting definitions before calculation. Return the formula beside the answer.
模型可以选择指标并解释含义,但算术应由代码执行。计算前拒绝不兼容的期间、币种、单位尺度和会计定义,并在答案旁返回公式。
from decimal import Decimal
def operating_margin(operating_income, revenue):
assert operating_income["period"] == revenue["period"]
assert operating_income["currency"] == revenue["currency"]
assert revenue["value"] != 0
value = Decimal(str(operating_income["value"])) / Decimal(str(revenue["value"]))
return {
"metric": "operating_margin",
"formula_version": "operating_income/revenue@1",
"value": str(value),
"inputs": [operating_income["evidence_id"], revenue["evidence_id"]],
"period": revenue["period"],
"validation": "accepted"
}Challenge the thesis instead of confirming it挑战论点,而不是只寻找确认
A useful research agent actively searches for disconfirming evidence: amendments, adverse disclosures, segment divergence, working-capital deterioration, customer concentration, estimate dispersion, inconsistent management language, and alternative explanations. The output should show what would falsify the conclusion.
有价值的研究 Agent 会主动寻找反证:Amendment、不利披露、Segment 分化、营运资本恶化、客户集中度、Estimate 分歧、管理层措辞不一致和替代解释。输出中应说明什么情况会推翻结论。
Define the research memo output contract定义 Research Memo 输出契约
{
"as_of": "2026-07-30T20:00:00Z",
"answer": "Operating quality improved, but cash conversion weakened.",
"claims": [{
"text": "Operating margin increased 140 bps year over year.",
"type": "calculation",
"evidence_ids": ["ev_101", "ev_102", "calc_044"],
"confidence": "high"
}],
"contrary_evidence": ["Receivables grew faster than revenue."],
"unknowns": ["Customer-level retention was not disclosed."],
"review": {"required": true, "status": "pending"}
}Validation checklist before the agent answersAgent 回答前的验证清单
Security, compliance, cost, and latency controls安全、合规、成本与延迟控制
- Credentials: keep vendor keys server-side; use scoped secrets, rotation, and egress allowlists.
- Entitlements: record vendor licensing and prevent unauthorized redistribution in prompts, logs, and outputs.
- Prompt injection: treat filings, news, transcripts, and retrieved pages as untrusted data, never instructions.
- Cost: quote or estimate tool cost before expensive calls; cache immutable evidence and deduplicate queries.
- Latency: parallelize independent sources, set timeouts and retry budgets, and allow partial results with visible gaps.
- Audit: log mandate, tool calls, source hashes, formulas, model version, policy decisions, reviewer, and final artifact.
- 凭证:Vendor Key 留在服务端,使用最小权限、轮换和出口白名单。
- 数据授权:记录 Vendor License,防止在 Prompt、Log 和输出中未授权再分发。
- Prompt Injection:Filing、新闻、Transcript 和网页都是不可信数据,不是指令。
- 成本:高成本调用前报价或估算;缓存不可变证据并去重查询。
- 延迟:并行独立来源,设置 Timeout 与 Retry Budget,允许显示缺口的部分结果。
- 审计:记录任务、工具调用、Source Hash、公式、模型版本、策略决定、Reviewer 和最终产物。
Common failure modes and troubleshooting常见失败模式与排错
| Symptom现象 | Likely cause常见原因 | Fix修复 |
|---|---|---|
| Historical answer looks too accurate历史答案异常准确 | Later revisions or filings leaked into context后续修订或 Filing 泄漏进上下文 | Enforce published_at and vintage cutoff强制 Published Time 与 Vintage Cutoff |
| Two providers disagree两个供应商数据冲突 | Adjustment, timezone, currency, or identifier mismatch复权、时区、币种或标识符不一致 | Compare raw contracts; do not average silently比较原始契约,不要静默取平均 |
| Ratio cannot be reproduced比率无法复现 | Model arithmetic or missing formula inputs模型算术或公式输入缺失 | Run versioned deterministic calculation使用带版本的确定性计算 |
| Citations open but do not support the claim引用可打开但不支持结论 | Document-level instead of claim-level retrieval只做到文档级而非结论级检索 | Store bounded evidence spans and offsets保存受控 Evidence Span 与 Offset |
| Ticker maps to the wrong companyTicker 映射到错误公司 | Ticker reuse, share class, ADR, or mergerTicker 复用、Share Class、ADR 或并购 | Resolve durable issuer and security IDs解析持久的 Issuer 与 Security ID |
| Agent always confirms the promptAgent 总是确认用户论点 | No adversarial retrieval or falsification step缺少反证检索与证伪步骤 | Require contrary evidence and unknowns强制输出反方证据与未知项 |
How to evaluate a financial research agent如何评估金融研究 Agent
Score the evidence chain before prose quality. Build a dated benchmark containing questions, source snapshots, accepted calculations, contrary evidence, and reviewer decisions. Re-run it when models, prompts, connectors, parsers, or formula versions change.
先评估证据链,再评估文字质量。构建带日期的 Benchmark,包含问题、来源快照、认可计算、反方证据和 Reviewer 决定;模型、Prompt、Connector、Parser 或公式版本变化时重新运行。
Human review gates for consequential decisions高影响决策的人工复核门槛
Require a named reviewer when research may influence investment, trading, legal, compliance, credit, disclosure, or client communication. The reviewer must see source excerpts, unresolved conflicts, calculation inputs, cutoff time, confidence, and what the agent could not verify. Tool access must not silently expand into trade execution.
当研究可能影响投资、交易、法律、合规、信贷、披露或客户沟通时,必须指定 Reviewer。Reviewer 应看到来源片段、未解决冲突、计算输入、截止时间、置信度以及 Agent 无法验证的内容。工具访问不能静默扩展为交易执行。
QVeris implementation pattern for financial researchQVeris 金融研究实现模式
A QVeris-based agent can Discover capabilities by research intent, Inspect parameters and operating statistics, Probe candidate inputs and cost before execution, then Call the chosen capability. Use Usage History and the Credits Ledger for operational reconciliation. Your application should still preserve original authoritative sources, point-in-time fields, evidence contracts, calculation records, and review decisions.
基于 QVeris 的 Agent 可以按研究意图 Discover 能力,Inspect 参数与运行统计,在执行前 Probe 候选输入和成本,再 Call 选定能力;并通过 Usage History 与 Credits Ledger 做运行核对。应用仍需保存原始权威来源、Point-in-time 字段、Evidence Contract、计算记录与审核决定。
Recommended loop: define mandate → Discover → Inspect → Probe → Call → validate and normalize → calculate → challenge → cite → human review → reconcile usage.
推荐循环:定义任务 → Discover → Inspect → Probe → Call → 验证与标准化 → 计算 → 反证 → 引用 → 人工复核 → 核对用量。
Continue with the QVeris MCP documentation, SEC filing API implementation guide, and market data API guide.
FAQ
A system that resolves entities, retrieves time-bounded evidence, normalizes facts, calculates deterministically, challenges conclusions, and returns a cited artifact for review.
It follows a mandate, cutoff time, data contracts, validation rules, and an audit trail instead of producing an unsupported conversational answer.
Without it, later filings, revised macro data, restatements, and future corporate-action knowledge can create look-ahead bias.
Yes, if deterministic code uses validated inputs and stores the formula, units, periods, version, and source evidence.
Start with regulatory filings and official statistics, then licensed market data, issuer materials, and corroborated secondary context.
Separate facts, calculations, statements, and inference; require claim-level citations; validate contracts; refuse when evidence is insufficient.
No. Consequential investment, trading, legal, or compliance decisions require explicit human review. This workflow is not investment advice.
QVeris supports capability discovery, inspection, probing, calling, and usage review; your system keeps authoritative evidence and governance.
它解析实体、检索带时点的证据、标准化事实、确定性计算、挑战结论,并返回供复核的带引用产物。
它遵循任务、截止时间、数据契约、验证规则和审计链,而不是生成无证据的对话答案。
否则后续 Filing、修订后宏观数据、Restatement 与未来公司行动会造成前视偏差。
可以,但应由确定性代码使用已验证输入,并保存公式、单位、期间、版本和来源证据。
先用监管 Filing 与官方统计,再用授权市场数据、公司材料和经过核实的二手背景。
区分事实、计算、陈述与推断;强制 Claim-level Citation;验证契约;证据不足时拒绝。
不可以。高影响投资、交易、法律或合规决定需要明确人工复核;本文不构成投资建议。
QVeris 支持能力发现、检查、Probe、调用与用量复核;权威证据与治理仍由你的系统保存。
