Рубрики
Инвестирование

Расчет годовой доходности и стандартного отклонения

Чтобы вы всегда могли проверить данные, найденные в интернете, или рассчитать доходность собственных инвестиций, в этой статье я научу вас делать это правильно.

Это часть курса о создании своего инвестиционного портфеля. Информацию о курсе и другие статьи можно найти здесь.

Приведенные здесь методы расчета подходят для любых электронных таблиц – Excel, Google Sheets или LibreOffice. А то, что не использует экселевские функции, можно просто считать в любом калькуляторе.

Расчет доходности инвестиций

Доходность в процентах за любой период можно рассчитать двумя способами:

  1. знакомая многим формула: (конец периода — начало периода) / начало периода = (110 — 100) / 100 = 10%;
  2. и более короткая версия: конец периода / начало периода — 1 = 110 / 100 — 1 = 10%. Мы будем считать доходность за год по второй формуле, потому что она немного короче и её результат в разах (до вычитания единицы) нам ещё пригодится.

Дальше для простоты мы будем называть её общей доходностью.

Расчет средней годовой доходности (и приведение доходности к годовой)

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

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

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

Другое название средней геометрической доходности из англоязычных источников, которое вам может встречаться — “compound annual growth rate” (CAGR).

Рассмотрим расчет годовой доходности для нескольких видов входящих данных, которые обычно есть у инвесторов. Под среднегодовой доходностью далее будем понимать именно среднюю геометрическую или CAGR.

Есть общая доходность за период

Если известно какую доходность принес актив за весь период, годовую доходность можно найти по формуле:

(x + 1) ^ (1 / n) — 1,

где x – доходность за весь период в процентах, n – количество полных лет в периоде, ^ – возведение в степень.

Например, если за 3 года доходность составила 30%, то среднегодовая доходность будет равно не 30% / 3 = 10%, а (0.3 + 1) ^ (1 / 3) — 1 = 9,14%.

Проверим: начальная сумма 100, конечная – 130:

  • 100 + 100 * 9,14% = 109,14
  • 109,14 + 109,14 * 9,14% = 119,12
  • 119,12 + 119,12 * 9,14% = 130

Прибавление единицы нужно, чтобы перевести известную доходность из процентов в разы, а вычитание в конце – для перевода обратно из разов в проценты (напомню, что 30% = 0.3, в Excel можно записать оба варианта, разницы нет).

В Excel (или других электронных таблицах) возвести в степень можно либо с помощью того же знака ^, либо функцией СТЕПЕНЬ((x + 1); (1 / n)) — 1.

Есть начальная и конечная сумма

Если у вас есть результат инвестиций за известный период в виде сумм на начало и конец этого периода, то всё, что нужно сделать – это узнать общую доходность (формула та же, из начала статьи – 130 / 100 — 1 = 30%) и с ней рассчитать среднегодовую по формуле из предыдущего пункта.

Есть доходности по годам

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

  1. поиску среднего геометрического этих доходностей, выраженных в разах;
  2. умножению этих разов для получения общей доходности и расчету как в предыдущих пунктах.

Первый вариант считать вручную нет смысла, поэтому лучше сразу обратиться к Excel и воспользоваться функцией СРГЕОМ (GEOMEAN). В неё надо передать либо список значений, либо диапазон ячеек, в которых у вас записаны годовые доходности, выраженные в разах.

Для примера посчитаем так инфляцию в России за последние 5 лет:

  • 2014: 11,35% + 1 = 1,1135
  • 2015: 12,91% + 1 = 1,1291
  • 2016: 5,39% + 1 = 1,0539
  • 2017: 2,51% + 1 = 1,0251
  • 2018: 4,26% + 1 = 1,0426

СРГЕОМ(1,1135; 1,1291; 1,0539; 1,0251; 1,0426) — 1 = 7,2%

СРГЕОМ(A1:A5) — 1 = 7,2% (представим, что в ячейках те же доходности в разах)

Второй вариант расчета через умножение будет выглядеть так:

