Чтобы вы всегда могли проверить данные, найденные в интернете, или рассчитать доходность собственных инвестиций, в этой статье я подскажу вам как это делать правильно.
Описанные ниже базовые ситуации и соответствующие им формулы запоминать сразу не обязательно. Скорее предполагается, что по мере необходимости вы будете использовать эту статью как справочник.
Формулы Excel, встречающиеся в этой статье, есть и в других электронных таблицах (по крайней мере в Google Sheets и LibreOffice), часто с теми же названиями.
- 1) Проценты и разы изменений
- 2) Расчет доходности инвестиций
- 3) Расчет стандартного отклонения
Проценты и разы изменений
Проценты можно записать двумя способами – с помощью символа % или без него. Например, 1% и 0,01 – это одно и то же, потому что процент – это одна сотая часть (1 / 100 = 0,01 = 1%).
Соответственно, записать величину изменения чего-то тоже можно по-разному. Если у вас было 100 рублей, а стало 110, можно сказать, что стало больше на 10% (100 + 100 * 0.1) или в 1,1 раза (100 * 1.1). Отличие в том, что когда мы указываем разы изменений, к процентам мы добавляем единицу (1 + 0,1 = 1,1), то есть сколько у нас было изначально, и тогда можем прошлую величину просто умножить на разы изменений, чтобы получить новую.
В зависимости от ситуации может быть удобнее использовать ту или иную запись. Например, если у нас есть такая серия изменений изначальной суммы в 100 рублей в процентах: +5%, -5%, +10%, то проще всего посчитать результат так, собрав разы изменений в серию умножений: 100 * 1,05 * 0,95 * 1,1 = 109,725.
Расчет доходности инвестиций
Доходность в процентах за любой период можно рассчитать двумя способами:
- знакомая многим формула: (конец периода – начало периода) / начало периода = (110 – 100) / 100 = 10%;
- и более короткая версия: конец периода / начало периода – 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 или 100 * 1,0914 = 109,14
- 109,14 + 109,14 * 9,14% = 119,12 или 109.14 * 1,0914 = 119,12
- 119,12 + 119,12 * 9,14% = 130 или 119,12 * 1,0914 = 130
В Excel (или других электронных таблицах) возвести в степень можно либо с помощью знака ^, либо функцией СТЕПЕНЬ((x + 1); (1 / n)) – 1.
Есть начальная и конечная сумма
Если у вас есть результат инвестиций за известный период в виде сумм на начало и конец этого периода, то всё, что нужно сделать – это узнать общую доходность (формула та же, из начала статьи – 130 / 100 – 1 = 30%) и с ней рассчитать среднегодовую как мы проделали выше.
Есть доходности по годам
Если у вас есть ряд доходностей за отдельные годы или вы можете найти их по ценам, то расчет среднегодовой доходности сводится к двум способам:
- поиску среднего геометрического этих доходностей, выраженных в разах;
- умножению этих разов для получения общей доходности и расчету как в предыдущих пунктах.
Для расчета по первому варианту проще всего обратиться к 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%
Формула среднего геометрического в обоих вариантах одна и та же, но в первом варианте нам бы потребовалось взять корень N-ой степени, где N – количество доходностей, что неудобно делать в простых калькуляторах. А во втором варианте вместо корня мы используем возведение в обратную степень (1 / N), что дает тот же результат и проще записать.
Есть доходность за неполный год
Пока мы рассмотрели только полные годовые периоды, но среднегодовую доходность можно считать и для неполных лет. Например, какой-то актив за 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, по числу недель или кварталов в году).
Расчет годовой доходности с учетом пополнений и изъятий (движения средств)
Все вышеперечисленные способы подходят для расчета доходности активов или экономических показателей в вакууме, но личные инвестиции сопряжены с периодическими пополнениями портфеля или изъятиями средств из него.
Если просто рассчитать доходность способами выше, она окажется искаженной этими движениями денег. Например, если на начало года у вас было 100 000 руб., потом вы купили активы на 80 000 руб., а в конце года стоимость портфеля составила 200 000 руб., это не значит, что вы заработали 200000 / 100000 – 1 = 100%.
В таких случаях есть несколько способов посчитать свой финансовый результат, устранив движения средств из показателя доходности. Наиболее удобный из них – это расчет внутренней нормы (или ставки) доходности (internal rate of return, IRR), потому что для этого есть две функции в Excel.
- ВСД (IRR) – для регулярных во времени пополнений или изъятий (например, каждый месяц, квартал или год);
- ЧИСТВНДОХ (XIRR) – для нерегулярных.
Всё, что нужно сделать, это передать в функцию ЧИСТВНДОХ диапазоны ячеек с суммами и датами, при этом пополнения будут положительными числами, а изъятия отрицательными (или наоборот), а последней должна быть текущая стоимость портфеля, как если бы вы сняли всё в последний день. Если те 80 000 руб. мы положили 6 июля, то для нашего примера это будет выглядеть так:
- 2019-01-01: -100000
- 2019-07-06: -80000
- 2019-12-31: 200000
Годовая доходность: ЧИСТВНДОХ(B1:B3; A1:A3) = 14,56%.
В колонке A были даты, в B – суммы.
Менее удобный способ – поделить весь период инвестирования на интервалы между пополнениями или снятиями, посчитать доходность каждого из интервалов, используя фактическую начальную сумму и конечную сумму за вычетом движения денег, и перемножить разы изменений в этих интервалах для получения общей доходности.
Расчет доходности, очищенной от влияния волатильности
Все предыдущие методы расчета доходности правильные, точные и в 99% случаев их достаточно. Единственный минус в том, что их результаты сильно зависят от выбранного периода. Например, если сместить точки начала и конца периода, за который мы считаем доходность, всего на несколько дней, то результат может сильно измениться, если какой-то из соседних дней был волатильным (цена актива в эту дату резко поменялась).
Если по какой-то причине нам важно от этого эффекта волатильности избавиться, например, при сравнении результатов работы двух фондов, когда мы хотим снизить влияние случайной волатильности на наш выбор, то можно прибегнуть к другому способу расчета доходности – через коэффициент линейной регрессии натуральных логарифмов цен актива. Звучит сложнее, чем есть на самом деле.
Суть метода заключается в том, что мы считаем доходность не по двум конечным точкам, а с учетом всех значений цены актива, потому что линия регрессии строится методом наименьших квадратов, то есть так, чтобы её расстояние от каждой из точек (в нашем случае это цены) было минимальным.
С этим нам помогут электронные таблицы. Сначала на цены актива или суммы капитала применяется натуральный логарифм (LN), чтобы перейти от (потенциально) экспоненциального роста к линейному, а затем считается коэффициент линейной регрессии (SLOPE или НАКЛОН), который и будет доходностью.
Я сделал пример таблицы для расчета доходности индекса МосБиржи этим методом и сравнения результатов с обычным CAGR. Его можно скопировать себе и менять через меню Файл – Создать копию. Обратите внимание, что в функцию SLOPE в качестве значений по оси Y передаются натуральные логарифмы цен (колонка D), а в качестве значений по оси X – не даты, а порядковый номер месяцев (колонка A).
В результате у нас получается месячная доходность, которую я затем привожу к годовой возведением в степень 12. Если бы данные были дневные, получилась бы дневная доходность, а если годовые – годовая. Если же в качестве значений по оси X передать фракцию года (колонка B), доходность изначально получится годовая (пример в ячейке K3). И, поскольку она не приводится к годовой, её можно считать более точной.
Расчет стандартного отклонения
В любых электронных таблицах рассчитать стандартное отклонение не составляет труда. Его можно считать для доходностей на годовых или любых других интервалах, выраженных в процентах или разах, приводить месячное стандартное отклонение к годовому и так далее. Стандартное отклонение также называется среднеквадратическим или СКО.
Для расчета нам понадобится функция СТАНДОТКЛОН (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).
И наоборот – из годового значения можно получить приблизительное дневное, недельное, месячное или квартальное, если поделить его на корень из соответствующего периода.
Этот способ аннуализации не даёт точное значение годового СКО, а служит лишь грубой аппроксимацией (приближением), потому что годовая доходность – это произведение разов дневных, месячных или других доходностей, а не их сумма, и умножение на квадратный корень для точного расчета применяться не может.
Хотите научиться инвестировать? Пройдите обучающий курс о создании инвестиционного портфеля.
Нравится блог? Поддержите меня подпиской и получите доступ к преимуществам.
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 интересна конечно, но она не показывает конечный результат.