Финансовое моделирование — это не просто таблички. Это способ прогнозировать, принимать решения и быть на шаг впереди. Мы, финансисты, любим Excel за простоту, в то же время, ненависть к этому чудесному инструменту возрастает пропорционально количеству переменных в формулах. И, когда задач становится больше, — он начинает тормозить и сильно раздражать.

Ниже я расскажу:

  • Почему я, как гуманитарий, начала осваивать Python.

  • Как связка Excel + Python работает на практике.

  • Как один и тот же проект ведёт себя в этих двух мирах.

Кто я?

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

Дальше был SQL, после него я поняла, какое счастье подключать технические инструменты и не «перекликивать» бесконечные таблички вручную. Со временем я начала автоматизировать свою работу и дошла до Python. Мой код прост, но он решает задачи — считает метрики, собирает отчёты и строит прогнозы. Для финансов этого уровня мне хватает.

Зачем это пишу?

Финансовое моделирование — это про деньги.

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

  • будет ли вообще прибыль?

  • когда она появится?

  • сколько составит?

  • при каких условиях?

И вот тут в дело вступают экономисты. Мы берём будущую реальность и пытаемся её «посчитать», как правило, в Excel. Если говорить просто — строим модель, например, кофейни.

Считаем, сколько будут стоить аренда, зарплата бариста, закупка кофе и булочек. Определяем, сколько клиентов должно приходить в день, чтобы бизнес хотя бы вышел в ноль, а затем начал приносить прибыль. В результате получаем ответ: через три года проект окупится, а после этого прибыль будет такой-то. Это и есть финансовое моделирование.

Но на этом никто не останавливается. Нас спрашивают: а что, если булочки делать без изюма? Себестоимость снизится, а значит — прибыль возрастёт? А если повысить зарплату? А что, если аренда увеличится? Мы меняем параметры, строим графики, проводим анализ чувствительности, определяем точку безубыточности. Всё звучит логично и понятно — пока кейс остаётся простым.

А что если это не кофейня, а завод с 1000 единицами товара? А если бизнес работает в разных регионах, у каждого свои условия — логистика, особенности рынка? Если переменных десятки, а сценариев — сотни?

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

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

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

Вот о чём я и пишу: хочу показать, как Python может стать настоящим помощником для финансиста.

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

Excel уже не справляется

Прежде чем начать, скажу пару слов про VBA. Это рабочий инструмент, и с его помощью действительно можно решать многие задачи внутри Excel. Если вы уже умеете с ним работать, — здорово. Но если вы только ищете, с чего начать, обратите внимание на Python. Он универсальнее, выходит за рамки Excel и может использоваться гораздо шире. 

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

  • готовите регулярную отчетность;

  • работаете с несколькими источниками данных;

  • строите расчеты, которые нельзя уместить в одну строку формулы.

Можно, например, строить модели прогнозирования выручки не «на глазок» через линейный тренд в Excel, а с помощью библиотеки scikit-learn или statsmodels, подгрузив реальные данные. Или подключиться к базе данных ERP-системы и брать данные напрямую — без ручного копирования из выгрузок. Это дает ощущение, что модель живая. Что вы не рождены для ctrl+C и ctrl+V.

Не конкуренты, а союзники

Не подумайте, что я призываю отказаться от Excel. Я хочу показать, что Python и Excel — это мощная связка. А Excel по-прежнему идеален для:

  • визуализации результатов;

  • сбора обратной связи от коллег;

  • подготовки моделей к презентации.

Python же это возможность:

  • углубиться в аналитику;

  • повысить точность расчетов;

  • сократить время работы с данными.

Один из самых удачных рабочих процессов: черновой расчет — в Excel, автоматизация и логика — в Python, визуализация — в Power BI или снова в Excel.

На практике именно так и бывает: Excel-модель, построенная вручную, перерастает в Python скрипт, который уже не требует человеческого участия. А ты просто проверяешь корректность и обновляешь параметры при необходимости.

Почему все больше финансистов смотрят в сторону Python

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

Что дает Python финансисту?

