Methodology

Overview

Our earnings call tone dispersion factor follows a rigorous quantitative methodology that combines natural language processing with modern portfolio theory. This page details the step-by-step process from raw data to final portfolio construction.

Data Processing Pipeline

1. Earnings Call Data Collection

Source: Quarterly earnings call transcripts from 2005-2025

# Data structure
calls = {
    'symbol': str,          # Stock ticker
    'company_id': int,      # Unique company identifier  
    'year': int,           # Calendar year
    'quarter': int,        # Quarter (1-4)
    'date': datetime,      # Earnings call timestamp
    'tone_dispersion': float,  # Core signal metric
    'call_key': str        # Unique call identifier
}

2. Tone Dispersion Calculation

Definition: Tone dispersion measures the variability and uncertainty in earnings call language, capturing:

Mathematical Formulation:

tone_dispersion = σ(sentiment_scores) + λ * uncertainty_factor

Where:

3. Signal Processing and Factor Construction

Date Mapping

# Map earnings calls to trading dates
trade_date = earnings_call_date + BusinessDay(1)

Rationale: Earnings calls typically occur after market close, so the signal becomes actionable on the next business day.

Cross-Sectional Normalization

# Z-score normalize within each date
factor = (tone_dispersion - daily_mean) / daily_std

Purpose: Ensures factor is market-neutral and comparable across time periods.

Factor Sign Convention

# Invert factor for economic intuition
factor = -tone_dispersion_zscore

Logic:

Portfolio Construction

1. Weight Calculation

Base Weights: Ranks converted to centered weights in [-1, 1] range

ranks = factor.groupby(date).rank(method='average')
n_assets = factor.groupby(date).count()
centered_ranks = (2 * ranks - n_assets - 1) / n_assets

Nonlinear Transformation: Enhance signal distinction

# Reduce noise in middle quintiles
enhanced_signal = sign(centered_ranks) * |centered_ranks|^0.75

Gross Exposure Scaling:

target_gross = 1.0  # 100% gross exposure
weights = enhanced_signal / sum(|enhanced_signal|) * target_gross

2. Turnover Control with Adaptive Smoothing

Standard Smoothing:

new_weights = (1 - α) * target_weights + α * previous_weights

Adaptive Enhancement: Reduce smoothing for significant signal changes

signal_change = |target_weights - previous_weights|
significant_threshold = quantile(signal_change, 0.75)

adaptive_α = α - 0.25 if signal_change > significant_threshold else α
blended_weights = (1 - adaptive_α) * target + adaptive_α * previous

Constraints Enforcement:

  1. Market Neutrality: sum(weights) = 0
  2. Gross Exposure: sum(|weights|) = 1.0
  3. Position Limits: Individual position caps (if applicable)

3. Rebalancing and Execution

Frequency: Daily rebalancing based on new earnings call data Implementation:

Risk Management

1. Factor Neutralization

Fama-French Factor Exposure Control:

# Neutralize against market, size, value, profitability, investment factors
neutralized_factor = residual(factor ~ mktrf + smb + hml + rmw + cma)

2. Turnover Management

Smoothing Parameter: α = 0.75 (75% weight retention)

3. Position Sizing

Equal Risk Contribution: Positions sized by inverse volatility (optional) Sector Neutrality: Optional sector constraints to reduce style bias Liquidity Filters: Exclude low-volume stocks to ensure executability

Performance Attribution

1. Factor Timing

Signal Decay Analysis: Factor performance over different holding periods

2. Cross-Sectional Analysis

Quintile Performance:

3. Risk-Adjusted Metrics

Information Coefficient: Correlation between factor and forward returns Risk-Adjusted IC: IC scaled by factor volatility Sharpe Ratio: Return/risk ratio with turnover adjustment

Validation and Testing

1. Statistical Significance

t-statistics: Test IC significance across time periods Bootstrap Analysis: Confidence intervals for performance metrics Regime Analysis: Performance in different market conditions

2. Robustness Checks

Sub-period Analysis: Performance consistency across time Sector Analysis: Factor performance within industries Size and Style Controls: Performance after risk factor neutralization

3. Implementation Validation

Comprehensive Test Suite:


Next Steps