Меню
Экономия до 70% на бестселлеры
00
00
дней
00
00
часов
минута
секунда

Использование Python в финансовом моделировании

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

Благодаря библиотекам, таким как pandas, NumPy и matplotlib, Python позволяет аналитикам быстрее строить прогнозы, визуализировать результаты и проверять гипотезы. В этой статье разберём, как Python помогает финансовому аналитику в ежедневной работе.

Почему аналитики выбирают Python для финансового моделирования

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

Например, с помощью библиотеки pandas можно легко агрегировать данные по кварталам, строить отчёты и прогнозировать ключевые показатели, такие как EBITDA и чистая прибыль.
График показывает рост выручки и чистой прибыли по месяцам на примере аналитики финансовых показателей. Такой график можно построить с помощью языка программирования Python и библиотеки matplotlib.

Для создания графика нужны базовые знания Python и понимание работы с данными: как их импортировать, обрабатывать и визуализировать. Библиотека matplotlib позволяет строить графики любой сложности: линейные, гистограммы, круговые диаграммы и другие.

Этот график строится с помощью простого кода: создаются списки значений для каждого месяца, а потом они отображаются с помощью команды plt.plot().
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.
Динамика выручки и чистой прибыли компании по месяцам, визуализированная с помощью Python (matplotlib). Выручка растёт с января по июнь, а чистая прибыль также показывает уверенный рост.

Другие примеры использования Python в финансовом моделировании

Построение прогнозов

С помощью библиотек scikit-learn или statsmodels можно строить прогнозы на основе исторических данных и тестировать их с помощью кросс-валидации.
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.

Простейший график построения прогнозов на Питоне

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score

# Данные: выручка за 6 месяцев
months = np.array([1, 2, 3, 4, 5, 6]).reshape(-1, 1)
revenue = np.array([200, 250, 270, 300, 320, 350])

# Модель линейной регрессии
model = LinearRegression()
model.fit(months, revenue)

# Прогноз на следующие 3 месяца
future_months = np.array([7, 8, 9]).reshape(-1, 1)
predicted_revenue = model.predict(future_months)

# Визуализация
plt.figure(figsize=(8, 5))
plt.scatter(months, revenue, color='blue', label='Факт')
plt.plot(months, model.predict(months), color='green', label='Линейная модель')
plt.plot(future_months, predicted_revenue, color='red', linestyle='--', label='Прогноз')
plt.xlabel('Месяц')
plt.ylabel('Выручка (тыс. руб.)')
plt.title('Прогноз выручки на основе линейной регрессии')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

# Проверка модели с помощью кросс-валидации
scores = cross_val_score(model, months, revenue, cv=3, scoring='r2')
print(f'Качество модели (R2, кросс-валидация): {scores.mean():.2f}')
Сценарный анализ

Python позволяет моделировать несколько сценариев развития бизнеса с учётом роста выручки, себестоимости и влияния внешних факторов, таких как курсы валют и цены на сырьё. Например, можно рассчитать базовый, оптимистичный и пессимистичный сценарии и оценить их влияние на прибыль компании.
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.

Простейший сценарный анализ на Питоне

import numpy as np
import matplotlib.pyplot as plt

# Данные: базовая выручка и себестоимость
base_revenue = 300
base_cost = 200

# Внешние факторы (например, курсы валют и цены на сырьё)
currency_factor = 1.05  # курс валюты вырос на 5%
raw_material_factor = 1.10  # цены на сырьё выросли на 10%

# Сценарии:
# Базовый
revenue_base = base_revenue
cost_base = base_cost

# Оптимистичный: рост выручки +10%, снижение себестоимости -5%
revenue_opt = base_revenue * 1.10
cost_opt = base_cost * 0.95

# Пессимистичный: рост себестоимости +15% из-за внешних факторов
revenue_pess = base_revenue
cost_pess = base_cost * raw_material_factor * currency_factor

# Чистая прибыль
profit_base = revenue_base - cost_base
profit_opt = revenue_opt - cost_opt
profit_pess = revenue_pess - cost_pess

# Визуализация
scenarios = ['Базовый', 'Оптимистичный', 'Пессимистичный']
profits = [profit_base, profit_opt, profit_pess]

plt.figure(figsize=(8, 5))
bars = plt.bar(scenarios, profits, color=['blue', 'green', 'red'])
plt.ylabel('Чистая прибыль (тыс. руб.)')
plt.title('Сценарный анализ прибыли')
plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()
plt.show()
Расчет финансовых показателей

С помощью pandas можно рассчитать рентабельность, маржинальность и другие ключевые метрики на основе данных из CSV или Excel. Такой подход ускоряет работу с большими массивами данных и помогает быстро выявить узкие места в бизнесе.
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.

Простейший расчет финансовых показателей

import pandas as pd

# Чтение данных из CSV
df = pd.read_csv('financial_data.csv')

# Рассчёт маржинальности (%)
df['Маржинальность'] = ((df['Выручка'] - df['Себестоимость']) / df['Выручка']) * 100

# Рассчёт рентабельности (%)
df['Рентабельность'] = (df['Чистая прибыль'] / df['Выручка']) * 100

# Вывод результатов
print(df[['Выручка', 'Себестоимость', 'Чистая прибыль', 'Маржинальность', 'Рентабельность']])

Как начать использовать Python для финансового моделирования

Для начала работы аналитикам нужно установить основные библиотеки: pandas для работы с таблицами, NumPy для расчётов, matplotlib или seaborn для визуализации. Можно подключить Jupyter Notebook для интерактивной работы и шаг за шагом строить модель: от загрузки данных до построения отчёта для руководства.
Установите рабочее окружение.
Скачайте и установите Python и Jupyter Notebook (например, через Anaconda) для удобной и интерактивной работы.
Освойте библиотеки для работы с данными.
Начните с pandas для обработки таблиц, NumPy для математических расчётов, а также matplotlib или seaborn для визуализации данных.
Загрузите исходные данные.
Импортируйте финансовые отчёты из Excel или CSV, используя pandas. Убедитесь, что данные корректно структурированы: есть колонки с выручкой, себестоимостью и другими ключевыми показателями.
Постройте модель.
Составьте расчёты: например, рассчитайте EBITDA, чистую прибыль, рентабельность. Используйте формулы и методы анализа данных, встроенные в библиотеки.
Проверьте модель и визуализируйте результаты.
Постройте графики, сравните прогнозы с фактическими данными. Проверьте расчёты на ошибки и подготовьте итоговый отчёт для руководства.

Практический пример: как посчитать EBITDA с помощью pandas

EBITDA — это важный показатель для оценки операционной эффективности бизнеса. Рассчитаем его в Python с помощью библиотеки pandas. Предположим, у нас есть таблица с выручкой, себестоимостью и операционными расходами:
import pandas as pd

# Загружаем данные
df = pd.read_excel('financial_data.xlsx')

# Посмотрим на данные
print(df.head())
EBITDA — это важный показатель для оценки операционной эффективности бизнеса. Рассчитаем его в Python с помощью библиотеки pandas. Предположим, у нас есть таблица с выручкой, себестоимостью и операционными расходами:
# Добавляем колонку EBITDA
df['EBITDA'] = df['Выручка'] - df['Себестоимость'] - df['Операционные расходы']

# Выводим результат
print(df[['Период', 'EBITDA']])
Результат:
На графике показана динамика EBITDA компании по кварталам (Q1 и Q2). Отчётливо виден рост EBITDA с 2000 до 2500 тыс. руб., что отражает положительную динамику показателя. График помогает визуально сравнить эффективность работы компании по периодам и выявить тренды.
Таким образом, с помощью всего нескольких строк кода в pandas можно быстро рассчитать EBITDA по периодам. Дальше можно построить графики или использовать прогнозы для анализа.

Ключевые библиотеки Python для финансового анализа

Python популярен в финансовой аналитике благодаря множеству библиотек, которые упрощают работу с данными, расчёты и визуализацию. Вот основные библиотеки, которые должен знать каждый аналитик:
pandas — библиотека для работы с табличными данными.

Удобно импортировать Excel и CSV-файлы, обрабатывать таблицы, группировать данные, рассчитывать финансовые метрики (EBITDA, чистая прибыль) и строить отчёты.
NumPy — библиотека для работы с массивами данных и числовыми расчётами.

Используется для математики, статистики, анализа массивов и быстрой обработки больших данных.
matplotlib и seaborn — библиотеки для визуализации данных.

С помощью них можно строить графики, диаграммы и визуальные отчёты для наглядного представления результатов анализа.
scikit-learn — библиотека машинного обучения.

Подходит для построения прогнозов, сценарного анализа и тестирования гипотез на основе исторических данных.
statsmodels — библиотека для статистического анализа данных.

Полезна для регрессий, тестов значимости и оценки моделей.

Когда Python не нужен: почему иногда Excel лучше

Python помогает автоматизировать расчёты и анализ данных, особенно при работе с большими объёмами информации. Однако есть задачи, где проще и быстрее использовать Excel:

  • Быстрые расчёты и сводные таблицы. Для простого анализа и визуализации в небольших проектах Excel справляется быстрее и удобнее.
  • Совместная работа. Если отчёты нужно быстро переслать коллегам или аудиторам, Excel — стандарт де-факто.
  • Отчётность для проверяющих органов. Большинство регуляторов и аудиторов по-прежнему используют Excel, поэтому проще подготовить документы в привычном формате.
  • Одноразовые проекты. Когда аналитика делается для одной задачи (например, рассчитать итоговый KPI по акции), часто быстрее построить формулы и сводные таблицы в Excel.
  • Отсутствие необходимости в автоматизации. Если расчёты не требуют регулярных обновлений и сложных сценариев, Excel закрывает все потребности.
На курсе «Финансовый аналитик» в SF Education учат работать с Excel для построения финансовых моделей и сводных таблиц. Для более продвинутой автоматизации, например, регулярной отчётности, стоит освоить Python и библиотеки вроде pandas и NumPy — этому тоже уделяют внимание на курсе «Финансовый директор».

Так аналитик сможет выбрать подходящий инструмент для конкретной задачи: быстро посчитать KPI в Excel или построить модель с прогнозами в Python.

ABC/XYZ-анализ клиентов

ABC/XYZ-анализ помогает сегментировать клиентов по важности и стабильности покупок. Например, ABC показывает, какие клиенты приносят наибольшую прибыль (А — самые ценные, С — наименее), а XYZ — как часто и стабильно они заказывают.

Например, можно быстро отследить: у клиента АX — высокая прибыль и стабильность, а у CЗ — малая прибыль и нерегулярные заказы.

Пример задачи: «Найти клиентов категории AX и BX для персональных предложений».
Пример реализации в Python:
import pandas as pd

# Пример данных: клиент, выручка, количество заказов
data = {'Клиент': ['A', 'B', 'C', 'D', 'E'],
        'Выручка': [50000, 30000, 10000, 20000, 5000],
        'Заказы': [50, 30, 5, 10, 2]}
df = pd.DataFrame(data)

# ABC-анализ
df['ABC'] = pd.qcut(df['Выручка'], q=3, labels=['C', 'B', 'A'])

# XYZ-анализ
df['XYZ'] = pd.qcut(df['Заказы'], q=3, labels=['Z', 'Y', 'X'])

print(df)
Теперь нам надо:
✅ Выделить клиентов группы AX для персональной работы.
✅ Посчитать среднюю выручку для групп A и B.
✅ Построить сводную таблицу по всем группам ABC и XYZ для визуального анализа.
# Выделение клиентов группы AX
target_clients = df[(df['ABC'] == 'A') & (df['XYZ'] == 'X')]
print("Клиенты группы AX:")
print(target_clients)

# Средняя выручка для клиентов A и B
mean_revenue_AB = df[df['ABC'].isin(['A', 'B'])]['Выручка'].mean()
print(f"Средняя выручка клиентов A и B: {mean_revenue_AB:.2f} руб.")

# Сводная таблица для анализа групп ABC и XYZ
pivot_table = pd.pivot_table(
    df,
    index='ABC',
    columns='XYZ',
    values='Выручка',
    aggfunc='sum',
    fill_value=0
)
print("Сводная таблица по группам ABC и XYZ:")
print(pivot_table)
Теперь нам надо:
✅ Визуализировать результаты, чтобы понять, где сосредоточена выручка и какие группы приносят больше прибыли.
import seaborn as sns
import matplotlib.pyplot as plt

# Визуализация сводной таблицы в виде тепловой карты
plt.figure(figsize=(8, 6))
sns.heatmap(pivot_table, annot=True, fmt='.0f', cmap='YlGnBu')
plt.title('ABC/XYZ-анализ: распределение выручки')
plt.xlabel('XYZ')
plt.ylabel('ABC')
plt.tight_layout()
plt.show()
Результат:
Тепловая карта ABC/XYZ-анализа: наглядно показывает, как распределяется выручка между группами клиентов. Помогает определить ключевых клиентов и приоритеты для работы.

Какие графики финансовому аналитику строить в Python

Столбчатая диаграмма (Bar chart) — для сравнения финансовых показателей по периодам (например, выручка, EBITDA, чистая прибыль).
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.
Столбчатая диаграмма для наглядного сравнения выручки, EBITDA и чистой прибыли по месяцам. Позволяет быстро увидеть динамику показателей и выявить тренды.
Линейный график (Line chart) — показывает тренды и динамику во времени, например, рост прибыли или изменение расходов.
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.
Линейный график показывает динамику финансовых показателей (выручка, EBITDA, чистая прибыль) по месяцам. Позволяет увидеть тренды и определить точки роста или снижения.
Тепловая карта (Heatmap) — для визуального анализа сезонности и выявления паттернов в больших массивах данных.
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.
Тепловая карта демонстрирует сезонные колебания и паттерны в финансовых данных (выручка, расходы и прибыль). Помогает быстро выявить пиковые и проседающие периоды в разных годах.
Диаграмма рассеивания (Scatter plot) — чтобы найти корреляции между разными финансовыми показателями (например, связь маркетинговых расходов и выручки).
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.
Диаграмма рассеивания показывает взаимосвязь между маркетинговыми расходами и выручкой. Помогает определить наличие тренда и силу зависимости между этими показателями.
Диаграмма Waterfall — для наглядного представления, как формируется итоговый финансовый результат из отдельных составляющих.
Таблица с финансовыми показателями компании: выручка, расходы, EBITDA, налоги и чистая прибыль.
Диаграмма Waterfall помогает наглядно показать, как из выручки формируется итоговая чистая прибыль, учитывая все расходы и налоги.

