Return on Investment (ROI) и Return on Invested Capital (ROIC)

Метрики доходности образуют фундамент количественного анализа инвестиций. ROI и ROIC решают разные задачи: первая оценивает эффективность конкретной инвестиции, вторая — операционную эффективность бизнеса. Понимание различий между этими показателями определяет корректность их применения в стратегиях отбора активов.

Показатель ROI (Return on Investment) используется для оценки отдельных сделок и портфелей. Показатель ROIC (Return on Invested Capital) применяется в фундаментальном анализе для выявления компаний с устойчивым конкурентным преимуществом. Метрики дополняют друг друга: ROI оценивает эффективность инвестора, ROIC — эффективность бизнес-модели компании.

ROI: механика расчета и применение

Формула и компоненты ROI следующие:

ROI = (Current Value − Initial Investment) / Initial Investment

где:

  • Current Value — текущая стоимость инвестиции;
  • Initial Investment — первоначальный капитал.

ROI выражается в процентах или долях единицы. Значение 0.25 означает доходность 25%. Метрика учитывает все денежные потоки: дивиденды, купоны, прирост капитала. Для акций Current Value включает рыночную цену плюс накопленные дивиденды.

Расчет игнорирует временную стоимость денег. Инвестиция с ROI 50% за год и за пять лет дает одинаковое значение метрики, хотя экономический смысл различается радикально.

Временной аспект и annualized ROI

Annualized ROI устраняет проблему сравнения инвестиций с разными сроками. Он рассчитывается по формуле:

Annualized ROI = [(1 + ROI)^(1/n) − 1]

где:

  • ROI — совокупная доходность;
  • n — количество лет владения активом.

Пример: Инвестиция $10,000 выросла до $16,000 за 3 года.

  • Simple ROI = 0.60 (60%).
  • Annualized ROI = (1.60)^(1/3) − 1 = 0.169 или 16.9% годовых.

Эта нормализация позволяет корректно сравнивать краткосрочные и долгосрочные позиции.

Для непрерывного начисления используется логарифмическая форма:

Continuous ROI = ln(Current Value / Initial Investment) / n

Эта формула удобна при работе с ценовыми рядами в логарифмическом масштабе, частом подходе исследований в количественных финансах.

Ограничения метрики

  1. ROI не учитывает риск. Две инвестиции с ROI 30% могут иметь волатильность 10% и 40% соответственно;
  2. Метрика не отражает путь достижения результата: плавный рост или серию резких колебаний;
  3. Отсутствует учет альтернативных издержек. ROI 8% годовых выглядит положительно, но при ставке risk-free 5% реальная премия составляет только 3%. Для корректной оценки необходим расчет альфа доходности относительно бенчмарка;
  4. Метрика чувствительна к выбору точек измерения. При волатильном активе ROI зависит от момента фиксации результата. Использование скользящих окон и множественных точек оценки снижает этот эффект.

ROIC: операционная эффективность компании

ROIC измеряет способность компании генерировать прибыль из операционного капитала. Метрика изолирует операционную деятельность от структуры финансирования.

В отличие от ROI показатель ROIC менее зависим от удачи инвестора и больше нацелен на оценку качества работы менеджмента корпорации, стоящей за акцией. ROIC использует операционную прибыль после налогов (NOPAT), исключая влияние процентных расходов. Это позволяет сравнивать компании с разным уровнем долговой нагрузки. Метрика показывает эффективность использования всех источников капитала: собственного и заемного.

Формула и компоненты ROIC:

ROIC = NOPAT / Invested Capital

NOPAT = Operating Income × (1 − Tax Rate)

Invested Capital = Total Assets − Non-Interest-Bearing Current Liabilities

Альтернативный расчет Invested Capital:

Invested Capital = Shareholders’ Equity + Total Debt − Cash and Cash Equivalents

Компоненты NOPAT:

  • Operating Income — операционная прибыль (EBIT);
  • Tax Rate — эффективная налоговая ставка.
👉🏻  Что такое хеджирование и как оно работает?

Компоненты Invested Capital:

  • Total Assets — совокупные активы;
  • Non-Interest-Bearing Current Liabilities — беспроцентные краткосрочные обязательства (кредиторская задолженность, начисления);
  • Cash and Cash Equivalents — денежные средства (при использовании второй формулы)

