Финансовые коэффициенты на основе отчёта о движении денежных средств

Анализ финансовой отчётности на Python

Rohan Chatterjee

Risk Modeler

Загрузка данных в формате JSON

  • Реальные данные не всегда хранятся в таблицах
  • Иногда они представлены в формате JSON ("JavaScript Object Notation")
  • Компании могут публиковать финансовую отчётность в формате JSON
  • Загрузить JSON-файлы в Python можно с помощью pandas
cash_flow = pd.read_json("cash_flow_statement.json")
print(cash_flow.head())

На изображении показаны первые 5 строк загруженных данных отчёта о движении денежных средств.

Анализ финансовой отчётности на Python

Коэффициент денежного потока к чистой прибыли

  • Доля денежного потока от операционной деятельности относительно чистой прибыли

  • Операционная деятельность — это основная деятельность компании

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

Формула:

$$\dfrac{\text{Cash flow from operating activities}}{\text{Net income}}$$

Анализ финансовой отчётности на Python

Коэффициент операционного денежного потока

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

Формула:

$$\dfrac{\text{Cash flow from operating activities}}{\text{Current liabilities}}$$

Анализ финансовой отчётности на Python

Заполнение пропущенных значений

  • В реальных данных часто встречаются пропущенные значения
  • Числитель коэффициента может быть доступен, а знаменатель — отсутствовать, или наоборот
  • Решение: заполнить пропуски данными других компаний
Анализ финансовой отчётности на Python

Заполнение пропущенных значений

  • В DataFrame dataset некоторые значения столбца «Total Current Liabilities» отсутствуют и обозначены как NaN

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

  • Пропущенные текущие обязательства компании можно восстановить на основе имеющихся значений по этой же компании
Анализ финансовой отчётности на Python

Заполнение пропущенных значений

  • Пропущенные значения заполняются средним по компании:
imputation = dataset.groupby("company")["Total Current Liabilities"].transform("mean")

dataset["Imputed Total Current Liabilities"] = dataset["Total Current Liabilities"].fillna(imputation)
  • После заполнения dataset выглядит так:

На изображении показаны первые строки отчёта о движении денежных средств с пропущенными значениями в столбце суммарных обязательств. Добавлен столбец с заполненными значениями текущих обязательств.

  • Для консервативной оценки используйте перцентили
Анализ финансовой отчётности на Python

Заполнение пропущенных значений с помощью перцентилей

  • Замена пропущенного значения 70-м перцентилем даёт более консервативную оценку.

  • Расчёт коэффициентов на основе консервативной оценки предпочтителен при использовании в принятии решений.

  • Заполнение пропущенных значений 70-м перцентилем, сгруппированным по company:
imputation = dataset.groupby("company")["Total Current Liabilities"]\
    .transform(lambda x: np.nanquantile(x, 0.7))

dataset["Imputed Total Current Liabilities"] = dataset["Total Current Liabilities"]\
    .fillna(imputation)
Анализ финансовой отчётности на Python

Давайте потренируемся!

Анализ финансовой отчётности на Python

Preparing Video For Download...