(1,1135 * 1,1291 * 1,0539 * 1,0251 * 1,0426) ^ (1 / 5) — 1 = 7,2%

Есть доходность за неполный год

Пока мы рассмотрели только полные годовые периоды, но среднегодовую доходность можно считать и для неполных лет. Например, какой-то актив за 4 года и 6 месяцев принес вам 50%. Чтобы аннуализировать эту доходность (привести к среднегодовой, в степень нужно подставить 4,5:

(0.5 + 1) ^ (1 / 4,5) — 1 = 9,43%

Привести месяцы неполного года к дробной части можно просто разделив их на 12:

  • 6 / 12 = 0,5;
  • 8 / 12 = 0,67 и так далее.

По аналогичному принципу можно взять доходность за прошедшее количество дней в году и привести её к годовой:

(x + 1) ^ (252 / n) — 1, где x – доходность за эти дни в процентах, n – количество дней, а 252 — количество торговых дней в году.

Если доходность за 100 дней года составила 3%, то среднегодовая будет равна:

(0,03 + 1) ^ (252 / 100) — 1 = 7,7%.

Вместо торговых дней можно брать и календарные, то есть 365 — выбор зависит от ваших данных и целей расчета.

Приведение дневной или месячной доходности к годовой

Если вы располагаете среднедневной или среднемесячной доходностью (геометрической), эти данные можно аннуализировать по таким формулам:

  • для дневной доходности: (x + 1) ^ 252 — 1, где x – доходность в процентах и 252 — число торговых дней в году;
  • для месячной доходности: (x + 1) ^ 12 — 1.

Например, приведение дневной доходности 0,03% может выглядеть так: (0,0003 + 1) ^ 252 — 1 = 7,9%. Естественно, то же самое можно делать для недельной или квартальной доходности (возводя в 52 или 4 степень).

При этом аннуализированное СКО рассчитывается по другой формуле: x * SQRT(252), то есть среднедневную волатильность нужно умножить на квадратный корень из количества торговых дней (либо месяцев и т. д.).

Расчет годовой доходности с учетом пополнений и изъятий (движения средств)

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

Если просто рассчитать доходность способами выше, она окажется искаженной этими движениями денег. Например, если на начало года у вас было 100 000 руб., потом вы купили активы на 80 000 руб., а в конце года стоимость портфеля составила 200 000 руб., это не значит, что вы заработали 200000 / 100000 — 1 = 100%.

В таких случаях есть несколько способов посчитать свой финансовый результат, устранив движения средств из показателя доходности. Наиболее удобный из них – это расчет внутренней нормы (или ставки) доходности (internal rate of return, IRR), потому что для этого есть две функции в Excel.

  1. ВСД (IRR) – для регулярных во времени пополнений или изъятий (например, каждый месяц, квартал или год);
  2. ЧИСТВНДОХ (XIRR) – для нерегулярных.

Всё, что нужно сделать, это передать в функцию ЧИСТВНДОХ диапазоны ячеек с суммами и датами, при этом пополнения будут положительными числами, а изъятия отрицательными (или наоборот), а последней должна быть текущая стоимость портфеля, как если бы вы сняли всё в последний день. Если те 80 000 руб. мы положили 6 июля, то для нашего примера это будет выглядеть так:

  • 2019-01-01: -100000
  • 2019-07-06: -80000
  • 2019-12-31: 200000

Годовая доходность: ЧИСТВНДОХ(B1:B3; A1:A3) = 14,56%.

В колонке A были даты, в B – суммы.

Расчет стандартного отклонения

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

Для расчета нам понадобится функция СТАНДОТКЛОН (STDEV), куда достаточно просто передать диапазон ячеек с доходностями. Она рассчитывает СКО для выборки из генеральной совокупности.

В электронных таблицах вы встретите также функции STDEV.S (S = sample, выборка) и STDEV.P (P = population, генеральная совокупность). Использовать нужно STDEV.S, на которую и ссылается просто STDEV, потому что всех значений генеральной совокупности у нас обычно нет.

Если взять пример с инфляцией в России за последние 5 лет, получим такой результат:

СТАНДОТКЛОН(11,35%; 12,91%; 5,39%; 5,39%; 4,26%) = 3,96%.

Стандартное отклонение, полученное на дневных, недельных, месячных или квартальных доходностях, можно привести к годовому — аннуализировать:

  • Из дневного в годовое: умножаем полученное значение СКО дневных доходностей на квадратный корень из количества торговых дней: СТАНДОТКЛОН(…) * КОРЕНЬ(252). Обычно берут 252 дня в году, но в зависимости от календаря конкретной биржи среднее число торговых дней в году может отличаться. Вместо извлечения квадратного корня период можно возвести в обратную степень: СТАНДОТКЛОН(…) * (252 ^ (1 / 2)).
  • Из недельного в годовое: умножаем на квадратный корень из 52 недель в году: СТАНДОТКЛОН(…) * КОРЕНЬ(52).
  • Из месячного в годовое: умножаем на квадратный корень из 12 месяцев в году: СТАНДОТКЛОН(…) * КОРЕНЬ(12).
  • Из квартального в годовое: умножаем на квадратный корень из 4 кварталов в году: СТАНДОТКЛОН(…) * КОРЕНЬ(4).

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

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


Нравится блог? Поддержите меня подпиской и получите доступ к курсу, закрытому чату и другим преимуществам.

Оставьте отзыв

Как проходит изучение курса? Уже узнали что-то полезное? Что понравилось и не понравилось, что бы вы изменили? Оставьте отзыв о курсе, чтобы я мог сделать его лучше!
  • Есть вопросы? Задайте их в комментариях.
  • Чтобы не пропустить новые статьи, подпишитесь на Telegram, Twitter, Facebook, VK или на рассылку анонсов по почте:

18 ответов к “Расчет годовой доходности и стандартного отклонения”

При расчете среднего геометрического опечатка за 2017 год, там в результате 7,2% должно получиться.

Не знаю как учитывать дивиденды и купоны при подсчете с помощью XIRR. Их надо заводить как пополнение счета или вообще не учитывать?

Ну я это и имел в виду. Если реинвестируете в тот же день, можно вообще не учитывать — они будут учтены в сумме вывода денег в конце. А если в другой день, поступление дивидендов следует добавить как вывод, а реинвестирование — как ввод.

Считаю первый раз свою доходность портфеля за прошлый год и получается два совершенно разных результата формулой ЧИСТНВДОХ в экселе и по методу самостоятельного расчета средних активов как описано в этой статье в пункте 3 https://stockuper.ru/manual/raschet-dohodnosti/ по идее должна получится одинаковая доходность. Не могу понять в чем ошибка. Не мог бы помочь, посмотреть мои расчеты? Они в экселе по ссылке. https://yadi.sk/i/8eI_HfauSMwvrw

Все понял в чем ошибка я отсчет поставил с 2019 года. Можно удалить комментарий.

Дмитрий решил считать доходность портфеля по месяцам, то есть смотреть каждого 1 числа месяца как поменялся баланс и доходность относительно точки отсчета. Решил считать от 1 января этого года и если с январем никаких проблем не было просто взял и посчитал общую доходность за месяц как описано в начале статьи, то с февралем возникли проблемы. В нем я занес крупную сумму денег на счет, что сильно искажает подсчет доходности, как посчитать правильно? Корректно ли будет применить функцию xirr для отрезка не год, а 2 месяца? А если период больше года, ей все равно за какой период считать главное подставить начальную и конечную дату отрезка или она приводит доходность к годовой?

Подскажите пожалуйста если не сложно.)

