How Financial Data Privacy Is Handled in ai-berkshire: Public Data and Cross-Validation

ai-berkshire treats financial data as publicly sourced information, requiring cross-validation from two independent open-access providers while strictly avoiding proprietary datasets, credentials, or private API endpoints.

The ai-berkshire repository implements a rigorous financial data privacy framework that relies exclusively on public sources rather than confidential feeds. According to the project’s security posture and skill documentation, the system never processes non-public datasets, ensuring complete transparency while maintaining analytical rigor through mandatory dual-source verification.

Open-Access Data Provider Requirements

The repository restricts all data ingestion to publicly available sources only. As defined in skills/financial-data.md, acceptable providers include Macrotrends, StockAnalysis, SEC EDGAR, Aastocks, Eastmoney, and cninfo. This policy eliminates any requirement for:

  • Private API keys or authentication tokens
  • Subscription-based proprietary databases
  • Internal corporate financial systems

The documentation explicitly states that every key metric must originate from verifiable public channels, ensuring that no confidential information ever enters the processing pipeline.

Dual-Source Verification Protocol

Before any financial figure is accepted, the system retrieves the metric from two independent sources. This cross-validation occurs within the validation utilities, where the error rate is calculated using the formula:


|source 1 – source 2| ÷ source 1 × 100%

The implementation relies on helper functions in tools/financial_rigor.py to perform exact arithmetic comparisons, while tools/report_audit.py audits generated reports to ensure proper citation and handling standards.

Error-Rate Thresholds

The validation workflow applies strict thresholds to determine data reliability:

  • Error ≤ 1%: Data is accepted and marked as validated
  • Error 1–5%: Flagged for minor discrepancy requiring review
  • Error > 5%: Rejected and escalated to original filing verification

When discrepancies arise between aggregated data sources and original regulatory filings (10-K, annual report PDFs, or HKEX disclosures), the original filing takes precedence according to the source hierarchy defined in the skill documentation.

Handling Non-Listed Companies and Estimates

For non-listed companies where only a single public source exists, the repository applies a distinct privacy-preserving pattern. Rather than fabricating or inferring additional sources, the data is explicitly marked as an estimate using the tag [估计] (estimated).

This approach maintains transparency without compromising the dual-source principle for publicly traded entities. As documented in the Financial-Data Skill:

“本规范适用于所有涉及企业财务数据的研究。每个关键数据必须来自两个独立来源,误差 > 1% 须标记。” — See the “数据源优先级” and “执行规范” sections in skills/financial-data.md.

Security Policy and Credential Management

The repository’s SECURITY.md file enforces a strict no-secrets policy that explicitly prohibits:

  • Storing API credentials or access tokens
  • Implementing private endpoint connections
  • Processing personally identifiable financial information

This security posture ensures that the entire workflow operates without authentication barriers, making the codebase fully reproducible and auditable by third parties.

Implementation Examples

The following Python patterns demonstrate the privacy-preserving validation logic without requiring private credentials.

Validating Revenue from Dual Sources

import requests
import json

def fetch_macrotrends(ticker: str) -> float:
    url = f"https://api.macrotrends.net/stocks/charts/{ticker}"
    data = requests.get(url).json()
    return float(data["revenue"])

def fetch_stockanalysis(ticker: str) -> float:
    url = f"https://api.stockanalysis.com/stocks/{ticker}/financials"
    data = requests.get(url).json()
    return float(data["revenue"])

def compare_values(val1: float, val2: float) -> float:
    return abs(val1 - val2) / val1 * 100

ticker = "PDD"
rev1 = fetch_macrotrends(ticker)
rev2 = fetch_stockanalysis(ticker)
error_pct = compare_values(rev1, rev2)

if error_pct <= 1:
    print(f"✅ Revenue {rev1:,} (error {error_pct:.2f}%) – sources validated")
elif error_pct <= 5:
    print(f"⚠️ Minor discrepancy ({error_pct:.2f}%) – review reasons")
else:
    print(f"❌ Major discrepancy – consult original filing")

Marking Estimates for Single-Source Entities

def estimate_metric(ticker: str, source: str) -> str:
    # Retrieves value from single public report

    value = fetch_from_public_report(ticker, source)
    return f"{value:,} [估计] – only one source available"

print(estimate_metric("米哈游", "cninfo"))

These examples mirror the repository’s cross-validation logic while accessing only public endpoints.

Summary

  • Only public data sources are utilized, eliminating credential management and private access requirements
  • Dual-source verification with calculated error rates ensures data integrity before acceptance
  • Original filing precedence resolves conflicts by prioritizing regulatory submissions over aggregated data
  • Explicit estimation markers flag non-listed company data when single-source limitations apply
  • No secrets storage according to SECURITY.md, ensuring complete transparency in data handling

Frequently Asked Questions

Does ai-berkshire store or process any private financial credentials?

No. The repository explicitly prohibits storing API keys, authentication tokens, or access credentials in SECURITY.md. All data retrieval operates against public endpoints requiring no authentication, ensuring that no private financial infrastructure is accessed or exposed.

How does the system handle financial data for non-listed companies?

When analyzing non-listed entities where only one public source exists, the system marks the data as an estimate using the [估计] tag. No cross-validation is performed in these cases, but the limitation is transparently disclosed to downstream users rather than hidden or fabricated.

What happens when two independent data sources disagree significantly?

If the calculated error rate exceeds 5%, the data is rejected pending manual review. When the discrepancy falls between 1% and 5%, the system flags a minor discrepancy. In all cases where aggregated data conflicts with original regulatory filings (10-K, annual reports), the original filing takes precedence according to the hierarchy in skills/financial-data.md.

Where is the data validation logic implemented in the codebase?

The core validation utilities reside in tools/financial_rigor.py, which handles exact arithmetic comparisons and error-rate calculations. Report auditing and citation verification occur in tools/report_audit.py, while the policy specifications and source hierarchies are documented in skills/financial-data.md.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →