Годовой доход против годового дохода против CAGR - PullRequest
0 голосов
/ 29 июня 2018

Я читаю в Интернете и переполнения стека различные статьи о Годовой доход против Годовой доход против CAGR , и я немного растерялся, и я не знаю, если они разные или одно и то же.

Вот что мне нужно. Предположим, у меня темп роста 10% за 3 года. Начиная со 100 $ у меня есть:

Начальный капитал: 100 $ Год 1: 110 $ Год 2: 121 $ Год 3: 133 $

Теперь Годовой доход здесь равен 10%, а Среднегодовой доход должен составлять 33/3 = 11%. Правильный? Очевидно, что Среднегодовая доходность не дает мне хорошей оценки темпа роста, поскольку не учитывает сложный процент. Я прав?

Предположим, теперь я изменил дату ввода в проблеме. У меня есть начальный капитал 100 $ и конечный 133 $, и я хочу рассчитать темп роста. Формула должна быть (Капитал окончательный / Капитал начальный) ^ (1/3) -1.

* * Тысяча двадцать-дв (133/100) ^ (1/3) -1 = (1,33) ^ (1/3) = 0,098 * * тысяча двадцать-три

, которые соответствуют более или менее 10%. Насколько мои вычисления и рассуждения верны? Если да, то в чем разница между Годовой доход против CAGR ? Кажется, они одинаковы, верно?

Предположим, что теперь мои временные рамки идут с 10 сентября 2008 года по 10 февраля 2012 года, мои временные рамки составляют 3 года и 132 дня. Согласно этому веб-сайту (см. Видео) https://www.investopedia.com/ask/answers/071014/what-formula-calculating-compound-annual-growth-rate-cagr-excel.asp число лет здесь (3 + K), где K - количество дней, преобразованных в годы, в нашем примере K = 132/365 = 0,36, поэтому число лет N = 3 + 0,36 = 3,36, и это значение я должен использовать в формуле. Я прав?

Теперь последнее сомнение заключается в том, что веб-сайт для расчета K предлагает разделить количество дней на 360 или 365, но я должен учитывать в своих расчетах только количество дней, в течение которых фондовый рынок открыт (число, более или менее равное 272)

Последний вопрос о python: предположим, у меня есть фрейм данных panda df. Может ли кто-нибудь добавить фрагмент кода, который я могу использовать для расчета годовой доходности и / или CAGR. Код должен учитывать, что временные рамки могут иметь количество дней, превышающее один год, а не кратное одному году (как в примере выше).

Я пытался написать это, но я не уверен, что проделал хорошую работу.

Кроме того, что произойдет, если у меня меньше одного года? Должен ли я использовать Годовой доход? Как изменить код в этом случае?

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

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

Теория

Согласно моему примеру выше, если у меня есть инвестиция с 10% годовой доходностью и начальным капиталом 100 $, у меня есть:

Год 1: 110 $ Год 2: 121 $ Год 3: 133,1 $

Общая сумма заработка составляет 33,1 $, и она называется Накопительный доход . Если вы поделите этот заработок на количество лет, вы получите Среднее среднее значение прибыли . Это хорошая оценка для понимания тенденций, но она не учитывает сложный интерес. Чтобы получить реальный годовой доход , вам следует применить эту формулу (которая является производной от формулы сложного процента - подробности см. В Википедии).

Годовой доход (или CAGR) = (Капитал окончательный / Капитал начальный) ^ (1 / N) -1

Где N - количество лет. Если дата начала и дата окончания инвестиций начинаются 1 января и заканчиваются 31 декабря, N является целым числом, в противном случае N может быть действительным числом, где десятичная часть рассчитывается как 365 / количество дней.

Программирование

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

  • start_time
  • end_time
  • Начальная_цен
  • end_price

совокупный доход - простая формула в Python:

cum_return_percentage=((end_price/start_price) - 1)*100

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

annual_return=(pow((end_price/start_price),(1/number_years))-1)*100

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

diffyears=end_date.year - start_date.year
difference=end_date - start_date.replace(end_date.year)
days_in_year=isleap(end_date.year) and 366 or 365
number_years=diffyears + difference.days/days_in_year
annual_return=(pow((end_price/start_price),(1/number_years))-1)*100

Чтобы дать кредиты, этот код взят из этого обсуждения: Питоническая разница между двумя датами в годах?

Надеюсь, это поможет другим парням, имеющим те же проблемы.

0 голосов
/ 29 июня 2018

Ваши формулы верны, но при условии 10-процентного роста вы получите 133,1, а НЕ 133.

Тогда: (133,1 / 100) ^ (1/3) -1 = 10%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...