Если коротко, это:

  • Автоматизация. Устранение повторяющихся действий (копирование данных, очистка, пересчеты).

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

  • Скорость обработки данных. Особенно важно при работе с десятками тысяч строк и интеграциями из разных источников.

  • Повторное использование. Один раз написанный скрипт можно запускать снова и снова, получая одинаково корректный результат.

  • Интеграция. Прямая работа с базами данных, API, Power BI, облачными системами (а не через промежуточные выгрузки).

Предлагаю посмотреть на сравнение Excel и Python по ключевым параметрам:

Скрытый текст

Excel

Python

Простота начала

Очень высокая

Средняя (нужно освоить базу)

Скорость на малых объемах

Отличная

Отличная

Работа с большими объемами

Медленно, тормозит

Быстро, эффективно

Автоматизация процессов

Ограничена

Практически не ограничена

Многократное использование

Ограничено

Не ограничено

Визуализация

Удобная и быстрая

Есть, но требует настройки

Ошибки/человеческий фактор

Высокий риск (ручные формулы)

Ниже (при отлаженном коде)

Командная работа

Часто конфликт версий, правки вручную

Git, версии, документация

Обучение и доступность

Прост для новичков

Требует погружения

Важно: Python не заменяет Excel, он расширяет его возможности. Важное уточнение — я не призываю становиться полноценным Python-разработчиком, потому что это не так просто, как кажется. Нам, финансистам, нужно понимать структуру, уметь читать код, писать простые скрипты и разбираться в логике расчетов.

Кейс: одна и та же модель в Excel и в Python

В качестве примера я построила одну и ту же финансовую модель, предположим, той же кофейни, с несложной структурой в Excel и Python.

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

Тут под спойлером важные финансовые аббревиатуры, которые буду использовать далее по тексту:

Скрытый текст

NPV — чистая приведенная стоимость. Показатель поможет понять, сколько можно заработать на проекте с учётом того, что деньги со временем теряют ценность.

Пример: мы вкладываем 1 млн, а возвращаем 1,5 млн, но через 5 лет. Сегодняшний миллион и миллион через 5 лет — не одно и то же. NPV позволяет это учесть. Если NPV положительный — проект выгоден, если отрицательный — лучше не надо.

IRR — внутренняя норма доходности. Проще говоря: какая процентная доходность у проекта. Если IRR выше, чем ставка по вкладу в банке, то проект интересен, если ниже — не очень.

PI — индекс прибыльности. Покажет, сколько рублей прибыли мы получим с каждого вложенного рубля. Если индекс больше 1, то проект прибыльный, если меньше — мы теряем деньги.

DPBP — дисконтированный срок окупаемости. Покажет, через сколько лет вернутся наши деньги с учётом их обесценивания. То есть не просто "когда верну", а "когда верну, если считать, что деньги со временем стоят меньше".

Затем я сделала анализ чувствительности — это когда мы берём важные параметры проекта (например, сколько продаём, по какой цене, сколько тратим, какие налоги платим) и по очереди меняем их. Смотрим, как это влияет на итог — например, на прибыль или на показатель NPV.

Главная цель — найти такие «граничные» значения, при которых проект уже перестаёт быть выгодным. Например: если снизить цену на капучино ниже определённого уровня — прибыль станет ноль. Или если затраты на булочки вырастут выше определённой суммы — проект больше не окупится.

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

В рамках проекта у нас есть базовый сценарий:

Объем выпуска, шт.

3 000

Цена единицы продукции, у.е.

890

Переменные затраты, у.е.

360

Норма дисконта, %

12

Постоянные затраты, у.е.

10 000

Амортизация, у.е.

9 000

Налог на прибыль, %

30

Срок проекта, лет

8

Остаточная стоимость, у.е.

9 000

Начальные инвестиции, у.е.

3 500 000

Далее необходимо рассчитать NPV. Я решила считать все одной формулой, чтобы не увеличивать масштаб работы.

В одной формуле я рассчитала:

  1. Выручку = объем выпуска * цена единицы продукции

  2. Переменные затраты = объем выпуска * переменные затраты на единицу

  3. EBIT = выручка – переменные затраты – постоянные затраты – амортизация 

  4. Чистую прибыль = EBIT * 0,7 (здесь избавляюсь от налога 30%)

  5. Денежный поток = Чистая прибыль + амортизация