Как составить автоматический финансовый отчёт

Сбор данных
На первом этапе собираем данные из разных источников — таблицы выручки, расходов и налогов. Данные могут храниться в Excel или CSV.
Объединение таблиц
Затем объединяем все таблицы в одну, чтобы видеть общую картину по месяцам или кварталам. Это позволяет легко рассчитать итоговые показатели.
Расчет показателей
На основе объединённых данных рассчитываем чистую прибыль, маржинальность и другие метрики. Это нужно, чтобы понимать рентабельность бизнеса.
Автоматизация выгрузки
Финальный шаг — автоматизировать выгрузку отчёта в нужном формате (например, Excel или PDF). Это позволяет сэкономить время и уменьшить вероятность ошибок.
Пример кода
import pandas as pd

# 1. Сбор данных
revenue_df = pd.read_excel('revenue.xlsx')
expenses_df = pd.read_excel('expenses.xlsx')
taxes_df = pd.read_excel('taxes.xlsx')

# 2. Объединение таблиц
report = revenue_df.merge(expenses_df, on='Месяц')
report = report.merge(taxes_df, on='Месяц')

# 3. Расчёт показателей
report['Чистая прибыль'] = report['Выручка'] - report['Расходы'] - report['Налоги']
report['Маржинальность (%)'] = ((report['Выручка'] - report['Расходы']) / report['Выручка']) * 100

# 4. Автоматизация выгрузки
with pd.ExcelWriter('financial_report.xlsx') as writer:
    report.to_excel(writer, index=False, sheet_name='Финансовый отчёт')

print("Финансовый отчёт успешно создан!")
И, наконец, визуализация:
import pandas as pd
import matplotlib.pyplot as plt

# Чтение итогового отчёта
report = pd.read_excel('financial_report.xlsx')

# Визуализация
plt.figure(figsize=(10, 6))
x = report['Месяц']
bar_width = 0.25

plt.bar(x, report['Выручка'], width=bar_width, label='Выручка')
plt.bar(x, report['Расходы'], width=bar_width, label='Расходы', bottom=report['Выручка'] - report['Чистая прибыль'])
plt.bar(x, report['Чистая прибыль'], width=bar_width, label='Чистая прибыль', bottom=0)

plt.xlabel('Месяц')
plt.ylabel('Тысяч рублей')
plt.title('Финансовый отчёт: выручка, расходы и чистая прибыль')
plt.legend()
plt.grid(axis='y', linestyle='--', alpha=0.5)
plt.tight_layout()

plt.savefig('financial_report_chart.png')
plt.show()

Задачи, которые можно быстро решить с помощью Python

Импорт данных из Excel и CSV
С помощью pandas можно в несколько строк кода загрузить файлы, объединить данные из разных источников и начать анализ.
Сравнение план-факт
Автоматическая проверка отклонений между плановыми и фактическими показателями (например, выручкой и расходами) за разные периоды.
Построение графиков и диаграмм
Создание визуализаций: от простых линейных графиков до сложных тепловых карт для анализа показателей.
Расчёт ключевых финансовых метрик
Быстрый расчёт маржинальности, EBITDA, чистой прибыли и других метрик для финансовой отчётности.
Анализ сезонности
Использование временных рядов для анализа трендов и прогнозирования, например, выручки по месяцам.
Сценарный анализ
Моделирование «что если»: например, как изменится прибыль при росте себестоимости на 10%.
Обработка больших массивов данных
Работа с десятками тысяч строк и столбцов, которые Excel не всегда выдерживает без подвисаний.
Интеграция с BI-системами
Обработка данных для передачи в Power BI или другие BI-платформы.
Автоматизация отчётности
Создание скриптов, которые собирают данные и формируют отчёты в формате Excel или PDF.
Python позволяет автоматизировать рутинные задачи, обрабатывать большие объёмы данных и строить финансовые модели быстрее, чем в Excel.

Заключение

Python — это незаменимый инструмент для современного финансового аналитика. Он помогает обрабатывать большие объёмы данных, строить финансовые модели, автоматизировать отчёты и быстрее принимать решения. Освоение ключевых библиотек и применение Python в ежедневной работе аналитика делает процесс анализа не только удобнее, но и точнее. А сочетание знаний Excel и Python позволяет выбрать оптимальный инструмент под любую задачу.

Начать работу с Python — значит сделать первый шаг к автоматизации рутинных задач и фокусу на стратегических решениях для бизнеса.