← Back to Ideas
November 2025 • V12/V13 Vision

Company Scoring System: Multi-Dimensional Intelligence

Score companies at inflection points using 10-20 years of historical patterns. Multi-dimensional scores (0-10) across quality, risk, success probability, speed, and sustainability. Different product from V7 trading signals - this is Raul's strategic scoring vision.
📊 Company Scoring 🎯 Raul's Priority ⏰ 6-12 Month Horizon 📖 25 min read

The Core Insight: V7 vs V12

Key Difference from Trading Signals:

Aspect V7 (Trading Signals) V12 (Company Scoring)
Trigger Quarterly SEC filings Stock inflection points
Lookback 180 days 1-2 years
Output BUY/SELL/SKIP + conviction Multi-dimensional score (0-10)
Horizon 90 days 6-12 months
Frequency Every quarter (4x/year) Monthly scoring updates
Use Case Tactical trading Strategic scoring, monitoring
Customer Traders, hedge funds Analysts, credit, screening

They're complementary products!

  • V7: "Should I trade this filing?"
  • V12: "How good is this company overall?"

The Big Idea: Learning from Inflection Points

Instead of quarterly filings triggering signals, scan 10-20 years of stock history to find inflection points (breakouts, collapses, sustained trends). Then look back 1-2 years at events leading up to that moment and learn what predicted success/failure.

Inflection Point Detection

Algorithmic Pattern Recognition:

def detect_inflection_points(ticker, lookback_years=10):
    """
    Scan price history to find moments of interest
    Returns: List of inflection events with scores
    """

    inflections = []

    for date in price_history:
        # Pattern 1: Flat → Breakout
        if (volatility_60d_before < 0.15 and
            return_90d_after > 0.30 and
            sustained_for_days > 180):
            inflections.append({
                'date': date,
                'type': 'breakout_success',
                'score': 9,  # Great outcome
                'return_6m': 35.0,
                'return_12m': 58.0
            })

        # Pattern 2: High → Collapse
        if (price > sma_200 * 1.8 and
            return_90d_after < -0.40 and
            max_drawdown > -0.50):
            inflections.append({
                'date': date,
                'type': 'collapse',
                'score': 1,  # Terrible outcome
                'return_6m': -45.0,
                'max_drawdown': -62.0
            })

        # Pattern 3: Sustained Bull Run
        if (consecutive_positive_months >= 6 and
            total_return_6m > 0.50 and
            sharpe_ratio > 2.0):
            inflections.append({
                'date': date,
                'type': 'sustained_success',
                'score': 8,  # Great outcome
                'return_12m': 75.0,
                'sharpe': 2.3
            })

        # Pattern 4: Recovery from Distress
        if (was_distressed_before and
            return_12m_after > 1.0 and
            volatility_normalized):
            inflections.append({
                'date': date,
                'type': 'turnaround_success',
                'score': 10,  # Exceptional
                'return_12m': 120.0
            })

    return inflections

Industry-Specific Catalysts

Biotech Examples:

# FDA Approval Success
if event_type == "approved_drug_trial_phase3" and return_12m > 0.80:
    score = 9  # Major success

# FDA Rejection Collapse
if event_type == "failed_drug_trial_phase3" and return_6m < -0.60:
    score = 1  # Disaster

Mining Examples:

# Resource Discovery Success
if event_type == "announced_resource_estimate_major" and return_12m > 1.5:
    score = 10  # Exceptional discovery

# Permit Rejection
if event_type == "denied_mining_permit" and return_6m < -0.50:
    score = 2  # Project dead

Multi-Dimensional Scoring Framework

Output Format (Not Just Binary!)

{
  "company_score": 7.5,       // 0-10: Overall quality/outlook
  "risk_score": 6.8,          // 0-10: Risk level (10=safest)
  "success_probability": 0.72,// 0-1: Probability of positive outcome
  "speed_score": 5.0,         // 0-10: How fast catalysts play out
  "sustainability_score": 8.2,// 0-10: How long success lasts

  "predicted_return_6m": 18.5,  // % return estimate
  "predicted_return_12m": 32.0, // % return estimate
  "max_drawdown_estimate": -15.0,
  "sharpe_estimate": 1.8,

  "key_catalysts": [
    "approved_drug_trial_phase3",
    "raised_capital_large",
    "announced_strategic_partnership"
  ],

  "risk_factors": [
    "high_dilution_risk",
    "competitive_threats",
    "regulatory_uncertainty"
  ],

  "narrative": "Company shows strong catalyst momentum with FDA
               approval and secured financing. Partnership with
               Fortune 500 validates technology. Risk is moderate
               due to competitive landscape."
}

Scoring Rubric

Company Score (0-10):

Risk Score (0-10):

Success Probability:

Training Data Generation

Algorithm:

def generate_scoring_training_data(start_year=2003, end_year=2023):
    """
    Scan all companies for 20 years to find inflection points
    """

    training_examples = []

    for company in all_public_companies:
        # Get full price history
        prices = get_price_history(company, start_year, end_year)

        # Detect inflection points
        inflections = detect_inflection_points(company, prices)

        for inflection in inflections:
            # Look back 1-2 years for events
            lookback_start = inflection['date'] - timedelta(days=365*2)
            events = get_events(
                company,
                start_date=lookback_start,
                end_date=inflection['date']
            )

            if not events:
                continue  # Skip if no events to learn from

            # Calculate outcome scores
            outcomes = calculate_outcome_scores(
                company,
                inflection['date'],
                forward_periods=[90, 180, 365]
            )

            # Create training example
            example = {
                'cik': company.cik,
                'inflection_date': inflection['date'],
                'inflection_type': inflection['type'],

                # Prompt: 1-2 year event history
                'prompt': format_events_to_prompt(events, depth='deep'),

                # Labels: Multi-dimensional scores
                'company_score': outcomes.company_score,
                'risk_score': outcomes.risk_score,
                'success_probability': outcomes.success_probability,
                'speed_score': outcomes.speed_score,
                'sustainability_score': outcomes.sustainability_score,

                # Ground truth returns
                'actual_return_6m': outcomes.return_6m,
                'actual_return_12m': outcomes.return_12m,
                'actual_sharpe': outcomes.sharpe,
                'actual_max_drawdown': outcomes.max_drawdown,

                # Event narrative
                'key_catalysts': identify_key_catalysts(events),
                'risk_factors': identify_risk_factors(events),
            }

            training_examples.append(example)

    return training_examples

Expected Training Data Volume:

  • ~5,000 public companies
  • 20 years of history
  • ~3-5 inflection points per company on average
  • Total: 15,000-25,000 training examples (smaller than V7's 228K but higher quality)

Real-World Applications

1. Raul's Company Scoring Dashboard

Company: MRNA (Moderna)
Current Score: 8.2 / 10
Risk Score: 6.5 / 10 (Moderate)
Success Probability: 74%

Recent Events:
- approved_drug_trial_phase3 (2 weeks ago)
- raised_capital_large (1 month ago)
- announced_strategic_partnership (3 months ago)

Outlook: Strong momentum with FDA approval and financing secured.
Alert: Monitor for competitive threats in mRNA space.

2. Credit Risk Assessment

Company: XYZ Corp
Risk Score: 3.2 / 10 (HIGH RISK)
Distress Probability: 45%

Warning Signals:
- covenant_violation (recent)
- material_weakness (audit)
- workforce_reduction (3 quarters)

Recommendation: Increase credit monitoring frequency

3. Investment Screening

-- Find high-quality opportunities
SELECT company_name, score, risk_score, success_probability
FROM company_scores
WHERE company_score >= 7.0
  AND risk_score >= 6.0
  AND success_probability >= 0.70
  AND industry = 'Biotech'
ORDER BY company_score DESC

4. Portfolio Monitoring

ALERT: 3 holdings scored below 5.0 (review needed)

AAPL: 8.5 → 7.2 (↓1.3) - Still strong
MRNA: 7.8 → 8.2 (↑0.4) - Improving
XYZ:  6.2 → 4.1 (↓2.1) ⚠️ REVIEW URGENTLY

Why This Could Work Better Than V7

Advantages:

  1. More Training Data:
    • 10-20 years × thousands of companies = huge dataset
    • Not locked to quarterly filings
    • Learn from all important moments
  2. Richer Context:
    • 1-2 year event history vs 180 days
    • See full catalyst buildups
    • Understand multi-quarter narratives
  3. Better Labels:
    • Multi-dimensional scores vs binary profitable/not
    • Industry-specific outcomes
    • Risk-adjusted success metrics
  4. Industry Specialization:
    • Train separate models: biotech, mining, tech, retail
    • Learn industry-specific catalyst patterns
    • Better accuracy per sector
  5. Broader Applications:
    • Trading (like V7)
    • Credit analysis
    • Portfolio monitoring
    • Investment screening
    • Company research

Implementation Path

Phase 1: Inflection Point Detection (2-3 weeks)

Phase 2: Training Data Generation (1 week)

Phase 3: Model Training (1 week)

Phase 4: Product Integration (2 weeks)

Total: ~6-8 weeks after V7 proven

Success Metrics

Model Performance:

Product Success:

Pricing Strategy

Standalone Product:

Or Bundle with V7:

Why Raul Cares About This

This is different from tactical trading signals. This is strategic intelligence about company quality and outlook.

Dashboard Ready Monthly scores for all companies

Risk Monitoring Track score changes over time

Screening Tool Find high-quality opportunities systematically

Credit Analysis Early warning system for distress

Multi-Dimensional Not just "buy or not" - understand quality, risk, timing, sustainability

This is the vision: A living, breathing intelligence system that scores every public company monthly based on their SEC filing events, with multi-dimensional insights that help make strategic decisions - not just tactical trades.