Затем в этой же формуле дисконтировала, то есть перевела будущие деньги в текущую ценность, денежный поток по годам:

6. Дисконтированный денежный поток = денежный поток / (1+норма дисконта)^год инвестиций.

Протянув формулу и суммировав все результаты с учетом инвестиций, мы получили NPV.

Формула получилась объемной. Любому, кто не участвовал в создании модели, придётся потратить время, чтобы понять, что к чему. Особенно если с финансами не на "ты".

Если в формуле случайно "слетит" закрепление ячейки, можно потерять часть расчётов.

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


На выполнение этих вычислений со всем наведением «красоты» мне потребовалось 3 минуты.

Для вычисления внутренней нормы доходности (IRR) использовала финансовую формулу Excel – ВСД. Но имейте в виду, если NPV будет меньше нуля, то формула не сработает.

Далее для вычисления DPBP я добавила сумму дисконтированных потоков нарастающим итогом (колонка G).

Срок окупаемости (DPBP) вычислялся «на глазок». Видно, что нарастающим итогом мы приближаемся к сумме инвестиций на 4 году жизни проекта. Значит можем 4 года суммировать с «остатком до выхода в ноль», деленным на чистый дисконтированный поток 5 года.

Опять же, здесь данных мало, невооруженным взглядом видно что и куда подставить. Даже при быстрых вычислениях и выводах можно навскидку дать прогноз окупаемости в 4 года. Если данных больше, быстрых выводов не будет.

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

Сначала добавим библиотеку, необходимую для финансовых вычислений:

import numpy_financial as npf

Введем исходные данные (на этом этапе мы также можем обозначить несколько сценариев и затем рассчитывать показатели опираясь на них). При смене сценариев в Excel нам нужно будет дублировать таблицу с данными и заново настраивать вычисления. Не стоит упоминать, что визуально это будет более громоздко:

Скрытый текст
# Исходные данные
volume = 3000
price_per_unit = 890
variable_cost_per_unit = 360
fixed_costs = 10000
amortization = 9000
tax_rate = 0.30
discount_rate = 0.12
initial_investment = 3500000
project_lifetime = 8

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

Скрытый текст
# Расчет денежных потоков
cash_flows = []
for year in range(1, project_lifetime + 1):
    revenue = volume * price_per_unit
    variable_costs = volume * variable_cost_per_unit
    ebit = revenue - variable_costs - fixed_costs - amortization
    tax = max(ebit, 0) * tax_rate
    net_income = ebit - tax
    cash_flow = net_income + amortization
    cash_flows.append(cash_flow)
# Добавляем начальные инвестиции (отрицательный поток в 0-й год)
cash_flows = [-initial_investment] + cash_flows
# Расчет NPV
npv = npf.npv(discount_rate, cash_flows)
# Расчет IRR
irr = npf.irr(cash_flows)
# Расчет PI 
pi = (npv + initial_investment) / initial_investment

Тут обращу внимание на расчет срока окупаемости, выглядит сильно сложнее расчета «на глаз» в Excel. Но такой расчет, очевидно, точнее. Плюс, он классно сработает при большом исходном массиве. Думаю вы также заметили, что для всех показателей эффективности в Python есть готовая функция, в которую мы просто закладываем показатели, нам не нужно проводить именно математические вычисления, либо, как в случае IRR подбирать его вручную или через анализ данных, если NPV будет меньше нуля и формула ВСД не сработает.

Скрытый текст
# Расчет DPBP
discounted_cash_flows = [cf / (1 + discount_rate) ** i for i, cf in enumerate(cash_flows)]
cumulative = 0
dpbp = None
for i in range(1, len(discounted_cash_flows)):
    cumulative += discounted_cash_flows[i]
    if cumulative >= -discounted_cash_flows[0]:
        prev = cumulative - discounted_cash_flows[i]
        dpbp = i - 1 + (-discounted_cash_flows[0] - prev) / discounted_cash_flows[i]
        break


# Вывод результатов
print(f"NPV: {npv:.2f}")
print(f"IRR: {irr:.4%}")
print(f"PI: {pi:.4f}")
print(f"DPBP: {dpbp:.2f} лет")