Исключение избыточных денежных средств из капитальной базы улучшает точность метрики. Компании часто держат кэш для операционных нужд, но крупные остатки искажают ROIC вниз, так как денежные средства на счетах, без участия в операционной деятельности, как правило, приносят минимальную доходность.

Интерпретация значений

ROIC выше стоимости капитала (WACC) указывает на создание экономической стоимости. Спред ROIC − WACC определяет масштаб конкурентного преимущества. Значение 15% при WACC 8% означает, что каждый доллар инвестированного капитала генерирует $0.07 экономической прибыли.

Пороговые значения варьируются по отраслям. Технологические компании демонстрируют ROIC 20-30%, капиталоемкие производства — 8-12%. Сравнение ROIC внутри сектора исключает структурные отраслевые различия.

Динамика ROIC информативнее абсолютных значений. Растущий тренд сигнализирует об улучшении операционной эффективности или усилении конкурентной позиции. Падающий ROIC при росте выручки указывает на проблемы масштабирования или снижение маржинальности.

Сравнительный анализ метрик

Таблица различий ROI vs ROIC представлена ниже:

Характеристика ROI ROIC
Объект измерения Доходность инвестиции Операционная эффективность
Перспектива Инвестор Компания
Числитель Прирост стоимости NOPAT
Знаменатель Начальная инвестиция Invested Capital
Учет структуры капитала Да Нет
Временной горизонт Любой Годовой (обычно)
Применение Оценка сделок, портфелей Фундаментальный анализ, скрининг
Чувствительность к долгу Высокая Низкая

Итак, вот что важно понимать:

ROI обычно применяется для оценки результативности трейдинга и инвестиционных решений. Данная метрика отвечает на вопрос: насколько выгодной оказалась позиция? Используется для сравнения альтернативных вложений, расчета эффективности стратегий, оценки портфельных управляющих.

ROIC обычно используется в скрининге акций для выявления качественных компаний. Эта метрика входит в модели оценки стоимости бизнеса (DCF, EVA). Применяется для анализа устойчивости конкурентных преимуществ и выявления value traps — компаний с низкой оценкой, но слабой операционной эффективностью.

Иногда ROI и ROIC комбинируют друг с другом. Данное решение нередко усиливает аналитическую базу. Хотя, тут важно понимать, что высокий ROIC компании не гарантирует положительный ROI инвестору, если акции торгуются с премией к справедливой стоимости. И также может быть обратная ситуация: низкий ROIC может сочетаться с высоким ROI при покупке недооценных активов с последующей переоценкой рынком.

Взаимосвязь с другими финансовыми показателями

Показатель ROIC (Return on Invested Capital) коррелирует с некоторыми метриками прибыльности, к примеру ROE (Return on Equity). Однако, в отличие от последнего, показывает эффективность использования капитала, исключая влияние долгового рычага. Высокий ROE при низком ROIC указывает на то, что доходность собственного капитала создается в основном за счет заемного финансирования, а не операционной эффективности.

Для более точной оценки полезно сочетать ROIC с рыночными мультипликаторами, такими как P/E и EV/EBITDA. Вот как это работает: компания с относительно умеренным ROIC, но низким P/E, может быть более привлекательной, чем компания с высоким ROIC, но чрезмерно дорогой. Например, небольшая биотехнологическая компания с ROIC 14% и P/E 10 может представлять большую инвестиционную ценность, чем крупный технологический гигант с ROIC 25% и P/E 40. Несмотря на то, что у первой компании ROIC ниже, рынок недооценил ее прибыльность, и цена акции позволяет получить более высокую доходность на вложенный капитал.

👉🏻  Фьючерсы: назначение, виды контрактов, сроки, маржа

Кроме того, свободный денежный поток (Free Cash Flow) тесно связан с ROIC через капитальные затраты. Высокий ROIC при низких капитальных расходах (Capex) характерен для asset-light моделей с сильным денежным потоком, тогда как низкий ROIC при высоких Capex встречается в капиталоемких отраслях, где высокая стоимость активов и конкуренция снижают отдачу на капитал.

Практическая реализация: расчет на Python

