Книга: Этюды для программистов
10. Не прячьте ваши денежки, или Расчет дохода от вложенного капитала
10.
Не прячьте ваши денежки,
или Расчет дохода от вложенного капитала
Самым разным людям — финансистам, биржевым дельцам, банкирам и даже обыкновенным труженикам, вроде казначея пенсионного фонда Тимстеров[13], — хотелось бы знать, какой доход принесут им вложенные средства. Если деньги лежат на срочном вкладе, то особых сложностей не возникает, ибо банки в каждом рекламном проспекте трубят о своих процентах. Даже если ваши средства вложены в облигации, по которым не только выплачиваются проценты, но которые можно впоследствии еще и с выгодой продать, то, чтобы определить свой доход, достаточно взять разницу курсовой стоимости облигаций, прибавить проценты, и вы получите сумму, которую должен выплатить банк. Результатом этих вычислений, если их выразить в процентах годовых, приносящих при условии непрерывного их начисления известную прибыль, является инвестиционный доход.
Ситуация, однако, не столь проста, если инвестиции связаны, скажем, с инвестиционным фондом, счетом капитала или небольшим собственным делом, когда имеют место нерегулярные поступления и платежи и текущие показатели меняются изо дня в день. Хорошим, в этом смысле, примером служит инвестиционный фонд[14]. Действительно, новые акции могут приобретаться по рыночной стоимости в любой момент, а купленные ранее акции точно так же могут сбываться; в процессе функционирования фонда дивиденды все время меняются (и даже исчезают), однако, как правило, вкладываются в дополнительные акции; и наконец, стоимость акций фонда ежедневно меняется по мере того, как меняется курс лежащих в его основе ценных бумаг. Было бы, конечно, здорово сравнить доход, получаемый со срочного вклада, с той радужной перспективой, которую обещают проспекты инвестиционных фондов, не забывая, само собой, о том, что обычно доход пропорционален риску.
К счастью, для таких случаев имеется формула расчета дохода. Формула, к сожалению, не в замкнутом виде, а итерационная.
Предположим, что А — текущая величина инвестиций, что существует m операций с капиталом, причем i-я операция производилась на сумму Pi (отрицательные значения указывают на изъятие капитала) и имела место Ti лет назад, и пусть первоначальная оценка ожидаемого дохода Y0 полагается равной нулю. Итак, определим при j > 0 величины
и
Тогда наилучшая оценка дохода Yj дается формулой
Yj = Yj?1 + Cj/Dj
Как только разность
|Yj ? Yj?1|
станет достаточно малой, величина дохода считается найденной[15].
Дата | Величина инвестиции | Сумма операции |
3/11/71 | $0.00 | $68.26 |
5/ 4/71 | 73.75 | 50.00 |
6/ 4/71 | 114.82 | 75.00 |
8/ 9/71 | 170.66 | 50.00 |
9/ 7/71 | 229.41 | 54.00 |
10/ 4/71 | 282.97 | 50.00 |
10/ 8/71 | 326.02 | 4.31 |
12/ 8/71 | 328.11 | 50.00 |
1/ 1/72 | 391.65 | 0.00 |
21 4/72 | 413.42 | 50.00 |
8/ 1/72 | 471.35 | 0.00 |
10/ 5/72 | 440.83 | 7.72 |
10/ 5/72 | 448.55 | 4.14 |
10/ 2/73 | 398.36 | 4.80 |
1/ 2/74 | 330.74 | 0.00 |
6/ 7/74 | 360.97 | -200.00 |
10/ 3/74 | 180.42 | 50.00 |
3/13/75 | 253.96 | -200.00 |
Таблица 10.1. Запись реальных инвестиций. Даты представлены в виде: месяц/число/год. |
При изучении табл. 10.1 обратите внимание, что величина А получается суммированием среднего и правого столбцов таблицы. Например, для третьей строки А = 189.82 долл., P1 = 68.26 долл., Р2 = 50.00 долл., Р3 = 75.00 долл., a T1 ? 85/365, Т2 ? 31/365, Т3 = 0. Заметим также, что для каждой строки таблицы оценка Y0 считается равной нулю и что расчет дохода для любой текущей даты не зависит от величины доходов в предшествующие времена.
Тема. Напишите программу вычисления дохода от вложенного капитала. Исходные данные представляют собой записи о проведенных операциях, в каждой из которых указываются дата, сумма операции и величина инвестиции на день проведения операции без учета последней. Предполагается, что информация упорядочена по времени. Программа должна проверить, не нарушен ли хронологический порядок следования данных и нет ли где-нибудь изъятия средств, превышающего текущий счет. Программа должна отпечатать аккуратную таблицу платежных операций. При этом для каждой операции в выводимой строке должны быть указаны дата ее проведения, сумма инвестиций до операции, объем операции, сумма инвестиций после операции, доход на день проведения и сумма всех поступлений и платежей на текущий день. Каким именно образом обозначить конец вводимой информации — решать самому программисту, а вот равенство нулю суммы операции является удобным способом выяснения величины текущего дохода. Если у вас нет собственных инвестиций и вы не можете раздобыть Wall Street Journal[16], тогда исходными данными для программы, быть может не вполне удачными, зато реальными, может служить табл. 10.1.
Указания исполнителю. В рассматриваемой задаче существует интересный побочный вопрос. Даты проведения банковских операций задаются в обычном виде: месяц/число/год. А для решения задачи требуется иметь отрезки времени Ti, прошедшие после операции, выраженные в годах. У банкиров и юристов имеется несколько способов определения момента времени, когда прекращается начисление процентов на деньги (подозревают, что метод расчета зависит от того, кто кому должен). В программе достаточно вычислять годы в виде вещественных чисел с учетом високосных лет, предполагая, что все даты лежат в диапазоне от 1900 до 1999 включительно. Вообще говоря, перевод дат из одного календаря в другой может оказаться отнюдь не простым делом.
Инструментовка. Годится любой процедурный язык, предусматривающий действия с вещественными числами.
Длительность исполнения. Одному исполнителю на одну неделю.
- 6.9. Подготовка данных для расчета прибыльности
- Ждем ваших отзывов!
- 8.3. Расчет шумовых характеристик УУ
- Расчет показателей
- Методы расчета
- 5.1. Оплата на расчетный счет по безналичному расчету
- Глава 6 Расчеты в программе Excel
- Урок 6.3. Простые расчеты в Excel
- Урок 6.4. Расчеты с использованием функций и имен ячеек
- Практическая работа 46. Выполнение расчетов с использованием Мастера функций
- Практическая работа 47. Расчеты с использованием логических функций
- 4.9.3. Просмотр и анализ результатов расчета