Результат кода получили за секунду, все работает и совпадает с нашими расчетами в Excel.

Возникает вопрос: потратила ли я больше времени на написание кода? Отвечу честно, да.

Но, что лучше, написать один раз и масштабировать за секунды или быстро собрать простенькую модель, которую нужно переделывать при любом изменении вводных?

Штош, пришло время хардкора и анализа чувствительности в Excel

Сначала я задала, в каком диапазоне будет меняться каждый параметр (например, цена от 80 до 120 рублей) и с каким шагом (например, по 5 рублей). Это нужно, чтобы по очереди “покрутить” разные сценарии и посмотреть, как каждый из них влияет на результат.

Ну и долго не думая, пошла «в лоб» — протянула пределы вправо, а ниже рассчитала NPV одной формулой (точно так же, как делала ранее) учитывая измененный параметр.

Picture background

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

Затем глазками ищем, где знак «–» сменяется на «+» и примерно определяем диапазон, в котором находится барьерная точка по показателю.

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

Прошу меня извинить, но строить графики для этого анализа уже выше моих сил.

А теперь посмотрим, как это можно сделать в Python:

Я подключаю библиотеку, которая помогает легко строить графики, считаю NPV, задаю диапазоны и шаги для нужных параметров - и сразу получаю наглядный график:

Скрытый текст
import matplotlib.pyplot as plt


# Функция для расчета NPV
def calculate_npv(volume, price, var_cost, fixed_cost, tax_rate):
    cash_flows = []
    for year in range(1, project_lifetime + 1):
        revenue = volume * price
        variable_costs = volume * var_cost
        ebit = revenue - variable_costs - fixed_cost - amortization
        tax = max(ebit, 0) * tax_rate
        net_income = ebit - tax
        cash_flow = net_income + amortization
        cash_flows.append(cash_flow)
    cash_flows = [-initial_investment] + cash_flows
    return npf.npv(discount_rate, cash_flows)


# Анализ чувствительности
def sensitivity_analysis(param_name, values, base_params):
    npvs = []
    for val in values:
        params = base_params.copy()
        params[param_name] = val
        npvs.append(calculate_npv(**params))
    return npvs


# Базовые параметры
base_params = {
    'volume': 3000,
    'price': 890,
    'var_cost': 360,
    'fixed_cost': 10000,
    'tax_rate': 0.30
}


# Диапазоны значений
volume_range = range(0, 6001, 100)
price_range = range(50, 2501, 50)
var_cost_range = range(5, 631, 5)
fixed_cost_range = range(5000, 1060001, 5000)
tax_rate_range = [i / 100 for i in range(5, 101, 5)]


# Построение графиков (пример: чувствительность к цене)
for param_name, value_range in [
    ('volume', volume_range),
    ('price', price_range),
    ('var_cost', var_cost_range),
    ('fixed_cost', fixed_cost_range),
    ('tax_rate', tax_rate_range)
]:
    npvs = sensitivity_analysis(param_name, value_range, base_params)
    plt.figure(figsize=(8, 4))
    plt.plot(value_range, npvs)
    plt.title(f"Чувствительность NPV к параметру: {param_name}")
    plt.xlabel(param_name)
    plt.ylabel("NPV")
    plt.grid(True)
    plt.show()

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

Выводы

Если коротко: Excel — как кофе на бегу. Быстро, удобно, всегда под рукой. Когда нужно срочно что-то посчитать, показать, прикинуть — он отлично справляется. Но стоит сделать шаг в сторону от «просто посчитать NPV», как начинается формульная акробатика, зависимость от человеческого фактора и необходимость проверять каждый шаг. Особенно когда данных становится больше или требуется гибкость.

Python — совсем другая история. Это как собрать себе кофемашину, настроить помол, давление, а потом в любое утро получать идеальный результат нажатием одной кнопки. Нужно время, чтобы разобраться, да, но потом — удовольствие от того, как все работает. Расчеты прозрачные, масштабируются без слез, графики рисуются сами, сценарии меняются в одну строку, и ничего не «слетает», если ты подвинул ячейку.

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