XIRR считает аннуализированную доходность, то есть, если дать на вход месяц, функция экстраполирует это на год, что вряд ли является желаемым результатом. Чтобы считать месячные, проще исключить влияние пополнений, то есть считать простую взвешенную по времени доходность (TWR). Для этого придется рассчитать доходность по ценам активов внутри месяца до и после дня пополнения в разах и умножить полученные разы друг на друга, после чего вычесть единицу, что даст процентный прирост/убыток.

Например, если пополнение было 14 числа: с 31 числа предыдущего месяца по 14-ое текущего доходность составила 106 руб. / 101 руб. = 1,0495, с 14 по 30-ое 0,98, доходность за месяц = 1,0495 * 0,98 = 1,0285 — 1 = 2,85%.

Такую доходность можно сравнивать с любыми бенчмарками, другими портфелями. Доходность с учетом движения средств же про другое — это фактическая доходность инвестора. Её все-таки обычно считают в процентах годовых, для чего подходят внутренняя норма доходности (XIRR) или модифицированный метод Дитца.

TWR по моему не то что мне надо, да и честно говоря не понял как по нему делать подсчет. Мне же нужно не ровно за один месяц считать доходность, а все время увеличивающуюся на месяц, то есть сначала за один, дальше за 2, за 3 месяца и так далее.