Давайте рассмотрим как можно рассчитать показатели ROI и ROIC на примере доходностей акций Apple за последние 5 лет:

import yfinance as yf
import pandas as pd
import numpy as np
pd.set_option('display.expand_frame_repr', False)

def get_financial_data(ticker, period='5y'):

    stock = yf.Ticker(ticker)
    
    # Ценовые данные
    prices = stock.history(period=period)
    
    # Финансовые отчеты
    income_stmt = stock.financials
    balance_sheet = stock.balance_sheet
    cashflow = stock.cashflow
    
    return {
        'prices': prices,
        'income_stmt': income_stmt,
        'balance_sheet': balance_sheet,
        'cashflow': cashflow,
        'info': stock.info
    }

# Пример загрузки данных
ticker = 'AAPL'
data = get_financial_data(ticker)
data
{'prices':                                  Open        High         Low       Close     Volume  Dividends  Stock Splits
 Date                                                                                                         
 2020-10-12 00:00:00-04:00  116.784482  121.764799  116.025763  121.006081  240226800        0.0           0.0
 2020-10-13 00:00:00-04:00  121.852359  121.969088  116.385689  117.796127  262330500        0.0           0.0
 ...
 2025-10-09 00:00:00-04:00  257.809998  258.000000  253.139999  254.039993   38322000        0.0           0.0
 2025-10-10 00:00:00-04:00  254.940002  256.380005  244.000000  245.270004   61782400        0.0           0.0

[1256 rows x 7 columns],
 'income_stmt':                                                       2024-09-30    2023-09-30    2022-09-30    2021-09-30
 Tax Effect Of Unusual Items                         0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
 Tax Rate For Calcs                                  2.410000e-01  1.470000e-01  1.620000e-01  1.330000e-01
 Normalized EBITDA                                   1.346610e+11  1.258200e+11  1.305410e+11  1.231360e+11
 Net Income From Continuing Operation Net Minori...  9.373600e+10  9.699500e+10  9.980300e+10  9.468000e+10
 Reconciled Depreciation                             1.144500e+10  1.151900e+10  1.110400e+10  1.128400e+10
 Reconciled Cost Of Revenue                          2.103520e+11  2.141370e+11  2.235460e+11  2.129810e+11
 EBITDA                                              1.346610e+11  1.258200e+11  1.305410e+11  1.231360e+11
 EBIT                                                1.232160e+11  1.143010e+11  1.194370e+11  1.118520e+11
 Net Interest Income                                          NaN -1.830000e+08 -1.060000e+08  1.980000e+08
 Interest Expense                                             NaN  3.933000e+09  2.931000e+09  2.645000e+09
 Interest Income                                              NaN  3.750000e+09  2.825000e+09  2.843000e+09
 Normalized Income                                   9.373600e+10  9.699500e+10  9.980300e+10  9.468000e+10
 Net Income From Continuing And Discontinued Ope...  9.373600e+10  9.699500e+10  9.980300e+10  9.468000e+10
 Total Expenses                                      2.678190e+11  2.689840e+11  2.748910e+11  2.568680e+11
 Total Operating Income As Reported                  1.232160e+11  1.143010e+11  1.194370e+11  1.089490e+11
 Diluted Average Shares                              1.540810e+10  1.581255e+10  1.632582e+10  1.686492e+10
 Basic Average Shares                                1.534378e+10  1.574423e+10  1.621596e+10  1.670127e+10
 Diluted EPS                                         6.080000e+00  6.130000e+00  6.110000e+00  5.610000e+00
 Basic EPS                                           6.110000e+00  6.160000e+00  6.150000e+00  5.670000e+00
 Diluted NI Availto Com Stockholders                 9.373600e+10  9.699500e+10  9.980300e+10  9.468000e+10
 Net Income Common Stockholders                      9.373600e+10  9.699500e+10  9.980300e+10  9.468000e+10
 Net Income                                          9.373600e+10  9.699500e+10  9.980300e+10  9.468000e+10
 ...

  'info': {'address1': 'One Apple Park Way',
  'city': 'Cupertino',
  'state': 'CA',
  'zip': '95014',
  'country': 'United States',
  'phone': '(408) 996-1010',
  'website': 'https://www.apple.com',
  'industry': 'Consumer Electronics',
  'industryKey': 'consumer-electronics',
  'industryDisp': 'Consumer Electronics',
  'sector': 'Technology',
  'sectorKey': 'technology',
  'sectorDisp': 'Technology',
...

  'dividendRate': 1.04,
  'dividendYield': 0.42,
  'exDividendDate': 1754870400,
  'payoutRatio': 0.1533,
  'fiveYearAvgDividendYield': 0.54,
  'beta': 1.094,
  'trailingPE': 37.16212,
  'forwardPE': 29.515041,
  'volume': 61156139,
  'regularMarketVolume': 61156139,
  'averageVolume': 54836700,
  'averageVolume10days': 43155290,
  'averageDailyVolume10Day': 43155290,
...

Представленная функция извлекает исторические цены и финансовую отчетность по акциям корпорации Apple. Как вы можете убедиться выше, библиотека Yahoo Finance предоставляет бесплатно не только котировки акций, но и множество показателей, включая годовые и квартальные данные компаний.

👉🏻  Ad hoc задачи в финансовой аналитике

Теперь давайте напишем функции расчета ROI и ROIC:

def calculate_roi(initial_price, current_price, dividends=0):
    """
    Расчет ROI для инвестиции
    
    Parameters:
    initial_price: цена покупки
    current_price: текущая цена
    dividends: накопленные дивиденды
    
    Returns:
    ROI в долях единицы
    """
    total_return = (current_price - initial_price + dividends)
    roi = total_return / initial_price
    return roi

def calculate_annualized_roi(roi, years):
    """
    Расчет годовой доходности
    
    Parameters:
    roi: совокупный ROI
    years: период владения в годах
    
    Returns:
    Annualized ROI
    """
    return (1 + roi) ** (1 / years) - 1

def calculate_roic(operating_income, tax_rate, total_assets, 
                   current_liabilities, cash_equivalents=0):
    """
    Расчет ROIC компании
    
    Parameters:
    operating_income: операционная прибыль (EBIT)
    tax_rate: эффективная налоговая ставка
    total_assets: совокупные активы
    current_liabilities: краткосрочные обязательства
    cash_equivalents: денежные средства (опционально)
    
    Returns:
    ROIC в долях единицы
    """
    # NOPAT
    nopat = operating_income * (1 - tax_rate)
    
    # Invested Capital
    # Упрощенный подход: Total Assets - Non-Interest-Bearing Liabilities
    invested_capital = total_assets - current_liabilities - cash_equivalents
    
    roic = nopat / invested_capital
    return roic

def extract_roic_from_financials(data):
    """
    Извлечение ROIC из финансовых данных
    
    Parameters:
    data: словарь с финансовыми данными из get_financial_data
    
    Returns:
    pandas Series с ROIC по годам
    """
    income_stmt = data['income_stmt']
    balance_sheet = data['balance_sheet']
    
    # Извлечение необходимых показателей
    operating_income = income_stmt.loc['Operating Income']
    total_assets = balance_sheet.loc['Total Assets']
    current_liabilities = balance_sheet.loc['Current Liabilities']
    cash = balance_sheet.loc['Cash And Cash Equivalents']
    
    # Эффективная налоговая ставка
    tax_provision = income_stmt.loc['Tax Provision']
    pretax_income = income_stmt.loc['Pretax Income']
    tax_rate = tax_provision / pretax_income
    
    # Расчет ROIC для каждого года
    roic_series = {}
    for date in operating_income.index:
        if date in total_assets.index:
            roic = calculate_roic(
                operating_income[date],
                tax_rate[date],
                total_assets[date],
                current_liabilities[date],
                cash[date]
            )
            roic_series[date] = roic
    
    return pd.Series(roic_series)

Этот набор функций реализует полный цикл расчета доходности инвестиций и эффективности использования капитала компании:

  • Функции calculate_roi и calculate_annualized_roi позволяют оценить доходность конкретной инвестиции с учетом изменения цены и накопленных дивидендов, а также привести ее к годовой норме, что удобно для сравнения разных инвестиций с различными сроками владения.
  • Функция calculate_roic предназначена для оценки ROIC — ключевого показателя операционной эффективности компании.
  • Функция extract_roic_from_financials автоматизирует процесс получения ROIC по годам из финансовых отчетов компании. Она объединяет данные из отчета о прибыли и убытках и баланса, рассчитывает эффективную налоговую ставку и строит серию ROIC для каждого года.

Вместе эти функции создают инструмент для комплексной оценки как индивидуальных инвестиций, так и качества бизнеса компании, что служит фундаментом для более сложных стратегий.

Вот как можно провести анализ исторических значений доходности Apple с помощью Python:

def analyze_roic_trend(ticker):
    """
    Анализ динамики ROIC компании
    
    Parameters:
    ticker: тикер компании
    
    Returns:
    DataFrame с метриками и статистикой
    """
    data = get_financial_data(ticker, period='5y')
    roic_series = extract_roic_from_financials(data)
    
    # Статистика
    stats = {
        'mean_roic': roic_series.mean(),
        'median_roic': roic_series.median(),
        'std_roic': roic_series.std(),
        'min_roic': roic_series.min(),
        'max_roic': roic_series.max(),
        'trend': np.polyfit(range(len(roic_series)), roic_series.values, 1)[0]
    }
    
    # CAGR ROIC (для оценки тренда)
    if len(roic_series) > 1:
        years = len(roic_series) - 1
        cagr = (roic_series.iloc[-1] / roic_series.iloc[0]) ** (1/years) - 1
        stats['roic_cagr'] = cagr
    
    return pd.DataFrame([stats]), roic_series

# Пример анализа
ticker = 'AAPL'
stats, roic_history = analyze_roic_trend(ticker)

print(f"ROIC Statistics for {ticker}:")
print(stats.T)
print(f"\nHistorical ROIC:")
print(roic_history)
ROIC Statistics for AAPL:
                    0
mean_roic    0.551608
median_roic  0.560621
std_roic     0.040718
min_roic     0.495623
max_roic     0.589567
trend       -0.026010
roic_cagr   -0.056216

Historical ROIC:
2024-09-30    0.589567
2023-09-30    0.549754
2022-09-30    0.571487
2021-09-30    0.495623

Функция вычисляет статистические характеристики ROIC. Параметр trend показывает наклон линейной регрессии: положительное значение указывает на улучшение операционной эффективности. CAGR ROIC отражает темп изменения метрики, что полезно для выявления устойчивых трендов.

👉🏻  Базы данных для хранения торговых данных: PostgreSQL, Redis, TimescaleDB

Интеграция в инвестиционные стратегии

Скрининг компаний по ROIC

Скрининг компаний по ROIC — это метод отбора акций, при котором инвесторы анализируют компании по показателю рентабельности инвестированного капитала. ROIC показывает, насколько эффективно компания использует вложенные средства для генерации прибыли.

Чем выше ROIC, тем лучше бизнес превращает капитал в прибыль, что часто указывает на устойчивое конкурентное преимущество, грамотное управление и финансовую эффективность. Такой скрининг помогает выделить компании с высоким качеством бизнеса и потенциалом для долгосрочного роста.

def screen_high_roic_stocks(tickers, min_roic=0.15, min_years=3):
    """
    Скрининг компаний с устойчиво высоким ROIC
    
    Parameters:
    tickers: список тикеров для анализа
    min_roic: минимальный средний ROIC
    min_years: минимальное количество лет с высоким ROIC
    
    Returns:
    DataFrame с отфильтрованными компаниями
    """
    results = []
    
    for ticker in tickers:
        try:
            data = get_financial_data(ticker, period='10y')
            roic_series = extract_roic_from_financials(data)
            
            # Фильтры
            mean_roic = roic_series.mean()
            years_above_threshold = (roic_series > min_roic).sum()
            
            if mean_roic >= min_roic and years_above_threshold >= min_years:
                current_price = data['prices']['Close'].iloc[-1]
                
                results.append({
                    'ticker': ticker,
                    'mean_roic': mean_roic,
                    'median_roic': roic_series.median(),
                    'roic_stability': roic_series.std(),
                    'years_above_threshold': years_above_threshold,
                    'current_price': current_price,
                    'latest_roic': roic_series.iloc[-1]
                })
        except Exception as e:
            print(f"Error processing {ticker}: {e}")
            continue
    
    df = pd.DataFrame(results)
    return df.sort_values('mean_roic', ascending=False)

# Пример использования
sp500_sample = ['AAPL', 'MSFT', 'GOOGL', 'META', 'NVDA', 'AMD', 'TSLA',
                'AMZN', 'INTC', 'AVGO', 'ADBE', 'CRM', 'NFLX', 'ORCL',
                'CSCO', 'QCOM', 'TXN', 'IBM']
high_roic_stocks = screen_high_roic_stocks(sp500_sample, min_roic=0.20)
print(high_roic_stocks)
  ticker  mean_roic  median_roic  roic_stability  years_above_threshold  current_price  latest_roic
0   AAPL   0.551608     0.560621        0.040718                      4     245.270004     0.495623
4   NVDA   0.471256     0.433481        0.302081                      3     183.160004     0.260158
6   ADBE   0.376594     0.347580        0.095766                      4     337.510010          NaN
8    TXN   0.323862     0.337555        0.141368                      3     171.699997          NaN
7   QCOM   0.322180     0.328132        0.084291                      4     153.589996     0.388586
1   MSFT   0.256285     0.252694        0.021098                      4     510.959991     0.283194
3   META   0.255257     0.275448        0.068184                      3     705.299988          NaN
2  GOOGL   0.248278     0.242699        0.020901                      4     236.570007     0.240671
5   TSLA   0.213033     0.224882        0.100028                      3     413.489990          NaN

Представленный скрипт реализует скрининг акций с устойчиво высоким ROIC за последние 10 лет. В примере использован список ведущих технологических компаний S&P 500, а пороговое значение средней доходности на инвестированный капитал установлено на уровне 20%.

Результаты показывают, что:

  1. Лидерами по устойчивости и уровню ROIC являются Apple (AAPL) и NVIDIA (NVDA), демонстрирующие выдающуюся эффективность использования капитала при средней рентабельности 55% и 47% соответственно;
  2. Высокие позиции также занимают Adobe (ADBE), Texas Instruments (TXN), Qualcomm (QCOM) и Microsoft (MSFT), что отражает стабильную бизнес-модель и конкурентные преимущества этих компаний.

Показатель roic_stability (стандартное отклонение) служит индикатором предсказуемости эффективности: чем он ниже, тем более устойчивы операционные результаты. Например, Apple и Microsoft демонстрируют минимальную волатильность ROIC, что говорит о стабильном управлении капиталом и высокой предсказуемости прибыли, в то время как у NVIDIA наблюдается большая изменчивость, характерная для быстрорастущих инновационных компаний.

Комбинирование с momentum-факторами

Комбинирование ROIC с momentum-факторами позволяет оценивать компании не только по качеству бизнеса, но и по динамике рыночных цен. Такой подход объединяет фундаментальный и технический анализ: ROIC отражает эффективность использования капитала, а momentum — текущую силу тренда. Это помогает выделить компании, которые одновременно демонстрируют высокую операционную эффективность и находятся в фазе устойчивого роста на рынке.

def roic_momentum_strategy(tickers, lookback_period=252):
    """
    Стратегия комбинирования ROIC и price momentum
    
    Parameters:
    tickers: список тикеров
    lookback_period: период для расчета momentum (торговые дни)
    
    Returns:
    DataFrame с ранжированными акциями
    """
    results = []
    
    for ticker in tickers:
        try:
            data = get_financial_data(ticker)
            roic_series = extract_roic_from_financials(data)
            
            # Последнее значение ROIC
            latest_roic = roic_series.iloc[-1]
            
            # Price momentum
            prices = data['prices']['Close']
            if len(prices) >= lookback_period:
                momentum = (prices.iloc[-1] / prices.iloc[-lookback_period] - 1)
            else:
                continue
            
            # Комбинированный скор
            # Z-score нормализация для сопоставимости
            results.append({
                'ticker': ticker,
                'roic': latest_roic,
                'momentum': momentum,
                'current_price': prices.iloc[-1]
            })
        except Exception as e:
            continue
    
    df = pd.DataFrame(results)
    
    # Z-score нормализация
    df['roic_zscore'] = (df['roic'] - df['roic'].mean()) / df['roic'].std()
    df['momentum_zscore'] = (df['momentum'] - df['momentum'].mean()) / df['momentum'].std()
    
    # Комбинированный ранг (равные веса)
    df['combined_score'] = (df['roic_zscore'] + df['momentum_zscore']) / 2
    
    return df.sort_values('combined_score', ascending=False)

# Пример стратегии
portfolio = roic_momentum_strategy(sp500_sample)
print(portfolio[['ticker', 'roic', 'momentum', 'combined_score']].head(10))
   ticker      roic  momentum  combined_score
0    AAPL  0.495623  0.073501        0.431181
12   NFLX  0.180482  0.677247        0.347418
2   GOOGL  0.240671  0.468017        0.217562
4    NVDA  0.260158  0.381172        0.145850
1    MSFT  0.283194  0.233163       -0.009346
15   QCOM  0.388586 -0.077388       -0.150050
11    CRM  0.007601 -0.155519       -1.506148
3    META       NaN  0.198147             NaN
5     AMD       NaN  0.256578             NaN
6    TSLA       NaN  0.715370             NaN

Результаты комбинированного скрининга показывают, что:

  1. Лидирующие позиции по интегральному показателю combined_score занимают компании Apple (AAPL) и Netflix (NFLX);
  2. Apple демонстрирует высокое качество бизнеса с ROIC около 0.50 при умеренном положительном momentum, что указывает на устойчивую прибыльность и стабильный рост котировок;
  3. Netflix, напротив, имеет более скромный ROIC, но сильный импульс цены, что отражает растущий интерес инвесторов и эффект восстановления после предыдущих коррекций;
  4. Компании Google (GOOGL) и NVIDIA (NVDA) занимают промежуточные позиции — они сочетают средний уровень рентабельности с уверенным восходящим трендом, что делает их привлекательными для сбалансированных портфелей;
  5. Отрицательные значения комбинированного скоринга у Qualcomm (QCOM) и Salesforce (CRM) сигнализируют о слабом ценовом импульсе, несмотря на приемлемые фундаментальные показатели. Это типичный пример, когда рынок временно игнорирует фундаментальное качество, что может указывать либо на коррекцию, либо на структурные изменения в бизнесе.
👉🏻  Модель Vasicek: моделирование процентных ставок

Таким образом, комбинирование ROIC и momentum позволяет получать более комплексную оценку инвестиционной привлекательности компаний:

  • ROIC выявляет внутреннее качество бизнеса;
  • Momentum — внешний интерес инвесторов и фазу рыночного цикла.

Совместное использование факторов повышает устойчивость отбора и снижает вероятность попадания в value traps — ситуации, когда компания выглядит дешевой по мультипликаторам, но продолжает терять стоимость.

Оптимальное соотношение весов факторов (например, 60% фундамент, 40% momentum) может варьироваться в зависимости от рыночной фазы: в периоды неопределенности акцент смещается в пользу фундаментальных показателей, тогда как в фазе роста большую роль играют факторы теханализа.

Учет отраслевой специфики

Различия в бизнес-моделях и капиталоемкости отраслей делают прямое сравнение ROIC между компаниями из разных секторов некорректным. Например, технологические компании обычно демонстрируют значительно более высокий ROIC, чем предприятия энергетического или финансового сектора, просто из-за различий в структуре активов и уровнях маржинальности.

Поэтому при анализе важно учитывать отраслевую специфику, нормируя показатели относительно медианных значений внутри каждой отрасли. Такой подход позволяет выявить компании, которые действительно превосходят своих прямых конкурентов по эффективности использования капитала, а не просто выигрывают за счет особенностей сектора.

def sector_adjusted_roic_screening(tickers_with_sectors):
    """
    Скрининг с учетом отраслевых медиан ROIC
    
    Parameters:
    tickers_with_sectors: dict {ticker: sector}
    
    Returns:
    DataFrame с отраслевыми ранжированием
    """
    results = []
    
    for ticker, sector in tickers_with_sectors.items():
        try:
            data = get_financial_data(ticker)
            roic_series = extract_roic_from_financials(data)
            latest_roic = roic_series.iloc[-1]
            
            results.append({
                'ticker': ticker,
                'sector': sector,
                'roic': latest_roic
            })
        except:
            continue
    
    df = pd.DataFrame(results)
    
    # Расчет медианы по секторам
    sector_medians = df.groupby('sector')['roic'].median()
    df['sector_median_roic'] = df['sector'].map(sector_medians)
    
    # Относительный ROIC
    df['roic_vs_sector'] = df['roic'] / df['sector_median_roic']
    
    # Ранжирование внутри сектора
    df['sector_rank'] = df.groupby('sector')['roic'].rank(ascending=False)
    
    return df.sort_values('roic_vs_sector', ascending=False)

# Пример с секторами
tickers_sectors = {
    'AAPL': 'Technology',
    'MSFT': 'Technology',
    'JPM': 'Financials',
    'BAC': 'Financials',
    'XOM': 'Energy',
    'CVX': 'Energy'
}

sector_screen = sector_adjusted_roic_screening(tickers_sectors)
print(sector_screen)
  ticker      sector      roic  sector_median_roic  roic_vs_sector  sector_rank
0   AAPL  Technology  0.495623            0.389408        1.272759          1.0
2    XOM      Energy  0.065874            0.061259        1.075344          1.0
3    CVX      Energy  0.056643            0.061259        0.924656          2.0
1   MSFT  Technology  0.283194            0.389408        0.727241          2.0

Результаты отраслевого скрининга подтверждают, что Apple (AAPL) и Microsoft (MSFT) сохраняют лидерство внутри технологического сектора, но с разной степенью превосходства относительно своих конкурентов:

  1. Apple демонстрирует ROIC на 27% выше медианного уровня по сектору (1.27×), что отражает выдающуюся операционную эффективность и высокий возврат на капитал в сравнении с типичной технологической компанией;
  2. Microsoft, напротив, имеет ROIC ниже отраслевой медианы (0.73×), что может быть связано с более капиталоемкой структурой бизнеса и масштабными инвестициями в облачные решения;
  3. В энергетическом секторе ExxonMobil (XOM) немного опережает медиану (1.08×);
  4. Chevron (CVX) находится чуть ниже среднего уровня (0.92×), что отражает естественные различия в структуре активов и стоимости добычи.
👉🏻  Символьные вычисления на Python в количественном анализе

Отраслевая нормализация — частый метод для корректного сравнения акций из разных секторов, и показатели доходности тут не исключение. Технологические компании структурно демонстрируют ROIC в диапазоне 20–30%, финансовый сектор — 10–15%, а энергетика — 5–10%. Без учета этих различий абсолютные значения ROIC приводят к систематическому перекосу в пользу отраслей с капиталоемкостью ниже средней по рынку.

Показатель roic_vs_sector элегантно решает эту проблему: он показывает относительное превосходство компании над конкурентами внутри ее сектора. Например, значение 1.5 означает, что ROIC компании на 50% выше медианного уровня по отрасли, что указывает на наличие устойчивого конкурентного преимущества — будь-то эффективная бизнес-модель, сильная маржинальность, или высокая финансовая дисциплина.

Важно учитывать, что сезонность ROIC также варьируется по отраслям. Например, ритейл и потребительские товары демонстрируют выраженные колебания в праздничные периоды, а энергетика — в зависимости от циклов цен на сырье. Использование годовых данных помогает сгладить такие эффекты, предоставляя более стабильную и достоверную картину операционной эффективности компаний внутри каждого сектора.

Заключение

Метрики доходности ROI и ROIC представляют две стороны инвестиционного анализа. ROI измеряет результат с позиции владельца капитала, ROIC раскрывает способность компании трансформировать ресурсы в прибыль. Эти метрики не гарантируют будущую доходность, однако существенно повышают вероятность отбора компаний с устойчивой генерацией стоимости.

Правильное применение обеих метрик формирует комплексное понимание инвестиционной привлекательности актива. Устойчиво высокий ROIC — индикатор «ширины экономического рва вокруг замка», который построил бизнес. Компании с ROIC выше стоимости капитала на протяжении нескольких лет имеют больше ресурсов на защиту своих преимуществ и маржи от конкурентного давления.

Учет данного фактора в фундаментальном анализе совместно с учетом тренда, моментума движения котировок и отраслевой нормализацией создает надежную базу для построения долгосрочных портфелей.