Самым разным людям — финансистам, биржевым дельцам, банкирам и даже обыкновенным труженикам, вроде казначея пенсионного фонда Тимстеров[13], — хотелось бы знать, какой доход принесут им вложенные средства. Если деньги лежат на срочном вкладе, то особых сложностей не возникает, ибо банки в каждом рекламном проспекте трубят о своих процентах. Даже если ваши средства вложены в облигации, по которым не только выплачиваются проценты, но которые можно впоследствии еще и с выгодой продать, то, чтобы определить свой доход, достаточно взять разницу курсовой стоимости облигаций, прибавить проценты, и вы получите сумму, которую должен выплатить банк. Результатом этих вычислений, если их выразить в процентах годовых, приносящих при условии непрерывного их начисления известную прибыль, является инвестиционный доход.
Ситуация, однако, не столь проста, если инвестиции связаны, скажем, с инвестиционным фондом, счетом капитала или небольшим собственным делом, когда имеют место нерегулярные поступления и платежи и текущие показатели меняются изо дня в день. Хорошим, в этом смысле, примером служит инвестиционный фонд[14]. Действительно, новые акции могут приобретаться по рыночной стоимости в любой момент, а купленные ранее акции точно так же могут сбываться; в процессе функционирования фонда дивиденды все время меняются (и даже исчезают), однако, как правило, вкладываются в дополнительные акции; и наконец, стоимость акций фонда ежедневно меняется по мере того, как меняется курс лежащих в его основе ценных бумаг. Было бы, конечно, здорово сравнить доход, получаемый со срочного вклада, с той радужной перспективой, которую обещают проспекты инвестиционных фондов, не забывая, само собой, о том, что обычно доход пропорционален риску.
К счастью, для таких случаев имеется формула расчета дохода. Формула, к сожалению, не в замкнутом виде, а итерационная.
Предположим, что А — текущая величина инвестиций, что существует m операций с капиталом, причем i-я операция производилась на сумму Pi (отрицательные значения указывают на изъятие капитала) и имела место Ti лет назад, и пусть первоначальная оценка ожидаемого дохода Y0 полагается равной нулю. Итак, определим при j > 0 величины
и
Тогда наилучшая оценка дохода Yj дается формулой
Yj = Yj−1 + Cj/Dj
Как только разность
|Yj − Yj−1|
станет достаточно малой, величина дохода считается найденной[15].
При изучении табл. 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 включительно. Вообще говоря, перевод дат из одного календаря в другой может оказаться отнюдь не простым делом.
Инструментовка. Годится любой процедурный язык, предусматривающий действия с вещественными числами.
Длительность исполнения. Одному исполнителю на одну неделю.
* Аникин А. В. Кредитная система современного капитализма. — М.: Наука, 1964.
Эту книгу можно рекомендовать читателю, желающему подробнее ознакомиться с деятельностью различных финансовых институтов капиталистических стран, особенно США.