Я решил подсчитывать как описано в этой статье в третьем пункте — https://stockuper.ru/manual/raschet-dohodnosti/, по моему этот способ правильно называется метод Дитца.

Хотелось бы понять будет ли точным такой подсчет доходности?

Можно просто умножать разы TWR, получится накопленная доходность за месяц, два и т. д.

Я не знаю зачем вы считаете доходность, поэтому не могу сказать какой способ будет точным. Для сравнения с бенчмарками имеет смысл считать только TWR, иначе придется считать виртуальные cashflows в бенчмарке, ведь доходность бенчмарка — это TWR.

Если вы пытаетесь выяснить именно доходность инвестора (то есть своих движений на рынке, а не только портфеля), математически модифицированный метод Дитца точнее простого метода Дитца. При этом метод дает результат за HPR (holding period return, то есть результат получается за конкретный период времени, что вроде вам и нужно). А метод IRR почти такой же по точности, но результат его аннуализирован (дает среднегодовую ставку, последовательно применяя которую к начальной сумме можно получить конечную).

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

Можете сказать по ссылке выше в 3 пункте описан модифицированный метод Дитца? А то я не уверен.

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

Ну вот для сравнения с бенчмарками и надо либо TWR считать, либо симулировать движения денег в эти бенчмарки как в портфеле (посмотрите что проще), потому что иначе теплое с мягким будете сравнивать.

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

Вы пишите что по формуле xirr можно считать годовую доходность. А подходит ли она для большего срока? У меня сейчас стоит задача посчитать накопленную доходность за 2 года (а не среднегодовую cagr за 2 года) с учетом пополнений и изъятий. Подойдет ли способ по формуле xirr?

Нет, XIRR всегда выдаёт приведённую к годовой ставку доходности, учитывающую сложный процент (тот самый CAGR).

Вы, похоже, хотите посчитать TWR по методу перемножения доходностей в разах за периоды владения портфелем между движениями средств (holding periods). Пример расчёта был выше.

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

У меня есть рассчитанные по формуле xirr доходности за 2020 год — 26.03% и 2021 год — 14.63%.

Если я беру эти доходности и как приведено в разделе «Есть доходности по годам», сделаю:

(1,2603 * 1,1463 ) ^ (1 / 2) – 1 = 20.19%

Но ведь это же я снова считаю среднюю годовую доходность так ведь? Вы же пишите в статье —

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

А как мне посчитать правильно накопленную доходность за все время то? Со всем дивидендами, комиссиями, налогами, временем пополнения, если начинал я с нуля а в конце условная сумма N на счете.

Еще раз перечитал статью и всю переписку, кажется теперь понял, во всяком случае есть догадка.

Передо мной стоит задача узнать накопленную (именно накопленную, а не среднегодовую!) доходность за 2 года инвестирования.

Есть рассчитанные по формуле xirr (ЧИСТНВДОХ) доходности с учетом пополнения и вывода средств из портфеля за 2020 год – 26.03% и 2021 год – 14.63%.

Теперь мне по методу TWR как вы показывали в комментарии надо посчитать так:

((1,2603 * 1,1463 ) – 1)*100% = 44.46%

Я корректно посчитал, это будет правильны ответ на поставленную задачу?

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

Добавить комментарий

Ваш адрес email не будет опубликован.