Если вы финансист, работайте и с тем, и с тем. Excel — это ваш калькулятор, быстрый и понятный. Python — это ваш инженерный инструмент, мощный и гибкий. Не выбирайте между ними. Используйте оба — и станьте незаменимыми.

А вы где сейчас?

Продолжаете в Excel? Или уже в Python? Или ищете мост между ними?

Поделитесь, как вы решаете такие задачи. Интересно услышать кейсы от финансистов и аналитиков.

Если материал зайдет, у меня есть еще пару тем, которыми хочу поделиться)

Комментарии (16)


  1. UkfdysqYfxfkmybr
    10.06.2025 18:04

    Финансисты и экономисты это не гуманитарии. Микроэкономика это вообще точная наука.


    1. denartonhabr
      10.06.2025 18:04

      Упоминается гуманитарный бэкграунд, экономист и финансист было позже


  1. KEugene
    10.06.2025 18:04

    Питон, конечно, мощный инструмент. Но у него есть важный недостаток. Вы не можете отправить файл с кодом клиенту/коллеге/начальнику со словами "посмотри, что получилось". И с печатью все не так просто. Даже предложенных майкрософт компромисс в виде вызова питона прямо в экселе не решает все эти вопросы. Печать - ок. Но вот чтобы "поиграться со значениями" надо иметь лицензию и соответствующую версию самого экселя.

    В общем, все очень ситуативно.


  1. pnmv
    10.06.2025 18:04

    на vba можно писать полноценные проекты, без использования "ручных формул". при необходимости, можно их задавать, прямо из vba. то есть, нет необходимости шерстить руками таблицы.

    однако, в зависимости от версии, порог вхождения, в определенных моментах, может превышать питоновский.


  1. Dr_Faksov
    10.06.2025 18:04

    Уважаемый автор, а вы умеете работать с VBA? Он, конечно не для любой задачи во Вселенной, как Питон (хотя есть DOOM написанный на VBA), но, вообще говоря, для всего MS Office, а не только для Excel. И да VBA не есть EXCEL, это не "формулы в ячейках", это макросы, выражаясь по простому. Это то, что появляется на экране по Alt-F11.

    Для того чтобы сравнивать насколько хорош, в вашем случае, Питон в Excel, надо вашу формулу написать в VBA и сравнить быстродействие. И что-то мне подсказывает, что вас ждёт сюрприз. Хотя бы потому, что " 900 столбцов " не понадобятся. Всего одно слово - "массивы". Но надо уметь.

    А ещё мне что-то подсказывает, что если вашу абраккадабру формулу разделить на 10, к примеру, формул, которые можно понять с одного взгляда, то быстродействие тоже не останется равнодушным к этому подвигу.

    Вы пишите "Любому, кто не участвовал в создании модели, придётся потратить время, чтобы понять, что к чему." А почему люди должны тратить своё время на понимание ваших "формул"? Может просто научится писать кратко и понятно? Это сложно, я понимаю. И надо тратить своё время, которого жалко. Это на чужое время - насрать. Валить всё в кучу - проще. Вот только отлаживать такую кучу...

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


    1. wl2776
      10.06.2025 18:04

      Вы пишите "Любому, кто не участвовал в создании модели, придётся потратить время, чтобы понять, что к чему." А почему люди должны тратить своё время на понимание ваших "формул"? Может просто научится писать кратко и понятно?

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


    1. valentina_di Автор
      10.06.2025 18:04

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

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

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

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

      Рада, что статья вызвала отклик — это помогает расти и писать лучше. Ещё раз спасибо за обратную связь!)


    1. nomorewar
      10.06.2025 18:04

      Как человек, писавший на VBA, спрошу: а зачем? Питон однозначно лучше. ВБА уже больше мертв, чем жив. Да и вендор лок.


      1. Dr_Faksov
        10.06.2025 18:04

        Зачем? Первое, что в голову пришло - для использования связки Excel+VBA нужен только Excel. И это - один файл. Удобный для пересылки, к примеру. Который можно использовать там, где есть только Excel. Безотносительно к другому программному обеспечению.

        Excel входит в списки программного обеспечения, допущенного к работе с документами с грифом "секретно\конфиденциально". А Питон? И ВСЕ его библиотеки? Это второе, что в голову пришло.

        Я не спорю, что Питон во многом лучше. Но "лучше" далеко не всегда синоним "удобнее". Человеческие ноги по проходимости лучше колеса. Значит ли это, что когда есть выбор, то передвигаться в экспедиции лучше пешком, чем автотранспортом ? А болид "Формула -1" гораздо лучше "Ролс-Ройса" по динамике, управляемости, безопасности и престижности (стать владельцем "Ролс-Ройса" гораздо проще и дешевле). Вот только он ни разу не удобнее "Ролс-Ройса".


        1. ParshinSA
          10.06.2025 18:04

          Excel входит в списки программного обеспечения, допущенного к работе с документами с грифом "секретно\конфеденциально". А Питон? И ВСЕ его библиотеки?

          В больших компаниях следят за информационной безопасностью и "дырками" в библиотеках. Но с чем возникнут проблемы - если кто захочет воспроизвести весь расчет: придется устанавливать python и все его библиотеки... или упаковывать решение в продукт.


  1. RKrop
    10.06.2025 18:04

    А я придумал, как сократить вашу экселевскую формулу как минимум на два символа! Вот эти два символа - ^1 - можно смело убрать и результат не изменится ;)

    В целом я согласен с автором, что если питон (или любой другой инструмент) позволяет сэкономить время и нервы, то обязательно нужно этим пользоваться. Особенно, в российском бизнесе, где крайне велика вероятность того, что большой начальник (он же ЛПР, т. е. лицо, принимающее решения) посмотрит на принесённые ему цифры, отложит бумагу в сторону и скажет примерно следующее "уважаемые коллеги, это всё конечно хорошо, но учитывая обстоятельства, мы будем действовать по-другому" (нецензурные междометия из речи ЛПР я предусмотрительно вырезал).


  1. leo_noir
    10.06.2025 18:04

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

    Среди наших продуктов есть как своя (адаптированная) версия jupyterhub с предустановленными финснвовыми библиотеками и обертками к API для работы с рыночными данными и функционалом для финансового инжениринга, так и собственные надстройки для excel. Число клиентов, переходящих с excel на питон для решения повседневных задач растёт, но очень медленно. Основная масса трейдеров и аналитиков всё равно предпочитает традиционный excel. Я конечно, не говорю про квантов или рисковиков - для них у нас есть целое направление решений.

    А вы пробовали использовать xlwings?


    1. valentina_di Автор
      10.06.2025 18:04

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

      Про xlwings, раньше не использовала, но сейчас прочитала подробнее - буду погружаться. Я осваиваю Python в процессе работы, и хотя уже активно применяю его для автоматизации и аналитики, некоторые подходы пока ещё интуитивные. Постепенно развиваю навыки, изучаю best practices и ищу новые пути. Спасибо, что поделились — возьму на заметку и обязательно протестирую!


  1. s1301
    10.06.2025 18:04

    Смотрите, у Вас получается PI меньше единицы, а проект получается не выгоден экономически, но NPV положителен, значит есть ошибка. Вы делите чистую приведенную стоимость на затраты, а надо было просуммировать дисконированный денежный поток и разделить на затраты. для указанного проекта PI получился около 1,57. Вы можете поступить по-другому: от чистой приведенной стоимости (NPV) отнимите затраты (не ошибитесь со знаком!), потом разделите на затраты, получите то же


    1. valentina_di Автор
      10.06.2025 18:04

      Спасибо большое за комментарий и точное замечание! Вы правы — в расчете PI действительно была ошибка, и я уже внесла правки в статью. Благодарю за внимательность и участие — это помогает повысить точность и качество материала.


  1. ParshinSA
    10.06.2025 18:04

    Учитывая развитие современных технологий добавлю: подобные короткие скрипты и вывод графиков в python можно нагенерировать в ChatGPT (чем иногда и занимаюсь, но не в финансах). Причем иногда это быстрее чем прочитать в том же ChatGPT про решение той или иной задачи в excel. Поэтому порог входа в python становится ниже, и с использованием LLM типовые задачи решаются быстрее чем может показать.

    Но для демонстрации excel и вправду удобнее с учетом его распространения.

    P.S. Спасибо автору за интересный практичный кейс программирования для непрограммистов!