Анализ эффективности вложений денежных средств в РКО

  • Вид работы:
    Реферат
  • Предмет:
    Инвестиции
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    232,40 kb
  • Опубликовано:
    2009-01-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Анализ эффективности вложений денежных средств в РКО

Содержание.

                                                                                                                        стр.

Введение._______________________________________________________________

Глава 1. Функционирование рынка РКО._____________________________________

Участники рынка.______________________________________________________

Процедура торгов.______________________________________________________

Первичное размещение (аукцион)._______________________________________

Вторичные торги.____________________________________________________

Погашение._________________________________________________________

Документооборот.______________________________________________________

Отчеты, предоставляемые биржей._______________________________________

Отчеты, предоставляемые Дилерами._____________________________________

Глава 2. Задачи Дилера на рынке РКО._______________________________________

Ведение бэк-офиса._____________________________________________________

Оптимизация вложений собственных средств._______________________________

Управление средствами инвесторов._______________________________________

Исполнение поручений Инвесторов.________________________________________

Анализ эффективности вложений._________________________________________

Глава 3. Задачи формирования и ведения собственного  портфеля облигаций Дилера.

Формирование портфеля облигаций._______________________________________

Ликвидность портфеля.________________________________________________

Период инвестирования._______________________________________________

Инвестирование с целью максимизации дохода.___________________________

Безрисковое инвестирование.__________________________________________

Анализ эффективности вложений денежных средств в РКО.__________________

Постановка задачи.__________________________________________________

Метод решения._____________________________________________________

Экономическая интерпретация метода.__________________________________

Экономическая интерпретация полученных результатов.____________________

Применение результатов исследования для построения методов эффективного управления портфелем облигаций.

Заключение.___________________________________________________________

Список литературы.____________________________________________________

Приложения.__________________________________________________________

Приложение № 1. Программа автоматизации учета РКО.______________________

Приложение 1.1. Руководство пользователя._______________________________

Приложение 1.2. Текст программы._____________________________________

Приложение № 1.3. Журнал оборотов.___________________________________

Приложение № 1.4. Журнал лицевого учета.______________________________

Приложение № 1.5. Мемориальный ордер.________________________________

Приложение № 1.6. Отчет инвестору о совершенных сделках._________________

Приложение № 1.7. Структура пртфеля в разрезе по бумагам._________________

Приложение № 1.8. Структура портфеля обобщенная._______________________

Приложение № 1.9. Биржевая информация._______________________________

Приложение № 1.10. Еженедельный отчет в депозитарий.____________________

Приложение № 1.11. Ежемесячный отчет в депозитарий._____________________

Приложение № 2. Программа анализа эффективности вложений в РКО._________

Приложение 2.1. Текст программы._____________________________________

Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка._______

Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.__________

Приложение № 3. Входные статистические данные._________________________

Приложение 3.1. Информация о бумагах._________________________________

Приложение 3.2. Информация о сделках._________________________________

Приложение 3.3. Информация о движениях денежных средств.________________

Приложение 3.4. Биржевая информация._________________________________


 

Введение.


Республиканские краткосрочные бескупонные облигации (РКО) выпускаются Министерством Финансов Республики Татарстан. Рынок РКО существует с 1995 года. За три года он стал важнейшим сегментом в экономике Татарстана, сравнимый по объему заимствований с рынком межбанковских кредитов и иностранной валюты.

Гарантом надежности вложений в РКО является Правительство РТ. РКО - ликвидный и наиболее доходный инструмент финансового рынка. Доходность по РКО выше, чем по банковским вкладам и депозитным сертификатам, а также государственным ценным бумагам. Имея льготное налогообложение, РКО является наиболее привлекательным вложением свободных финансовых ресурсов.

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

РКО обращаются в бездокументарной форме и учитываются записями по счетам депо. Продажа и покупка производится на фондовой бирже. В связи с этим возникает задача учета операций с РКО как со стороны биржи, так и со стороны организаций-инвесторов.

На данном сегменте фондового рынка можно производить как краткосрочные спекулятивные операции, так и долгосрочные вложения свободных собственных или заемных средств. Таким образом, актуальной является задача оценки эффективности вложений в РКО.

В данной дипломной работе решаются две задачи:

1. Автоматизация учета операций с РКО;

2. Оценка эффективности вложений в РКО.

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

Глава 1. Функционирование рынка РКО.

 

Республиканские краткосрочные облигации обращаются на Волжско-Камской бирже (ВКБ) посредством проведения электронных торгов. В функционировании рынка РКО можно выделить следующие моменты:

1. Участники рынка.

2. Процедура торгов.

3. Документооборот.

Участники рынка.

 

Участники рынка разделяются на две категории: Дилеры и инвесторы.

Дилер - любое юридическое лицо, профессиональным участником рынка ценных бумаг, заключившее договор на выполнение функций по обслуживанию операций с облигациями с коммунальным предприятием "Дирекция по работе с ценными бумагами". Дилер может заключать сделки с РКО от своего имени и за свой счет, а также может выполнять функции финансового брокера при заключении сделок от своего имени за счет и по поручению инвестора.

Инвестор - любое юридическое или физическое лицо, заключившее с Дилером договор брокерского обслуживания на рынке РКО. Инвестор может приобретать облигации только через Дилеров, уплачивая при этом комиссию.

Процедура торгов.

 

В ходе торгов РКО проходят следующие этапы:

·   Первичное размещение;

·   Вторичные торги;

·   Погашение.

 

Первичное размещение (аукцион).

 

Аукцион - это первичное размещение облигаций, проводимого Организатором (Коммунальное предприятие "Дирекция по работе с ценными бумагами", агент Министерства финансов РТ по обслуживанию выпусков облигаций) по поручению Министерства финансов Республики Татарстан. Они проводятся по специальному графику. Дата аукциона, предельный объем выпуска, место и время проведения аукциона объявляются Организатором. Контрагентами в этой процедуре являются Министерство Финансов с одной стороны, и Дилеры - другой. В ходе аукциона Дилеры подают заявки на покупку облигаций. После подачи всех заявок до установленного времени, Министерство Финансов устанавливает цену отсечения - минимальная цена, по которой он готов продать облигации. Все заявки, поданные выше цены отсечения, удовлетворяются, заявки, поданные с более низкой ценой, не удовлетворяются.

Вторичные торги.


Обращение облигаций на вторичных торгах осуществляется в форме сделок купли-продажи через Торговую систему (организация, уполномоченная на основании договора с Министерством финансов РТ и двусторонних договоров с Дилерами обеспечивать процедуру заключения сделок купли-продажи путем предоставления технических средств). Контрагентами в этой процедуре выступают Дилеры. Дилеры вводят в Торговую систему посредством рабочих терминалов заявки на покупку или продажу облигаций. Если цены заявок совпадают, то они удовлетворяются, т.е. сделка считается совершенной.

Погашение.


Погашение облигаций производится в определенный день Министерством Финансов по номинальной стоимости.

Документооборот.


РКО обращаются в электронной форме. Учет по ним ведется посредством записей на счетах депо, открытых в Волжско-Камской трастовой компании (ВКТК). В связи с этим возникают вопросы отражения учета операций в документальной форме. В ходе обращения РКО можно выделить следующие типы документов:

·   Отчеты, предоставляемые биржей;

·   Отчеты, предоставляемые Дилерами.

Отчеты, предоставляемые биржей.

 

По завершении торгов биржа предоставляет каждому Дилеру следующие документы:

·   Биржевая информация;

·   Выписка из протокола торгов;

·   Обязательства Дилера по итогам торгов;

·   Выписка из реестра сделок.

Отчеты, предоставляемые Дилерами.

 

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

·   Еженедельный отчет;

·   Ежемесячный отчет;

·   Другие документы, необходимые для допуска Дилера к торгам.

После совершения сделки купли-продажи по поручению Инвестора, Дилер обязан предоставить Инвестору отчет о совершенной сделке в форме, установленной в договоре по брокерскому обслуживанию и выписку со счета депо. Дилер также может предоставить биржевую информацию и оказывать консультационные услуги.

Глава 2. Задачи Дилера на рынке РКО.


Являясь активным участником рынка РКО, Дилер сталкивается со следующими задачами:

1. Ведение бэк-офиса;

2. Оптимизация вложений собственных средств;

3. Управление средствами Инвесторов;

4. Исполнение поручений Инвесторов;

5. Анализ эффективности вложений.

Ведение бэк-офиса.

 

Бэк-офис - система электронного учета операций с ценными бумагами. Он включает в себя очень широкий спектр функциональных вопросов:

·   Ведение журнала лицевого учета и журнала оборотов (Приложение № 1.3, 1.4);

·   Формирование и печать мемориальных ордеров (Приложение №1.5);

·   Формирование и печать отчетов Инвесторам (Приложение №1.6);

·   Формирование и печать собственного портфеля Дилера (Приложение № 1.7, 1.8);

·   Формирование и печать биржевой информации (Приложение №1.9);

·   Формирование и печать еженедельного и ежемесячного отчетов (Приложение №1.10, 1.11).

Все перечисленные задачи реализованы в представленной программе автоматизированного учета операций с РКО.

Оптимизация вложений собственных средств.

 

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

Для формирования портфеля можно исходить из следующих факторов:

·   Ликвидность;

·   "Время жизни";

·   Получение наибольшего дохода;

·   Использование РКО в залоговых операциях для получения межбанковских кредитов.

Управление средствами инвесторов.

 

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

Исполнение поручений Инвесторов.


Дилер, являясь также и брокером на рынке РКО, совершает операции купли-продажи от своего имени, но по поручению Инвестора и за его счет. В этом случае Дилер должен вести учет приема заявок Инвесторов, исполнение поручений на бирже и формирование отчетов. За эти услуги он получает комиссионное вознаграждение.

Анализ эффективности вложений.

 

Данная задача является одной из наиболее сложных и необходимых. Определение метода анализа - нетривиальная задача. В Главе 3 рассмотрены две методики анализа эффективности вложений собственных средств в облигации.

Глава 3. Задачи формирования и ведения собственного
портфеля облигаций Дилера.

В процессе управления портфелем облигаций Дилер ставит перед собой следующие задачи:

·   формирование портфеля облигаций;

·   анализ эффективности вложений денежных средств.

Формирование портфеля облигаций.


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

Спецификой портфеля, состоящего из РКО, могут являться следующие моменты:

·   ликвидность портфеля;

·   период инвестирования;

·   инвестирование с целью максимизации дохода;

·   безрисковое инвестирование.

Ликвидность портфеля.


При инвестировании средств в РКО необходимо учитывать следующий момент. Денежные средства Дилеров, инвестируемые в облигации на вторичных торгах, часто превышают объемы торгов по какой-либо отдельной серии облигации. В связи с этим возникает вопрос ликвидности портфеля. Как показывает практика фондового рынка, облигации с наименьшим сроком погашения более ликвидные, чем те, которые имеют более длительный срок до погашения. Но, с другой стороны, облигации с меньшим сроком до погашения имеют и меньшую доходность. Таким образом, при продаже легче всего продать облигации с меньшим сроком до погашения, а купить те, которые имеют более длительный срок до погашения.

Период инвестирования.


Дилер при инвестировании сталкивается и со следующей задачей: период инвестирования. Так как ликвидность рынка напрямую зависит от срока до погашения облигации, то с этим приходится диверсифицировать портфеля по срокам погашения облигаций. Причем необходимо выбрать наилучшую стратегию, зависящую от целей инвестирования. Если целью инвестирования является получения максимального дохода за продолжительный период времени, то можно инвестировать средства в наиболее доходные серии облигаций. В случае если целью инвестирования является краткосрочная спекуляция, то наиболее оптимальной стратегией в данном случае является покупка серий облигаций со сроком погашения, близким к установленному сроку инвестирования; в этом случае минимизируется риск невозможности продажи облигаций на вторичном рынке.

Инвестирование с целью максимизации дохода.


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

Безрисковое инвестирование.


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

Анализ эффективности вложений денежных средств в РКО.

Постановка задачи.


Анализ эффективности вложения денежных в РКО можно разделить на анализ внутреннего управления портфелем облигаций и внешнего.

Внутреннее управление - это оценка изменения индекса портфеля в сравнении с индексом рынка.

Внешнее управление - это оценка изменения средневзвешенной доходности к погашению портфеля в сравнении со средневзвешенной доходностью к погашению рынка.

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

Метод решения.

Предлагаются методики для решения поставленных задач путем построения следующих показателей:

1.   Индекс портфеля и рынка (для оценки внутреннего управления).

Индекс строится следующим образом.

Для портфеля:

                                                             (1)

                                                                  (1.1)

                                       (1.2)

где:

значение индекса в момент t

коэффициент

стоимость портфеля по средневзвешенным ценам на момент закрытия торгов в момент t

сумма дополнительных вложений (извлечений) денежных средств в портфель в момент t, причем, если

дополнительные вложения

сумма изъятых денег

средневзвешенная цена i серии на момент закрытия торгов

количество бумаг i серии в портфеле

количество серий бумаг, обращающихся на рынке

Для рынка при расчете коэффициента  и  переменные будут иметь следующий смысл:

объем капитализации рынка по средневзвешенным ценам на момент t

сумма размещенных (погашенных) средств на аукционе

сумма размещенных средств на аукционе

сумма погашенных средств на аукционе

количество бумаг i серии, обращающихся на рынке

Данный индекс показывает, насколько эффективнее было внутреннее управление портфелем по сравнению с рыночной конъюктурой. Причем, если индекс портфеля меньше индекса рынка, то управление было неэффективным.

2.   Эффективная норма доходности к погашению портфеля и рынка (для оценки внешнего управления).

Показатель строится следующим образом(2 метода):

В теории расчета применяется следующий  метод:

                                                                     (2)

где:

                                                                                       (2.1)

сумма i расходного платежа

сумма i доходного платежа

количество дней между i расходным и доходным платежами

эффективная норма доходности, которая и определяется из решения данного уравнения

количество расходных и доходных платежей

Уравнение (2) решается численными методами, причем решение единственно.

Из-за неудобства решения уравнения на практике обычно применяют другой метод нахождения :

                                                                          (2.2)

где:

доходность к погашению i бумаги

количество i бумаги

дней до погашения i бумаги

 рассчитывается следующим образом:

                                                                 (2.3)

где:

цена покупки i бумаги в % от номинала (расходный платеж)

цена погашения в % от номинала (доходный платеж)

количество дней в году

дней до погашения i бумаги

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

Экономическая интерпретация метода.


Анализ с помощью методики построения индекса портфеля и рынка включает в себя следующие моменты:

Индекс построен таким образом, что он адекватно отражает управление портфелем и поведение рынка.

По построенному индексу можно определить доходность к приобретению портфеля и рынка, что бывает необходимым для сравнения вложений в РКО с другими инвестиционными операциями. Доходность к приобретению - это доходность на день расчета, которую можно получить при продаже портфеля облигаций.

Кроме того, можно оценить поведение рынка РКО в сравнении с другими рынками. Методика сравнения может быть различной и их построение требует учета специфики различных рынков.

Второй вид анализа - вычисление эффективной нормы доходности портфеля и рынка.

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

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

Экономическая интерпретация полученных результатов.


В данной работе сравнивался портфель РКО банка и рынок РКО с февраля по май месяц 1997 года.

При анализе путем построения индекса было выявлено следующее. График, построенный на основе индекса рынка (Приложение №2.3), имеет положительный наклон. Это обусловлено тем, что рынок в то время имел тенденцию к снижению доходности, поэтому, индекс, отражающий доходность к приобретению, увеличивался. В приведенном примере, основанном на реальных данных, внутреннее управление портфелем было эффективным по сравнению с рынком до начала мая месяца.

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

Применение результатов исследования для построения методов эффективного управления портфелем облигаций.


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

Для построения методик эффективного управления портфелем облигаций необходимо учитывать следующее:

1)  управление должно давать максимальный эффект;

2)  в управлении нужно учитывать возможность ввода-вывода денежных средств;

3)  необходимость попытки прогнозирования ситуации при изменении рыночной конъюнктуры;

4)  управление портфелем с точки зрения как доходности, так и ликвидности;

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

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

Заключение.


В работе решены следующие ключевые моменты, необходимые для работы с Республиканскими краткосрочными бескупонными облигациями (РКО):

·   Автоматизация учета операций с РКО

·   Оценка эффективности вложений в РКО

·   Описано функционирование рынка РКО, поставлены задачи, которые решает Дилер на рынке.

Решением задачи автоматизации операций с РКО является программный продукт, написанный на Visual Basic for Microsoft Excel, который позволяет вести полный документооборот Дилера на рынке РКО. Результатами автоматизации являются стандартизованные выходные формы, необходимые для ведения бухгалтерского учета РКО и предоставления различных отчетов.

При решении задачи оценки эффективности вложений в РКО применялись статьи, содержащие информацию об различных методиках расчета доходности облигаций. Результатом решения данной задачи является разработка собственной методики анализа. Методика проверена на реальных численных данных за определенный период функционирования рынка РКО. Конечным продуктом метода является программа, написанная на Visual Basic for Microsoft Excel, позволяющая делать анализ эффективности управления портфелем облигаций. Приведенный метод анализа также можно применить в дальнейшем для построения методов эффективного управления портфелем облигаций.

Обе поставленные задачи внедрены и используются на практике.

Список литературы.


1. Башарин Г.П. «Начала финансовой математики» Москва, «ИНФРА-М» 1997 г.

2. Бродский В., Горлин Ю. «Модель действительной доходности ГКО для клиентов» журнал «Рынок ценных бумаг» №1 1994 г.

3. Ветров А. «Как построить агрегированные показатели доходности рынка ГКО/ОФЗ» журнал «Рынок ценных бумаг» №5 1996 г.

4. Горелов М. «Построение оптимального портфеля ГКО: как максимизировать прибыль» журнал «Рынок ценных бумаг» №6 1996 г.

5. Горелов М., Никифоров Л. «О границах применимости принципа рыночного момента» журнал «Рынок ценных бумаг» №16 1996 г.

6. Горелов М. «Что нельзя упускать при построении модели управления портфелем ГКО» журнал «Рынок ценных бумаг» №11 1996 г.

7. Горлин Ю. «Оценка доходности операций с ГКО: вырианты биржевой игры» журнал «Рынок ценных бумаг» №6 1994 г.

8. Грядовая О. «Доходность как критерий оптимизации решений по управлению портфелем ГКО» журнал «Рынок ценных бумаг» №15 1994 г.

9. Губерниев В. «ГКО в оптимальном портфеле» журнал «Рынок ценных бумаг» №15 1996 г.

10. Демушкина Е. «Сделки с государственными ценными бумагами» журнал «Рынок ценных бумаг» №23 1996 г.

11. Екушов А. «Как превысить среднюю доходность рынка ГКО» журнал «Рынок ценных бумаг» №11 1997 г.

12. Ивахин А. «Как преодолеть ограничения в моделировании рынка ГКО» журнал «Рынок ценных бумаг» №12 1996 г.

13. Комягин В.Б. «Программирование в Excel 5 и Excel 7 на языке Visual Basic» Москва, «Радио и связь» 1996 г.

14. Кузнецов М., Нифатов П. «Денежный поток и  торговые операции на рынке ГКО» журнал «Рынок ценных бумаг» №4 1996 г.

15. Мешкова Н. Кулакова Ю. «Прогнозирование тренда цены ГКО» журнал «Рынок ценных бумаг» №6 1996 г.

16. Михеев А. «Играем на заемные средства» журнал «Рынок ценных бумаг» №3 1997 г.

17. Остроушко О., Гришин О. «Доходность и дюрация портфеля ГКО» журнал «Рынок ценных бумаг» №5 1996г.

18. Положение об обслуживании и обращении выпусков РКО РТ(утверждено постановлением Кабинета Министров РТ от 21 апреля 1995 г. № 238)

19. «Потоки платежей,виды облигаций и вычисление доходности» Москва «Консультационное агентство «Соболев» 1996 г.

20. «Рынок ценных бумаг» учебник под ред. Галанова В.А., Басова А.И. Москва «Финансы и статистика» 1996 г.

21. Суменкова Е.В. «Операции с ценными бумагами» Москва «Перспектива» 1997 г.

22. Ушаков П. «О взаимосвязях индикаторов рынка ГКО» журнал «Рынок ценных бумаг» №3 1997 г.

23. Черкасов В.Е. «Практическое руководство по финансово-экономическим расчетам» Москва «Метаинформ» 1995 г.

24. Черновский А. «Как оценить эффективноть управления портфелем ГКО» журнал «Рынок ценных бумаг» №24 1996 г.

25. Четыркин Е. «Методы финансовых и коммерческих расчетов»

Приложения.


Приложение № 1. Программа автоматизации учета РКО.


Приложение 1.1. Руководство пользователя.


Данная программа написана на Microsoft Visual Basic for Excel. Для запуска программы необходимо открыть файл sprav.xls в Excel, после чего в линейке меню появится дополнительный пункт меню «Справочник», состоящий из следующих разделов:

Дата

Просмотр остатков

Печать

            Депозитарий

            Портфель

            Биржевая информация

            Отчеты клиентам

            Отчет недельный

            Отчет месячный

            Журнал лицевого учета

Окно

            Бумаги

            Сделки

            Клиенты

            Биржа

Рассмотрим подробнее каждое из пунктов меню.

Дата - изменение даты для работы.

Просмотр остатков - просмотр остатков по Клиентам.

Печать - распечатка на принтер следующих данных:

Депозитарий - печать депозитария.

Портфель - печать собственного портфеля Дилера.

Биржевая информация - печать биржевой информации.

Отчеты клиентам - печать отчетов Клиентам.

Отчет недельный - печать еженедельного отчета, предоставляемого в депозитарий.

Отчет месячный - печать ежемесячного отчета, предоставляемого в депозитарий.

Журнал лицевого учета - печать журнала лицевого учета и журнала оборотов Дилера.

Окно - выбор следующих окон для ввода информации:

Бумаги - выбор окна ввода информации об обращающихся на рынке бумагах.

Сделки - выбор окна ввода сделок.

Клиенты - выбор окна ввода Клиентов.

Биржа - выбор окна ввода биржевой информации.

Результатом работы программы являются Приложения №1.3-1.12

Приложение 1.2. Текст программы.


Option Explicit

Option Base 1

Public CurDate As Date

Public DepoArray() As Integer

Public BumArray(); BumArrayV() As Integer

Public Button; Просмотр; ExitVar; Покупка; Продажа; Погашение As Boolean

Const DilerConst = 1000900000

Const FilialConst = 1000999999

Const ConstMaxBum = 100 ' максимальное кол-во бумаг(выпусков)

Const MaxCount = 1000 ' максимальное кол-во сделок по 1-ой бумаге

Const S192 = "50202"

Const S904 = "47423"

Const S960 = "70102"

Const S970 = "70204"

Const SR970 = "70204"

Sub Auto_Open()

 ActiveWindow.WindowState = xlMaximized

 CurDate = Date

 Worksheets("Врем").Cells(1; 4) = CurDate

 Application.OnWindow = "CancelChanges"

 Application.Windows("Sprav.xls").OnWindow = "Start"

End Sub

Sub Auto_Close()

 MenuBars(xlModule).Reset

 MenuBars(xlWorksheet).Reset

 Application.OnWindow = ""

 Application.Windows("Sprav.xls").OnWindow = ""

 ActiveWorkbook.Save

End Sub

Sub Start()

 Call CreateMenu

 Application.DisplayFullScreen = False

 ActiveWindow.WindowState = xlMaximized

 CurDate = Date

 Worksheets("Врем").Cells(1; 4) = CurDate

End Sub

Sub CancelChanges()

 MenuBars(xlModule).Reset

 MenuBars(xlWorksheet).Reset

End Sub

Sub CreateMenu()

 MenuBars(xlModule).Reset

 MenuBars(xlWorksheet).Reset

 With MenuBars(xlModule).Menus.Add("&Справочник")

  .MenuItems.Add "&Дата"; "DateChange"

  .MenuItems.Add "П&росмотр остатков"; "PrintOst"

 

  .MenuItems.AddMenu ("&Печать")

  .MenuItems("&Печать").MenuItems.Add "&Депозитарий"; "PrintDepo"

  .MenuItems("&Печать").MenuItems.Add "&Портфель"; "PrintPortfel"

  .MenuItems("&Печать").MenuItems.Add "&Биржевая информация"; "PrintBirgaInfo"

  .MenuItems("&Печать").MenuItems.Add "Отчеты &клиентам"; "PrintOtchClient"

  .MenuItems("&Печать").MenuItems.Add "Отчет &недельный"; "PrintOtchWeek"

  .MenuItems("&Печать").MenuItems.Add "Отчет &месячный"; "PrintOtchMonth"

  .MenuItems("&Печать").MenuItems.Add "Журнал &лицевого учета"; "PrintMagazine"

 

  .MenuItems.AddMenu ("&Окно")

  .MenuItems("&Окно").MenuItems.Add "&Бумаги"; "ViewPaper"

  .MenuItems("&Окно").MenuItems.Add "&Сделки"; "ViewDeal"

  .MenuItems("&Окно").MenuItems.Add "&Клиенты"; "ViewClient"

  .MenuItems("&Окно").MenuItems.Add "Би&ржа"; "ViewBirga"

  .MenuItems("&Окно").MenuItems.Add "&Остатки 812"; "ViewOst812"

  .MenuItems("&Окно").MenuItems.Add "О&статки биржа"; "ViewOstBirga"

  .MenuItems("&Окно").MenuItems.Add "&Защита"; "ViewProgram"

 End With

 With MenuBars(xlWorksheet).Menus.Add("&Справочник")

  .MenuItems.Add "&Дата"; "DateChange"

 

  .MenuItems.Add "П&росмотр остатков"; "PrintOst"

 

  .MenuItems.AddMenu ("&Печать")

  .MenuItems("&Печать").MenuItems.Add "&Депозитарий"; "PrintDepo"

  .MenuItems("&Печать").MenuItems.Add "&Портфель"; "PrintPortfel"

  .MenuItems("&Печать").MenuItems.Add "&Биржевая информация"; "PrintBirgaInfo"

  .MenuItems("&Печать").MenuItems.Add "Отчеты &клиентам"; "PrintOtchClient"

  .MenuItems("&Печать").MenuItems.Add "Отчет &месячный"; "PrintOtchMonth"

  .MenuItems("&Печать").MenuItems.Add "Журнал &лицевого учета"; "PrintMagazine"

 

  .MenuItems.AddMenu ("&Окно")

  .MenuItems("&Окно").MenuItems.Add "&Бумаги"; "ViewPaper"

  .MenuItems("&Окно").MenuItems.Add "&Сделки"; "ViewDeal"

  .MenuItems("&Окно").MenuItems.Add "&Клиенты"; "ViewClient"

  .MenuItems("&Окно").MenuItems.Add "Би&ржа"; "ViewBirga"

  .MenuItems("&Окно").MenuItems.Add "&Остатки 812"; "ViewOst812"

  .MenuItems("&Окно").MenuItems.Add "О&статки биржа"; "ViewOstBirga"

  .MenuItems("&Окно").MenuItems.Add "&Защита"; "ViewProgram"

 End With

End Sub

Sub ViewPaper()

 Sheets("Бумаги").Select

 Call EndOf

End Sub

Sub ViewDeal()

 Sheets("Сделки").Select

 Call EndOf

End Sub

Sub ViewClient()

 Sheets("Клиенты").Select

 Call EndOf

End Sub

Sub ViewBirga()

 Sheets("Биржа").Select

 Call EndOf

End Sub

Sub ViewOst812()

 Sheets("Остатки812").Select

 Call EndOf

End Sub

Sub ViewOstBirga()

 Sheets("ОстаткиБиржа").Select

 Call EndOf

End Sub

Sub ViewProgram()

 Sheets("Защита").Select

End Sub

'------------------------------ Печать Депозитария ---------------

Sub PrintDepo()

 Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer

 Dim Flag As Boolean

 Dim Code As Long

 Dim Str As String

 Dim DepoFil() As Integer

 Dim Num As Integer

 CurDate = Worksheets("Врем").Cells(1; 4)

 Call FormBum

 Sheets("Депо").Select

 BumNum = Worksheets("Врем").Cells(1; 2)

 Cells(3; 5) = Worksheets("Врем").Cells(1; 4)

 Cells(3; 5).NumberFormat = "Д ММММ, ГГГГ"

 Cells(3; 5).HorizontalAlignment = xlCenterAcrossSelection

 Cells(3; 5).Font.Bold = True

 Num = 9

 For i = 1 To BumNum

  Cells(6; i + 1) = Worksheets("Врем").Cells(i; 1)

  Cells(6; i + 1).Font.Bold = True

  Cells(6; i + 1).Interior.ColorIndex = 40

  Cells(Num + 1; i + 1).Interior.ColorIndex = 15

  Cells(Num + 1; i + 1) = ""

  Cells(Num; i + 1).Interior.ColorIndex = 40

  Cells(Num; i + 1) = ""

  Cells(5; i + 1).Interior.ColorIndex = 40

 Next

 Cells(Num; 1).Interior.ColorIndex = 40

 Cells(Num; 1) = "Итого"

 Cells(Num; 1).Font.Bold = True

 Cells(Num; 1).Font.Italic = True

 Cells(Num; 1).HorizontalAlignment = xlCenter

 Cells(Num + 1; 1) = ""

 Cells(Num + 1; 1).Interior.ColorIndex = 15

 CliNum = Worksheets("Врем").Cells(1; 3)

 ReDim DepoArray(CliNum; BumNum)

 ReDim DepoFil(BumNum)

 a = 2

 While Worksheets("Сделки").Cells(a; 1) <> Empty

  i = 1

  While Worksheets("Клиенты").Cells(i + 1; 2) <> _

   Worksheets("Сделки").Cells(a; 2)

   If Worksheets("Клиенты").Cells(i + 1; 2) = Empty Then

    MsgBox "Неверный номер клиента в Окне 'Сделки' строка: " + CStr(a)

    Sheets("Сделки").Select

    Cells(a; 2).Select

    Exit Sub

   End If

   i = i + 1

  Wend

 

  k = 0

  For j = 1 To BumNum

   If Worksheets("Врем").Cells(j; 1) = Worksheets("Сделки").Cells(a; 3) Then

    k = j

    Exit For

   End If

  Next

  If k = 0 Then

   a = a + 1

   GoTo NNN

  End If

  If Not IsEmpty(Worksheets("Сделки").Cells(a; 4)) Then

   Sign = 1

  Else

   Sign = -1

  End If

  If CurDate >= Worksheets("Сделки").Cells(a; 1) Then

   If Worksheets("Сделки").Cells(a; 2) = FilialConst Then

    DepoFil(k) = DepoFil(k) + Sign * Worksheets("Сделки").Cells(a; 6)

   Else

    DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets("Сделки").Cells(a; 6)

   End If

  End If

  a = a + 1

NNN:

 Wend

 

 n = 7

 For i = 1 To CliNum

  Flag = False

  For k = 1 To BumNum

   If DepoArray(i; k) > 0 Then Flag = True

  Next

   If Flag Then

    Str = Format(Worksheets("Клиенты").Cells(i + 1; 2); "0000000000")

    Str = Right(Str; 5)

    Cells(n; 1).NumberFormat = "@"

    Cells(n; 1).Font.Bold = True

    Cells(n; 1).HorizontalAlignment = xlCenter

    Cells(n; 1).Font.Italic = False

    Cells(n; 1).Interior.ColorIndex = 2

    Cells(n; 1) = Str

    For k = 1 To BumNum

     If DepoArray(i; k) <> 0 Then

      Cells(n; k + 1) = DepoArray(i; k)

     Else

      Cells(n; k + 1) = ""

     End If

     Cells(n; k + 1).Font.Bold = False

     Cells(n; k + 1).Font.Italic = False

     Cells(n; k + 1).Interior.ColorIndex = 2

    Next

    If n = 7 Then

     n = n + 4

    Else

      n = n + 1

    End If

   End If

 Next

 'расчет по филиалу

 Cells(8; 1) = "Филиал"

 Cells(8; 1).Font.Bold = True

 Cells(8; 1).HorizontalAlignment = xlCenter

 Cells(8; 1).Font.Italic = False

 Cells(8; 1).Interior.ColorIndex = 2

 For k = 1 To BumNum

  If DepoFil(k) <> 0 Then

   Cells(8; k + 1) = DepoFil(k)

  Else

   Cells(8; k + 1) = ""

  End If

  Cells(8; k + 1).Font.Bold = False

  Cells(8; k + 1).Font.Italic = False

  Cells(8; k + 1).Interior.ColorIndex = 2

 Next

 

 For i = 1 To BumNum

  Cells(n; i + 1).Interior.ColorIndex = 40

  s = 0

  For k = 11 To n - 1

   s = s + Cells(k; i + 1)

  Next

  Cells(n; i + 1).Value = s

 Next

 For i = 1 To BumNum

  Cells(9; i + 1) = Cells(7; i + 1) + Cells(8; i + 1)

 Next

 Cells(n; 1).Interior.ColorIndex = 40

 Cells(n; 1) = "Итого 9998"

 Cells(n; 1).Font.Bold = True

 Cells(n; 1).Font.Italic = True

 Range("A1:Z200").Borders(xlLeft).LineStyle = xlNone

 Range("A1:Z200").Borders(xlRight).LineStyle = xlNone

 Range("A1:Z200").Borders(xlTop).LineStyle = xlNone

 Range("A1:Z200").Borders(xlBottom).LineStyle = xlNone

 Range("A1:Z200").BorderAround LineStyle:=xlNone

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight:=xlMedium

 Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift:=xlToLeft

 Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift:=xlToLeft

 If DialogPrint("Депо"; 1) Then Exit Sub

 Call EditOstBirga(DilerConst)

End Sub

'-------------------------------- Печать Отчеты клиентам -----------

Sub PrintOtchClient()

 Dim Sheet; Ost812 As Object

 Dim i; j; d; a; Col; m; MM; NN; MMM; k; b; q As Long

 Dim FlagBuy; FlagCell; FlagDeal; FlagDepo As Boolean

 Dim CliNum As Long

 Dim ComStr; StrComS As String

 Dim BumNum; z; z1; Index As Integer

 Dim s; sum; SumBuy; Ost; SumCom; ComBirga; ComDiler; ComSum As Double

 Dim Com As Double

 Dim OstIn; OstOut; OstBegin; OstEnd As Double

 Dim RowNum As Long

 Dim OstInDate; OstOutDate As String

 Dim DoFlag As Boolean

 Dim Auk As Boolean

 Set Sheet = Worksheets("Сделки")

 Sheet.Range("A2").Sort Key1:=Sheet.Range("A2"); Order1:=xlAscending; _

                        Key2:=Sheet.Range("B2"); Order2:=xlAscending; _

                        Key3:=Sheet.Range("D2"); Order3:=xlAscending; _

                        Header:=xlYes; OrderCustom:=1; _

                        MatchCase:=False; Orientation:=xlTopToBottom

 CurDate = Worksheets("Врем").Cells(1; 4)

 Worksheets("ОтчетыИнвесторам").Select

 i = 2

 FlagDeal = False

 FlagBuy = True

 FlagCell = True

 NN = 29 ' начало

 m = NN

 Range(Cells(NN - 1; 2); Cells(NN + 200; 6)).Delete shift:=xlToLeft

 Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).RowHeight = 28

 Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).WrapText = True

 Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).HorizontalAlignment = xlCenter

 Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).VerticalAlignment = xlBottom

 Cells(NN - 1; 2) = "№ выпуска"

 Cells(NN - 1; 3) = "Дата погашения"

 Cells(NN - 1; 4) = "Цена сделки"

 Cells(NN - 1; 5) = "Количество"

 Cells(NN - 1; 6) = "Сумма сделки"

 Cells(NN - 3; 3) = "Совершенные сделки на рынке РКО"

 Cells(NN - 3; 3).Font.Bold = True

 sum = 0

 SumBuy = 0

 SumCom = 0

 ComBirga = 0

 Call FormBum

 BumNum = Worksheets("Врем").Cells(1; 2)

 ReDim BumArray(BumNum)

 ReDim BumArrayV(BumNum)

 Index = CInt(InputBox("Введите номер 1-го ордера"))

 Do While Sheet.Cells(i; 1) <> Empty

  If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 2) <> DilerConst Then

   FlagDeal = True

   If FlagBuy And Sheet.Cells(i; 4) <> Empty Then

    Покупка = True

    CliNum = Sheet.Cells(i; 2)

    Cells(m; 2) = "Покупка"

    Cells(m; 2).HorizontalAlignment = xlLeft

    Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15

    m = m + 1

    MM = m

    FlagBuy = False

   End If

   If FlagCell And Sheet.Cells(i; 4) = Empty Then

    If Not FlagBuy Then

     s = 0

     Col = 0

     SumCom = 0

     ComBirga = 0

     For a = MM To m - 1

      Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10

      If Cells(a; 4) <> 100 Then

       SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10

       ComBirga = ComBirga + _

       CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets("Инфо").Cells(1; 2) + 0,001; "0,00"))

      Else

       Погашение = True

      End If

      Cells(a; 6).NumberFormat = "# ###"

      s = s + Cells(a; 6)

      Col = Col + Cells(a; 5)

     Next a

     sum = sum + s

     SumBuy = s

     Cells(m; 6) = s

     Cells(m; 6).NumberFormat = "# ###"

     Cells(m; 5) = Col

     Cells(m; 2) = "Итого"

     m = m + 1

    End If

    CliNum = Sheet.Cells(i; 2)

    Cells(m; 2) = "Продажа"

    Продажа = True

    Cells(m; 2).HorizontalAlignment = xlLeft

    Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15

    m = m + 1

    MM = m

    FlagCell = False

   End If

    Cells(m; 2) = Sheet.Cells(i; 3)

    q = 2

    While Worksheets("Бумаги").Cells(q; 1) <> Empty

     If Worksheets("Бумаги").Cells(q; 1) = Cells(m; 2) Then

      Cells(m; 3) = Worksheets("Бумаги").Cells(q; 3)

      Cells(m; 3).NumberFormat = "ДД.ММ.ГГ"

     End If

     q = q + 1

    Wend

    If Sheet.Cells(i; 4) <> Empty Then

     Cells(m; 4) = Sheet.Cells(i; 4)

    Else

     Cells(m; 4) = Sheet.Cells(i; 5)

    End If

    Cells(m; 4).NumberFormat = "0,00"

    Cells(m; 5) = Sheet.Cells(i; 6)

    m = m + 1

   If CliNum <> Sheet.Cells(i + 1; 2) Or Sheet.Cells(i + 1; 1) <> CurDate Then

     s = 0

     Col = 0

     For a = MM To m - 1

      Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10

      If Cells(a; 4) <> 100 Then

       SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10

       ComBirga = ComBirga + _

       CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets("Инфо").Cells(1; 2) + 0,001; "0,00"))

      Else

       Погашение = True

      End If

      

      Cells(a; 6).NumberFormat = "# ###,00"

      s = s + Cells(a; 6)

      Col = Col + Cells(a; 5)

     Next a

     sum = sum + s

     If FlagCell Then SumBuy = s

     Cells(m; 6) = s

     Cells(m; 6).NumberFormat = "# ###,00"

     Cells(m; 5) = Col

     Cells(m; 2) = "Итого"

     Cells(5; 4) = CliNum

     If CliNum = FilialConst Then Cells(5; 4) = DilerConst

     k = 2

     While Worksheets("Клиенты").Cells(k; 1) <> Empty

      If Worksheets("Клиенты").Cells(k; 2) = CliNum Then

       Cells(4; 4) = Worksheets("Клиенты").Cells(k; 1)

      End If

      k = k + 1

     Wend

    

     Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlLeft).Weight = xlThin

     Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlRight).Weight = xlThin

     Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlTop).Weight = xlThin

     Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlBottom).Weight = xlThin


     For b = 1 To BumNum

      BumArray(b) = 0

      BumArrayV(b) = 0

     Next

     b = 2

     While Worksheets("Сделки").Cells(b; 1) <> Empty

      If CurDate >= Worksheets("Сделки").Cells(b; 1) And _

        CliNum = Worksheets("Сделки").Cells(b; 2) Then

       z = 0

       For z1 = 1 To BumNum

        If Worksheets("Врем").Cells(z1; 1) = Worksheets("Сделки").Cells(b; 3) Then

          z = z1

        Exit For

        End If

       Next

       If z <> 0 Then

        If Not IsEmpty(Worksheets("Сделки").Cells(b; 4)) Then

         If CurDate > Worksheets("Сделки").Cells(b; 1) Then

          BumArrayV(z) = BumArrayV(z) + Worksheets("Сделки").Cells(b; 6)

         End If

         BumArray(z) = BumArray(z) + Worksheets("Сделки").Cells(b; 6)

        Else

         If CurDate > Worksheets("Сделки").Cells(b; 1) Then

          BumArrayV(z) = BumArrayV(z) - Worksheets("Сделки").Cells(b; 6)

         End If

         BumArray(z) = BumArray(z) - Worksheets("Сделки").Cells(b; 6)

        End If

       End If

      End If

      b = b + 1

     Wend

     ' M+4

     MMM = m + 5

     Rows(CStr(m + 1) + ":" + CStr(m + 200)).Delete

     FlagDepo = False

     For b = 1 To BumNum

      If BumArray(b) > 0 Or BumArrayV(b) > 0 Then

       FlagDepo = True

       Cells(MMM; 2) = Worksheets("Врем").Cells(b; 1)

       If BumArrayV(b) < BumArray(b) Then

        Cells(MMM; 4) = BumArray(b) - BumArrayV(b)

       Else

        If BumArrayV(b) > BumArray(b) Then

         Cells(MMM; 5) = BumArrayV(b) - BumArray(b)

        End If

       End If

       Cells(MMM; 3) = BumArrayV(b)

       Cells(MMM; 6) = BumArray(b)

       MMM = MMM + 1

      End If

     Next

     If FlagDepo Then

      Rows(CStr(m + 4) + ":" + CStr(m + 4)).RowHeight = 28

      Rows(CStr(m + 4) + ":" + CStr(m + 4)).WrapText = True

      Rows(CStr(m + 4) + ":" + CStr(m + 4)).HorizontalAlignment = xlCenter

      Rows(CStr(m + 4) + ":" + CStr(m + 4)).VerticalAlignment = xlBottom

      Cells(m + 4; 2) = "№ выпуска"

      Cells(m + 4; 3) = "Входящий остаток"

      Cells(m + 4; 4) = "Куплено"

      Cells(m + 4; 5) = "Продано/ Погашено"

      Cells(m + 4; 6) = "Исходящий остаток"

      Cells(m + 2; 3).Font.Bold = True

      Cells(m + 2; 3) = "Количество бумаг, принадлежащих Инвестору (штук)"

      Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlLeft).Weight = xlThin

      Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlRight).Weight = xlThin

      Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlTop).Weight = xlThin

      Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlBottom).Weight = xlThin

      Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).BorderAround Weight:=xlMedium

     End If

' ------------------------------------------------------

' - расчет остатков

 Set Ost812 = Worksheets("Остатки812")

 Ost812.Range("B2").Sort Key1:=Ost812.Range("B2"); Order1:=xlAscending; _

                         Key2:=Ost812.Range("A2"); Order2:=xlDescending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

 OstIn = 0

 OstOut = 0

 OstBegin = 0

 OstInDate = ""

 OstOutDate = ""

 RowNum = 0

 k = 2

 DoFlag = True

 Do While Ost812.Cells(k; 1) <> Empty

  If Ost812.Cells(k; 2) = CliNum And DoFlag Then

   If Ost812.Cells(k; 1) < CurDate Then

    OstBegin = Ost812.Cells(k; 8)

   Else

    Do While Ost812.Cells(k; 1) <> Empty

     If Ost812.Cells(k; 2) <> CliNum Then Exit Do

     If Ost812.Cells(k; 1) = CurDate Then

      OstBegin = Ost812.Cells(k; 3)

      OstIn = Ost812.Cells(k; 4)

      OstInDate = Ost812.Cells(k; 5)

      OstOut = Ost812.Cells(k; 6)

      OstOutDate = Ost812.Cells(k; 7)

      RowNum = k

      Exit Do

     End If

     k = k + 1

    Loop

   End If

   DoFlag = False

  End If

  k = k + 1

 Loop

 If RowNum = 0 Then RowNum = k

 k = RowNum

 

' - начало таблицы

     With DialogSheets("ДиалогКлиент")

      .Labels(8).Text = Cells(4; 4) ' Клиент

      .Labels(9).Text = sum ' Сумма сделки

      .Labels(10).Text = CurDate ' Дата текущая

      .Labels(17).Text = CliNum

      If CliNum = FilialConst Then .Labels(17).Text = DilerConst

      .EditBoxes(1).Text = "0" ' Сумма списания

      .EditBoxes(1).InputType = xlNumber

      .EditBoxes(2).Text = CurDate ' Дата сделки

      .EditBoxes(7).Text = OstOutDate ' списано (дата)

      .EditBoxes(8).Text = OstOut ' списано (сумма)

      .EditBoxes(8).InputType = xlNumber

      .EditBoxes(9).Text = OstInDate ' перечислено (дата)

      .EditBoxes(10).Text = OstIn ' перечислено (сумма)

      .EditBoxes(10).InputType = xlNumber

      Com = 0,00015

      Select Case SumCom

       Case Is < 36000

        Com = 0,005

       Case Is < 51000

        Com = 0,004

       Case Is < 101000

        Com = 0,003

       Case Is < 301000

        Com = 0,002

       Case Is < 501000

        Com = 0,001

       Case Is < 1001000

        Com = 0,0005

       Case Is < 3001000

        Com = 0,00025

      End Select

      If Cells(4; 4) = "Универсалбанк" Then Com = 0

      .EditBoxes(3).Text = Com ' Комиссия дилера

      .EditBoxes(3).InputType = xlNumber

      .EditBoxes(4).Text = "0" ' Сумма вознаграждения дилера

      .EditBoxes(4).InputType = xlNumber

      .EditBoxes(5).Text = "" ' Запись о вознаграждении

      .EditBoxes(6).Text = OstBegin ' Остаток на 812 счете клиента

      .EditBoxes(6).InputType = xlNumber

      Cells(MMM + 3; 1) = "Начальник инвестиционно-аналитического отдела_________________"

      Cells(MMM + 3; 6) = ""

     

Again:

      Просмотр = False

      ExitVar = False

      Button = False

      .Show

      If .EditBoxes(1).Text = "" Then .EditBoxes(1).Text = 0

      If .EditBoxes(3).Text = "" Then .EditBoxes(3).Text = 0

      If .EditBoxes(4).Text = "" Then .EditBoxes(4).Text = 0

      If .EditBoxes(6).Text = "" Then .EditBoxes(6).Text = 0

      If .EditBoxes(8).Text = "" Then .EditBoxes(8).Text = 0

      If .EditBoxes(10).Text = "" Then .EditBoxes(10).Text = 0

      Cells(21; 1) = .EditBoxes(5).Text ' Запись о вознаграждении

      Cells(21; 1).Font.Italic = True

      Cells(6; 4) = .EditBoxes(2).Text ' Дата сделки

     

' занесение данных в итоговую таблицу

      Cells(10; 6) = .EditBoxes(6).Text ' Входящий остаток

      OstBegin = .EditBoxes(6).Text

      Cells(14; 6) = SumBuy

      Cells(15; 6) = sum - SumBuy

      ComStr = Format(SumCom * .EditBoxes(3).Text; "0,00")

      ComDiler = CDbl(ComStr)

      Cells(16; 6) = ComBirga

      Cells(18; 6) = ComDiler

      Cells(20; 6) = .EditBoxes(4).Text

      Cells(11; 6) = .EditBoxes(8).Text

      OstOut = .EditBoxes(8).Text

      OstIn = .EditBoxes(10).Text

      Cells(12; 6) = .EditBoxes(10).Text

      Cells(13; 6) = .EditBoxes(6).Text - .EditBoxes(8).Text + .EditBoxes(10).Text

      Cells(11; 1) = "2.Списано на р/с / выдано наличными " + .EditBoxes(7).Text

      OstInDate = .EditBoxes(9).Text

      OstOutDate = .EditBoxes(7).Text

      Cells(12; 1) = "3.Перечислено на покупку " + .EditBoxes(9).Text

      Cells(22; 6) = 2 * SumBuy - sum + ComBirga + ComDiler

      Cells(23; 6) = .EditBoxes(1).Text

      Cells(24; 6) = .EditBoxes(6).Text - .EditBoxes(8).Text + .EditBoxes(10).Text - _

                      (2 * SumBuy - sum + ComBirga + ComDiler) - _

                      .EditBoxes(1).Text - .EditBoxes(4).Text

      OstEnd = Cells(24; 6)

                     

      Ost812.Cells(k; 1) = CurDate

      Ost812.Cells(k; 2) = CliNum

      Ost812.Cells(k; 3) = OstBegin

      Ost812.Cells(k; 4) = OstIn

      Ost812.Cells(k; 5) = OstInDate

      Ost812.Cells(k; 6) = OstOut

      Ost812.Cells(k; 7) = OstOutDate

      Ost812.Cells(k; 8) = OstEnd

      Ost812.Cells(k; 9) = Cells(14; 6) + Cells(15; 6)

      Ost812.Cells(k; 10) = Cells(16; 6)

      Ost812.Cells(k; 11) = Cells(18; 6)

      Call EditOstBirga(CliNum)

' конец занесения данных

     If Просмотр Then

      Worksheets("ОтчетыИнвесторам").PrintPreview

      GoTo Again

     End If

     If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2

     If ExitVar Then Exit Sub

     End With

' печать мемориальных ордеров

      Dim StrS As String

      Auk = False

      With DialogSheets("ДиалогОперация")

       .Show

       If .OptionButtons(1).Value = xlOn Then StrS = "Покупка"

       If .OptionButtons(2).Value = xlOn Then StrS = "Продажа"

       If .OptionButtons(3).Value = xlOn Then StrS = "Погашение"

       If .OptionButtons(4).Value = xlOn Then StrS = "Покупка / Продажа"

       If .OptionButtons(5).Value = xlOn Then StrS = "Покупка / Погашение"

       If .OptionButtons(5).Value = xlOn Then Auk = True

      End With

      Worksheets("Ордер").Select

      Dim Pos812 As Integer

      Dim Page; Page1 As Object

      Set Page = Worksheets("ОтчетыИнвесторам")

      Set Page1 = Worksheets("Клиенты")

      Pos812 = 2

     

      While (Page1.Cells(Pos812; 1) <> Empty) And (Worksheets("Клиенты").Cells(Pos812; 2) <> CliNum)

        Pos812 = Pos812 + 1

      Wend

     

      If Page.Cells(14; 6) - Page.Cells(15; 6) > 0 Then

       If MemoOrder(Index; Page.Cells(14; 6) - Page.Cells(15; 6); 6; 7; Pos812; _

          StrS + " РКО за " + CStr(CurDate)) Then Exit Sub

        Index = Index + 1

      Else

       If MemoOrder(Index; Page.Cells(15; 6) - Page.Cells(14; 6); 7; 6; Pos812; _

         StrS + " РКО за " + CStr(CurDate)) Then Exit Sub

       Index = Index + 1

      End If

     

      Dim SumS As Double

      SumS = Page.Cells(16; 6) + Page.Cells(18; 6) + Page.Cells(20; 6)

      If SumS > 0 Then

       StrS = ""

       If Page.Cells(18; 6) > 0 Then StrS = "Комиссия Дилера " + CStr(Page.Cells(18; 6)) + " в т.ч. НДС " + _

        CStr(Format(Page.Cells(18; 6) / 6; "0,00"))

       If Page.Cells(16; 6) > 0 And Not Auk Then StrS = StrS + " возмещение ком. ВКБ " + CStr(Page.Cells(16; 6)) + " в т.ч. НДС " + _

        CStr(Format(Page.Cells(16; 6) / 6; "0,00"))

        If CliNum = FilialConst Then

         If MemoOrder(Index; SumS; 6; 7; Pos812; StrS) Then Exit Sub

        Else

         If Auk Then

          StrS = StrS + " по приобретению на аукционе"

          If MemoOrder(Index; Page.Cells(18; 6) + Page.Cells(20; 6); 6; 12; Pos812; StrS) Then Exit Sub

          StrS = "Возмещение ком. ВКБ " + CStr(Page.Cells(16; 6)) + " в т.ч. НДС " + _

                  CStr(Format(Page.Cells(16; 6) / 6; "0,00"))

          Index = Index + 1

          If MemoOrder(Index; Page.Cells(16; 6); 6; 8; Pos812; StrS) Then Exit Sub

         Else

          If MemoOrder(Index; SumS; 6; 8; Pos812; StrS) Then Exit Sub

         End If

        End If

        Index = Index + 1

      End If

      If CliNum <> FilialConst Then

       If Len(StrComS) > 0 Then

        StrComS = StrComS + "," + CStr(Right(CliNum; 3))

       Else

        StrComS = StrComS + CStr(Right(CliNum; 3))

       End If

      End If

      If CliNum <> FilialConst Then ComSum = ComSum + Page.Cells(16; 6)

      Worksheets("ОтчетыИнвесторам").Select

'---------------

     Rows(CStr(m + 4) + ":" + CStr(m + 4)).RowHeight = 13,8

     Rows(CStr(m + 4) + ":" + CStr(m + 4)).WrapText = False

     Rows(CStr(m + 4) + ":" + CStr(m + 4)).HorizontalAlignment = xlRight

     Rows(CStr(m + 4) + ":" + CStr(m + 4)).VerticalAlignment = xlBottom

  

     Range(Cells(NN; 2); Cells(NN + 200; 6)).Delete shift:=xlToLeft

     m = NN

     FlagBuy = True

     FlagCell = True

     ComBirga = 0

     sum = 0

     SumBuy = 0

     SumCom = 0

    End If

   End If

   i = i + 1

 Loop

 If Not FlagDeal Then

  MsgBox "Сделок в текущий день не было"

 Else

  If ComSum > 0 Then

   Worksheets("Ордер").Select

   If MemoOrder(Index; ComSum; 9; 7; 2; _

    "Комиссия ВКБ по инвесторам " + StrComS + " в т.ч. НДС " + _

    CStr(Format(ComSum / 6; "0,00"))) Then Exit Sub

  End If

 End If

End Sub

'-------------------------------- Печать Отчеты недельные ----------

Sub PrintOtchWeek()

 Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer

 Dim Flag As Boolean

 Dim Code As Long

 Dim Str As String

 Dim DepoFil() As Integer

 Dim Num As Integer

 CurDate = Worksheets("Врем").Cells(1; 4)

 Call FormBum

 Sheets("ОтчетНедельный").Select

 BumNum = Worksheets("Врем").Cells(1; 2)

 Num = 8

 For i = 1 To BumNum

  Cells(6; i + 1) = Worksheets("Врем").Cells(i; 1)

  Cells(6; i + 1).Font.Bold = True

  Cells(6; i + 1).Interior.ColorIndex = 40

  Cells(Num; i + 1).Interior.ColorIndex = 15

  Cells(Num; i + 1) = ""

  Cells(5; i + 1).Interior.ColorIndex = 40

 Next

 Cells(Num; 1).Interior.ColorIndex = 15

 Cells(Num; 1) = ""

 Cells(5; 1).Interior.ColorIndex = 40

 Cells(5; 1) = ""

 Cells(6; 1).Interior.ColorIndex = 40

 Cells(6; 1).Font.Bold = True

 Cells(6; 1) = "№ бумаги"

 Cells(7; 1) = "Дилер"

 Cells(6; 1).HorizontalAlignment = xlCenter

 Cells(7; 1).HorizontalAlignment = xlCenter

 Cells(7; 1).Font.Bold = True

 CliNum = Worksheets("Врем").Cells(1; 3)

 ReDim DepoArray(CliNum; BumNum)

 a = 2

 While Worksheets("Сделки").Cells(a; 1) <> Empty

  i = 1

  While Worksheets("Клиенты").Cells(i + 1; 2) <> _

   Worksheets("Сделки").Cells(a; 2)

   If Worksheets("Клиенты").Cells(i + 1; 2) = Empty Then

    Exit Sub

   End If

   i = i + 1

  Wend

  k = 0

  For j = 1 To BumNum

   If Worksheets("Врем").Cells(j; 1) = Worksheets("Сделки").Cells(a; 3) Then

    k = j

    Exit For

   End If

  Next

  If k = 0 Then

   a = a + 1

   GoTo NNN

  End If

  If Not IsEmpty(Worksheets("Сделки").Cells(a; 4)) Then

   Sign = 1

  Else

   Sign = -1

  End If

  If CurDate >= Worksheets("Сделки").Cells(a; 1) Then

   DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets("Сделки").Cells(a; 6)

  End If

  a = a + 1

NNN:

 Wend

 For k = 1 To BumNum

  DepoArray(1; k) = DepoArray(1; k) + DepoArray(2; k)

  DepoArray(2; k) = 0

 Next k

 n = 7

 For i = 1 To CliNum

  Flag = False

  For k = 1 To BumNum

   If DepoArray(i; k) > 0 Then Flag = True

  Next

   If Flag Then

    If n > 7 Then

     Str = Format(Worksheets("Клиенты").Cells(i + 1; 2); "0000000000")

     Str = Right(Str; 5)

     Cells(n; 1).NumberFormat = "@"

     Cells(n; 1).Font.Bold = True

     Cells(n; 1).HorizontalAlignment = xlCenter

     Cells(n; 1).Font.Italic = False

     Cells(n; 1).Interior.ColorIndex = 2

     Cells(n; 1) = Str

    End If

    For k = 1 To BumNum

     If DepoArray(i; k) <> 0 Then

      Cells(n; k + 1) = DepoArray(i; k)

     Else

      Cells(n; k + 1) = ""

     End If

     Cells(n; k + 1).Font.Bold = False

     Cells(n; k + 1).Font.Italic = False

     Cells(n; k + 1).Interior.ColorIndex = 2

    Next

    If n = 7 Then

     n = n + 2

    Else

      n = n + 1

    End If

   End If

 Next

 

 For i = 1 To BumNum

  Cells(n; i + 1).Interior.ColorIndex = 40

  s = 0

  For k = 9 To n - 1

   s = s + Cells(k; i + 1)

  Next

  Cells(n; i + 1).Value = s

 Next

 Cells(n; 1).Interior.ColorIndex = 40

 Cells(n; 1) = "Итого по инвесторам"

 Cells(n; 1).Font.Bold = True

 Cells(n; 1).Font.Italic = True

 Range("A1:Z200").Borders(xlLeft).LineStyle = xlNone

 Range("A1:Z200").Borders(xlRight).LineStyle = xlNone

 Range("A1:Z200").Borders(xlTop).LineStyle = xlNone

 Range("A1:Z200").Borders(xlBottom).LineStyle = xlNone

 Range("A1:Z200").BorderAround LineStyle:=xlNone

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin

 Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight:=xlMedium

 Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift:=xlToLeft

 Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift:=xlToLeft

 Range("a2") = "на " + CStr(CurDate)

 

 Range(Cells(n + 2; 1); Cells(n + 3; BumNum + 1)).BorderAround Weight:=xlMedium

 Cells(n + 2; 1) = "Количество перечисленных облигаций на счета ""Депо"""

 Cells(n + 3; 1) = "без совершения сделок купли-продажи"

 Cells(n + 2; 1).Font.Bold = True

 Cells(n + 3; 1).Font.Bold = True

 Cells(n + 5; 1).Font.Size = 12

 Cells(n + 5; 1) = "Ответственное лицо Дилера " + _

 "                                              _________________________ "

 Cells(n + 3; BumNum + 1) = 0

 Cells(n + 3; BumNum + 1).Font.Bold = True

 If DialogPrint("ОтчетНедельный"; 2) Then Exit Sub

End Sub

'-------------------------------- Печать Отчеты Месячные -----------

Sub PrintOtchMonth()

 Dim DateBegin; DateEnd; DateMas() As Date

 Dim i; k; m; NumberClients; kk As Long

 Dim Sign; BumNum; Row; Col; Num; sum As Integer

 Dim DateFlag; Flag; CliInput(); BumInput() As Boolean

 Dim Bum(ConstMaxBum) As Long

 Dim mas() As Integer

 Dim Sheet As Object

 Dim Str As String

 With DialogSheets("ДиалогМесОтчет")

  .EditBoxes(1).InputType = xlDate

  .EditBoxes(2).InputType = xlDate

  .Show

  If Not Button Then Exit Sub

  If IsDate(.EditBoxes(1).Text) = False Or _

   IsDate(.EditBoxes(2).Text) = False Then

   MsgBox "Неверно введены даты"

   Exit Sub

  End If

  DateBegin = CDate(.EditBoxes(1).Text)

  DateEnd = CDate(.EditBoxes(2).Text)

  If DateBegin >= DateEnd Then

   MsgBox "Даты не пересекаются"

   Exit Sub

  End If

 End With

 Set Sheet = Worksheets("Бумаги")

 i = 2

 BumNum = 0

 While Sheet.Cells(i; 1) <> Empty

  If (Sheet.Cells(i; 2) < DateBegin And Sheet.Cells(i; 3) > DateBegin) Or _

     (Sheet.Cells(i; 2) < DateEnd And Sheet.Cells(i; 3) > DateEnd) Or _

     (Sheet.Cells(i; 2) > DateBegin And Sheet.Cells(i; 3) < DateEnd) Then

   Bum(BumNum + 1) = Sheet.Cells(i; 1)

   BumNum = BumNum + 1

  End If

  i = i + 1

 Wend

 Set Sheet = Worksheets("Клиенты")

 i = 2

 k = 0

 While Sheet.Cells(i; 1) <> Empty

  If Sheet.Cells(i; 2) > k And Sheet.Cells(i; 2) <> FilialConst Then

   k = Sheet.Cells(i; 2)

  End If

  i = i + 1

 Wend

 NumberClients = k - DilerConst

 DateFlag = True

 ReDim mas(NumberClients; BumNum * 7)

 ReDim DateMas(NumberClients; BumNum)

 ReDim CliInput(NumberClients)

 ReDim BumInput(BumNum)

 i = 2

 Worksheets("Сделки").Select

 While Cells(i; 1) <> Empty

  If Cells(i; 2) <> DilerConst And Cells(i; 2) <> FilialConst Then

   If Cells(i; 1) < DateBegin Then

    Flag = True

    For k = 1 To BumNum              ' поиск номера бумаги

     If Cells(i; 3) = Bum(k) Then

      Flag = False

      Exit For

     End If

    Next k

    If Flag Then GoTo cont

    Sign = 1

    If IsEmpty(Cells(i; 4)) Then Sign = -1

    mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 1) = _

     mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 1) + Sign * Cells(i; 6)

   End If

   If Cells(i; 1) >= DateBegin And DateFlag Then

    For k = 1 To NumberClients

     For m = 1 To BumNum

      mas(k; (m - 1) * 7 + 2) = mas(k; (m - 1) * 7 + 1)

     Next m

    Next k

    DateFlag = False

   End If

   If Cells(i; 1) >= DateBegin And Cells(i; 1) <= DateEnd Then

    Flag = True

    For k = 1 To BumNum

     If Cells(i; 3) = Bum(k) Then

      Flag = False

      Exit For

     End If

    Next k

    If Flag Then GoTo cont

    If Cells(i; 7) <> "списание" And Cells(i; 7) <> "зачисление" Then

     If Not IsEmpty(Cells(i; 4)) Then

      mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 3) = _

       mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 3) + Cells(i; 6)

     Else

      mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 4) = _

       mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 4) + Cells(i; 6)

     End If

     If DateMas(Cells(i; 2) - DilerConst; k) <> Cells(i; 1) Then

      DateMas(Cells(i; 2) - DilerConst; k) = Cells(i; 1)

      mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 5) = _

       mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 5) + 1

     End If

    End If

    If Cells(i; 7) = "списание" Then

      mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 6) = _

       mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 6) + Cells(i; 6)

    End If

    If Cells(i; 7) = "зачисление" Then

      mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 7) = _

       mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 7) + Cells(i; 6)

    End If

    Sign = 1

    If IsEmpty(Cells(i; 4)) Then Sign = -1

    mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 2) = _

     mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 2) + Sign * Cells(i; 6)

   End If

  End If

cont:

  i = i + 1

 Wend

 For i = 1 To NumberClients

  CliInput(i) = False

  For k = 1 To BumNum

   If mas(i; (k - 1) * 7 + 1) > 0 Or _

      mas(i; (k - 1) * 7 + 2) > 0 Or _

      mas(i; (k - 1) * 7 + 3) > 0 Or _

      mas(i; (k - 1) * 7 + 4) > 0 Or _

      mas(i; (k - 1) * 7 + 5) > 0 Or _

      mas(i; (k - 1) * 7 + 6) > 0 Or _

      mas(i; (k - 1) * 7 + 7) > 0 Then CliInput(i) = True

  Next k

 Next i

 For k = 1 To BumNum

  BumInput(k) = False

  For i = 1 To NumberClients

   If mas(i; (k - 1) * 7 + 1) > 0 Or _

      mas(i; (k - 1) * 7 + 2) > 0 Or _

      mas(i; (k - 1) * 7 + 3) > 0 Or _

      mas(i; (k - 1) * 7 + 4) > 0 Or _

      mas(i; (k - 1) * 7 + 5) > 0 Or _

      mas(i; (k - 1) * 7 + 6) > 0 Or _

      mas(i; (k - 1) * 7 + 7) > 0 Then BumInput(k) = True

  Next i

 Next k

 Worksheets("ОтчетМесячный").Select

 Range(Cells(7; 1); Cells(800; 22)).Delete shift:=xlToLeft

 Row = 4

 Col = 2

 Cells(2; 1) = "за период от " + CStr(DateBegin) + " до " + CStr(DateEnd)

 kk = 0

 Flag = False

 For k = 1 To BumNum

  If BumInput(k) Then

   Cells(Row; Col) = Bum(k)

   Num = 0

   For i = 1 To NumberClients

    If CliInput(i) Then

     If Col = 2 Then

      Str = Format(i; "0000000000")

      Str = Right(Str; 5)

      Cells(Row + Num + 3; Col - 1).NumberFormat = "@"

      Cells(Row + Num + 3; Col - 1).Font.Bold = True

      Cells(Row + Num + 3; Col - 1).HorizontalAlignment = xlCenter

      Cells(Row + Num + 3; Col - 1).Font.Italic = False

      Cells(Row + Num + 3; Col - 1).Interior.ColorIndex = 2

      Cells(Row + Num + 3; Col - 1) = Str

     End If

     Cells(Row + Num + 3; Col) = mas(i; (k - 1) * 7 + 1)

     Cells(Row + Num + 3; Col + 1) = mas(i; (k - 1) * 7 + 2)

     Cells(Row + Num + 3; Col + 2) = mas(i; (k - 1) * 7 + 3)

     Cells(Row + Num + 3; Col + 3) = mas(i; (k - 1) * 7 + 4)

     Cells(Row + Num + 3; Col + 4) = mas(i; (k - 1) * 7 + 5)

     Cells(Row + Num + 3; Col + 5) = mas(i; (k - 1) * 7 + 6)

     Cells(Row + Num + 3; Col + 6) = mas(i; (k - 1) * 7 + 7)

     Num = Num + 1

    End If

   Next i

   Col = Col + 7

   kk = kk + 1

   Flag = True

  End If

  If ((kk > 0) And (kk Mod 3 = 0) And Flag) Or k = BumNum Then

   Flag = False

   For i = 2 To 22

    sum = 0

    For m = 1 To NumberClients

     sum = sum + Cells(m + 6; i)

    Next m

    Cells(Num + 7; i) = sum

    Cells(Num + 7; i).Font.Bold = True

    Cells(Num + 7; i).Interior.ColorIndex = 15

   Next i

   Cells(Num + 7; 1) = "Итого"

   Cells(Num + 7; 1).Font.Bold = True

   Cells(Num + 7; 1).HorizontalAlignment = xlCenter

   Cells(Num + 7; 1).Interior.ColorIndex = 15

   Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlLeft).Weight = xlThin

   Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlRight).Weight = xlThin

   Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlTop).Weight = xlThin

   Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlBottom).Weight = xlThin

   Range(Cells(7; 1); Cells(Num + 7; 22)).BorderAround Weight:=xlMedium

   Range(Cells(7; 9); Cells(Num + 7; 15)).BorderAround Weight:=xlMedium

   Cells(Num + 10; 10) = "Ответственное лицо Дилера______________________________"

   If DialogPrint("ОтчетМесячный"; 2) Then Exit Sub

   

   Row = 4

   Col = 2

   Cells(Row; Col) = " "

   Cells(Row; Col + 7) = " "

   Cells(Row; Col + 14) = " "

   Range(Cells(7; 1); Cells(800; 22)).Delete shift:=xlToLeft

  End If

 Next k

 Worksheets("СписокКлиентов").Select

 Num = 5

 Range(Cells(Num; 1); Cells(100; 3)).Delete shift:=xlToLeft

 For i = 1 To NumberClients

  If CliInput(i) Then

   k = 2

   While Sheet.Cells(k; 2) <> DilerConst + i

    k = k + 1

   Wend

   Cells(Num; 1) = Sheet.Cells(k; 1)

   Cells(Num; 2) = Sheet.Cells(k; 2)

   Cells(Num; 3) = Sheet.Cells(k; 3)

   Cells(Num; 1).HorizontalAlignment = xlLeft

   Cells(Num; 2).HorizontalAlignment = xlCenter

   Cells(Num; 3).HorizontalAlignment = xlCenter

   Cells(Num; 3).WrapText = True

   Num = Num + 1

  End If

 Next i

 Cells(2; 1) = "за период от " + CStr(DateBegin) + " до " + CStr(DateEnd)

 Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlLeft).Weight = xlThin

 Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlRight).Weight = xlThin

 Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlTop).Weight = xlThin

 Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlBottom).Weight = xlThin

 Range(Cells(5; 1); Cells(Num - 1; 3)).BorderAround Weight:=xlMedium

 Range(Cells(5; 2); Cells(Num - 1; 2)).BorderAround Weight:=xlMedium

 Cells(Num + 2; 2) = "Ответственное лицо Дилера______________________________"

 With DialogSheets("ДиалогПечать")

AgainMonthOtch1:

    Просмотр = False

    ExitVar = False

    Button = False

    .Show

    If Просмотр Then

     GoTo AgainMonthOtch1

    End If

    If ExitVar Then Exit Sub

    If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2

 End With

End Sub

'-------------------------------- Перечисление/списание биржа ------

Sub GotoBirga()

 Dim Sheet As Object

 Dim OstIn; OstOut; OstBegin; CliNum As Double

 Dim RowNum; k As Long

 Dim DoFlag As Boolean

 Set Sheet = Worksheets("ОстаткиБиржа")

 Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _

                         Key2:=Sheet.Range("A2"); Order2:=xlDescending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

 Sheet.Select

 CurDate = Worksheets("Врем").Cells(1; 4)

 k = 2

 While Worksheets("Клиенты").Cells(k; 1) <> Empty

  k = k + 1

 Wend

 

 With DialogSheets("ДиалогБиржа")

  .DropDowns.ListFillRange = "Клиенты!$B$2:$B$" + CStr(k - 1)

  .EditBoxes(1).InputType = xlNumber

  .EditBoxes(2).InputType = xlNumber

  .Show

  If Button = False Then

   MsgBox "Данные не занесены"

   Exit Sub

  End If

  CliNum = .DropDowns(1).List(.DropDowns(1).ListIndex)

  If .EditBoxes(1).Text = "" Then

   OstIn = 0

  Else

   OstIn = .EditBoxes(1).Text

  End If

 

  If .EditBoxes(2).Text = "" Then

   OstOut = 0

  Else

   OstOut = .EditBoxes(2).Text

  End If

  OstBegin = 0

  k = 2

  DoFlag = True

  Do While Cells(k; 1) <> Empty

   If Cells(k; 2) = CliNum And DoFlag Then

    If Cells(k; 1) < CurDate Then

     OstBegin = Cells(k; 6)

    Else

     MsgBox "Невозможен ввод информации"

     Exit Sub

    End If

    DoFlag = False

   End If

   k = k + 1

  Loop

  Cells(k; 1) = CurDate

  Cells(k; 2) = CliNum

  Cells(k; 3) = OstBegin

  Cells(k; 4) = OstIn

  Cells(k; 5) = OstOut

  Cells(k; 6) = OstBegin + OstIn - OstOut

 End With

End Sub

'-------------------------------- Просмотр остатков 812 ------------

Sub PrintOst()

 Dim Sheet; Sheet1 As Object

 Dim i; k; CliNum As Long

 Dim Ost As Double

 CurDate = Worksheets("Врем").Cells(1; 4)

 i = 2

 While Worksheets("Сделки").Cells(i; 1) <> Empty

  If Worksheets("Сделки").Cells(i; 1) = CurDate Then

   Call EditOstBirga(Worksheets("Сделки").Cells(i; 2))

  End If

  i = i + 1

 Wend

 Set Sheet = Worksheets("Остатки812")

 Set Sheet1 = Worksheets("ОстаткиБиржа")

 Sheets("Клиенты").Select

 i = 2

 Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _

                         Key2:=Sheet.Range("A2"); Order2:=xlDescending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

 Sheet1.Range("B2").Sort Key1:=Sheet1.Range("B2"); Order1:=xlAscending; _

                         Key2:=Sheet1.Range("A2"); Order2:=xlDescending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

 While Cells(i; 2) <> Empty

  CliNum = Cells(i; 2)

  k = 2

  Do

   If Sheet.Cells(k; 1) = Empty Then

    Ost = 0

    Exit Do

   End If

   If Sheet.Cells(k; 2) = CliNum Then

    Ost = Sheet.Cells(k; 8)

    Exit Do

   End If

   k = k + 1

  Loop

  Cells(i; 4) = Ost

  k = 2

  Do

   If Sheet1.Cells(k; 1) = Empty Then

    Ost = 0

    Exit Do

   End If

   If Sheet1.Cells(k; 2) = CliNum Then

    Ost = Sheet1.Cells(k; 6)

    Exit Do

   End If

   k = k + 1

  Loop

  Cells(i; 5) = Ost

  i = i + 1

 Wend

End Sub

'-------------------------------- Печать портфель ------------------

Sub PrintPortfel()

 Dim Sheet As Object

 Dim i; k; BumNum; m As Long

 Dim Bum(ConstMaxBum); DatePog(ConstMaxBum) As Long

 Dim Volume(); BiginIndex(); dates(); V() As Integer

 Dim Price(); BumPrice(); DohPog(); DohPriobr() As Double

 Dim DateMas() As Date

 Dim Flag; BumIndex() As Boolean

 Dim SumPog1(); SumPog2(); SumPriobr1(); SumPriobr2() As Double

 Dim SumPog11; SumPriobr11; SumPog22; SumPriobr22 As Double

 Dim BumVol() As Integer

 Dim AllVol As Long

 Dim PortfelCost; PortfelBalance As Double

 

 CurDate = Worksheets("Врем").Cells(1; 4)

 Set Sheet = Worksheets("Бумаги")

 i = 2

 BumNum = 0

 While Sheet.Cells(i; 1) <> Empty

  If (Sheet.Cells(i; 2) <= CurDate And Sheet.Cells(i; 3) > CurDate) Then

   Bum(BumNum + 1) = Sheet.Cells(i; 1)

   DatePog(BumNum + 1) = Sheet.Cells(i; 3)

   BumNum = BumNum + 1

  End If

  i = i + 1

 Wend

 Worksheets("Сделки").Select

 Range("B2").Sort Key1:=Range("A2"); Order1:=xlAscending; _

                         Key2:=Range("D2"); Order2:=xlAscending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

 ReDim Volume(BumNum; MaxCount)

 ReDim Price(BumNum; MaxCount)

 ReDim DateMas(BumNum; MaxCount)

 ReDim DohPog(BumNum; MaxCount)

 ReDim DohPriobr(BumNum; MaxCount)

 ReDim dates(BumNum); V(BumNum); BeginIndex(BumNum)

 ReDim BumIndex(BumNum); BumPrice(BumNum)

 ReDim SumPog1(BumNum); SumPog2(BumNum); SumPriobr1(BumNum); SumPriobr2(BumNum)

 ReDim BumVol(BumNum)

 For i = 1 To BumNum

  dates(i) = 1

 Next i

 

 i = 2

 While Cells(i; 1) <> Empty

  If Cells(i; 2) = DilerConst And Cells(i; 7) <> "списание" _

   And Cells(i; 7) <> "зачисление" Then

   Flag = True

   For k = 1 To BumNum              ' поиск номера бумаги

    If Cells(i; 3) = Bum(k) Then

     Flag = False

     Exit For

    End If

   Next k

   If Flag Then GoTo cont

   If Cells(i; 1) <= CurDate Then

    If Not IsEmpty(Cells(i; 4)) Then

     Volume(k; dates(k)) = Cells(i; 6)

     Price(k; dates(k)) = Cells(i; 4)

     DateMas(k; dates(k)) = Cells(i; 1)

     dates(k) = dates(k) + 1

     V(k) = V(k) + Cells(i; 6)

    Else

     V(k) = V(k) - Cells(i; 6)

    End If

   End If

  End If

cont:

  i = i + 1

 Wend

 For k = 1 To BumNum

  For i = dates(k) To 1 Step -1

   If V(k) > Volume(k; i) Then

    V(k) = V(k) - Volume(k; i)

   Else

    Volume(k; i) = V(k)

    BeginIndex(k) = i

    Exit For

   End If

  Next i

 Next k

 

 For k = 1 To BumNum

  BumIndex(k) = False

  If V(k) > 0 Then BumIndex(k) = True

 Next k

 

 i = 2

 While Cells(i; 1) <= CurDate And Cells(i; 1) <> Empty

  If (Cells(i; 1) = CurDate And Cells(i; 2) = DilerConst) _

   And (Cells(i; 7) <> "зачисление" And Cells(i; 7) <> "списание") Then

   For k = 1 To BumNum

    If Cells(i; 3) = Bum(k) Then

     BumIndex(k) = True

    End If

   Next k

  End If

  i = i + 1

 Wend

 i = 2

 Set Sheet = Worksheets("Биржа")

 Flag = True

 While Sheet.Cells(i; 1) <> Empty

  If Sheet.Cells(i; 1) = CurDate Then

   Flag = False

   For k = 1 To BumNum

    If Sheet.Cells(i; 2) = Bum(k) Then

     If Sheet.Cells(i; 6) > 0 Then

      BumPrice(k) = Sheet.Cells(i; 6)

     Else

      BumPrice(k) = 0

     End If

    End If

   Next k

  End If

  i = i + 1

 Wend

 

 If Flag Then

  MsgBox "Биржевой информации нет. Портфель сформировать невозможно."

  Exit Sub

 End If

 

 Worksheets("Портфель1").Select

 Cells(4; 3) = CurDate

 Range("A7:H200").Delete shift:=xlToLeft

 m = 7

 PortfelCost = 0

 PortfelBalance = 0

 For k = 1 To BumNum

  If Volume(k; BeginIndex(k)) > 0 Then

   For i = BeginIndex(k) To dates(k)

    If Volume(k; i) > 0 Then

     Cells(m; 1) = Bum(k)

     Cells(m; 1).NumberFormat = "0"

     Cells(m; 2) = DateMas(k; i)

     Cells(m; 2).NumberFormat = "ДД.ММ.ГГ"

     Cells(m; 3) = Price(k; i)

     Cells(m; 3).NumberFormat = "0,00"

     Cells(m; 4) = Volume(k; i)

     Cells(m; 4).NumberFormat = "0"

     DohPog(k; i) = (100 / Price(k; i) - 1) * 36500 / (DatePog(k) - DateMas(k; i))

     Cells(m; 5) = DohPog(k; i)

    

     Cells(m; 5).NumberFormat = "0,00"

     Cells(m; 8).NumberFormat = "0"

     Dim tmp As Long

     tmp = CurDate - DateMas(k; i)

     Cells(m; 8) = tmp

     PortfelBalance = PortfelBalance + Price(k; i) * Volume(k; i)

     If BumPrice(k) > 0 Then

      PortfelCost = PortfelCost + BumPrice(k) * Volume(k; i)

     Else

      PortfelCost = PortfelCost + Price(k; i) * Volume(k; i)

     End If

     If BumPrice(k) > 0 Then

      Cells(m; 6) = BumPrice(k)

      Cells(m; 6).NumberFormat = "0,00"

      If CurDate <> DateMas(k; i) Then

       DohPriobr(k; i) = (BumPrice(k) / Price(k; i) - 1) * 36500 / (CurDate - DateMas(k; i))

       Cells(m; 7) = DohPriobr(k; i)

       Cells(m; 7).NumberFormat = "0,00"

      End If

     End If

     m = m + 1

    End If

   Next i

   Range(Cells(m; 1); Cells(m; 8)).Interior.ColorIndex = 15

   m = m + 1

  End If

 Next k

 

 Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlLeft).Weight = xlThin

 Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlRight).Weight = xlThin

 Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlTop).Weight = xlThin

 Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlBottom).Weight = xlThin

 Range(Cells(7; 1); Cells(m - 1; 8)).BorderAround Weight:=xlMedium

 

 If DialogPrint("Портфель1"; 1) Then Exit Sub

 

 Worksheets("Портфель2").Select

 Cells(4; 3) = CurDate

 SumPog11 = 0

 SumPog22 = 0

 SumPriobr11 = 0

 SumPriobr22 = 0

 AllVol = 0

 m = 7

 Range("A7:H200").Delete shift:=xlToLeft

 For k = 1 To BumNum

  If Volume(k; BeginIndex(k)) > 0 Then

   SumPog1(k) = 0

   SumPog2(k) = 0

   SumPriobr1(k) = 0

   SumPriobr2(k) = 0

   BumVol(k) = 0

   For i = BeginIndex(k) To dates(k)

    If Volume(k; i) > 0 Then

     SumPog1(k) = SumPog1(k) + DohPog(k; i) * Volume(k; i) * (DatePog(k) - DateMas(k; i))

     SumPog2(k) = SumPog2(k) + Volume(k; i) * (DatePog(k) - DateMas(k; i))

     If CurDate <> DateMas(k; i) Then

      SumPriobr1(k) = SumPriobr1(k) + DohPriobr(k; i) * Volume(k; i) * (CurDate - DateMas(k; i))

      SumPriobr2(k) = SumPriobr2(k) + Volume(k; i) * (CurDate - DateMas(k; i))

     End If

     SumPog11 = SumPog11 + SumPog1(k)

     SumPog22 = SumPog22 + SumPog2(k)

     SumPriobr11 = SumPriobr11 + SumPriobr1(k)

     SumPriobr22 = SumPriobr22 + SumPriobr2(k)

     BumVol(k) = BumVol(k) + Volume(k; i)

     AllVol = AllVol + Volume(k; i)

    End If

   Next i

   Cells(m; 1) = Bum(k)

   Cells(m; 1).NumberFormat = "0"

   Cells(m; 2) = BumVol(k)

   Cells(m; 2).NumberFormat = "0"

   Cells(m; 3) = SumPog1(k) / SumPog2(k)

   Cells(m; 3).NumberFormat = "0,00"

   If SumPriobr2(k) > 0 And SumPriobr1(k) > 0 Then

    Cells(m; 4) = SumPriobr1(k) / SumPriobr2(k)

    Cells(m; 4).NumberFormat = "0,00"

   End If

   m = m + 1

  End If

 Cells(m; 1) = "Итого"

 Cells(m; 1).Font.Bold = True

 Cells(m; 1).HorizontalAlignment = xlCenter

 Cells(m; 2) = AllVol

 Cells(m; 2).NumberFormat = "0"

 Cells(m; 3) = SumPog11 / SumPog22

 Cells(m; 3).NumberFormat = "0,00"

 Cells(m; 4) = SumPriobr11 / SumPriobr22

 Cells(m; 4).NumberFormat = "0,00"

 Range(Cells(m; 1); Cells(m; 4)).Interior.ColorIndex = 15

 Range(Cells(7; 1); Cells(m; 4)).Borders(xlLeft).Weight = xlThin

 Range(Cells(7; 1); Cells(m; 4)).Borders(xlRight).Weight = xlThin

 Range(Cells(7; 1); Cells(m; 4)).Borders(xlTop).Weight = xlThin

 Range(Cells(7; 1); Cells(m; 4)).Borders(xlBottom).Weight = xlThin

 Range(Cells(7; 1); Cells(m; 4)).BorderAround Weight:=xlMedium

 Range(Cells(m; 1); Cells(m; 4)).BorderAround Weight:=xlMedium

 Cells(m + 1; 1) = "Стоимость портфеля по балансу"

 Cells(m + 2; 1) = "Текущая стоимость потфеля"

 Cells(m + 1; 1).Font.Bold = True

 Cells(m + 2; 1).Font.Bold = True

 Range(Cells(m + 1; 1); Cells(m + 2; 4)).BorderAround Weight:=xlMedium

 Cells(m + 1; 4) = PortfelBalance * 10

 Cells(m + 1; 4).NumberFormat = "### ### ###,00"

 Cells(m + 1; 4).Font.Bold = True

 Cells(m + 2; 4) = PortfelCost * 10

 Cells(m + 2; 4).NumberFormat = "### ### ###,00"

 Cells(m + 2; 4).Font.Bold = True

 If DialogPrint("Портфель2"; 1) Then Exit Sub

End Sub

'-------------------------------- Печать Журнала лицевого учета ---------

Sub PrintMagazine()

 Dim Sheet As Object

 Dim i; k; BumNum; m; m1; j As Long

 Dim Bum(ConstMaxBum) As Long

 Dim Volume(); BiginIndex(); dates(); V(); Vol As Integer

 Dim sum; Price() As Double

 Dim DateMas() As Date

 Dim Flag; BumIndex() As Boolean

 Dim ComBirga; ComMas(); MagMas(); Mag(4) As Double

 CurDate = Worksheets("Врем").Cells(1; 4)

 i = 2

 Flag = True

 Do While Worksheets("Сделки").Cells(i; 1) <> Empty

  If Worksheets("Сделки").Cells(i; 1) = CurDate And _

     Worksheets("Сделки").Cells(i; 2) = DilerConst Then

   Flag = False

   Exit Do

  End If

  i = i + 1

 Loop

 If Flag Then

  MsgBox "Сделок в текущий день не было"

  Exit Sub

 End If

 

 Set Sheet = Worksheets("Бумаги")

 i = 2

 BumNum = 0

 While Sheet.Cells(i; 1) <> Empty

  If (Sheet.Cells(i; 2) <= CurDate And Sheet.Cells(i; 3) >= CurDate) Then

   Bum(BumNum + 1) = Sheet.Cells(i; 1)

   BumNum = BumNum + 1

  End If

  i = i + 1

 Wend

 Worksheets("Сделки").Select

 Range("B2").Sort Key1:=Range("A2"); Order1:=xlAscending; _

                         Key2:=Range("D2"); Order2:=xlAscending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

 ReDim Volume(BumNum; MaxCount)

 ReDim Price(BumNum; MaxCount)

 ReDim DateMas(BumNum; MaxCount)

 ReDim dates(BumNum); V(BumNum); BeginIndex(BumNum)

 ReDim BumIndex(BumNum); ComMas(BumNum)

 ReDim MagMas(BumNum; 4)

 For i = 1 To BumNum

  ComMas(i) = 0

  dates(i) = 1

 Next i

 i = 2

 While Cells(i; 1) <> Empty And CurDate > Cells(i; 1)

  If Cells(i; 2) = DilerConst And Cells(i; 7) <> "списание" _

   And Cells(i; 7) <> "зачисление" Then

   Flag = True

   For k = 1 To BumNum              ' поиск номера бумаги

    If Cells(i; 3) = Bum(k) Then

     Flag = False

     Exit For

    End If

   Next k

   If Flag Then GoTo cont

   If Not IsEmpty(Cells(i; 4)) Then

    Volume(k; dates(k)) = Cells(i; 6)

    Price(k; dates(k)) = Cells(i; 4)

    DateMas(k; dates(k)) = Cells(i; 1)

    dates(k) = dates(k) + 1

    V(k) = V(k) + Cells(i; 6)

   Else

    V(k) = V(k) - Cells(i; 6)

   End If

  End If

cont:

  i = i + 1

 Wend

 For k = 1 To BumNum

  For i = dates(k) To 1 Step -1

   If V(k) > Volume(k; i) Then

    V(k) = V(k) - Volume(k; i)

   Else

    Volume(k; i) = V(k)

    BeginIndex(k) = i

    Exit For

   End If

  Next i

 Next k

 

 For k = 1 To BumNum

  BumIndex(k) = False

  If V(k) > 0 Then BumIndex(k) = True

 Next k

 

 ComBirga = Worksheets("Инфо").Cells(1; 2)

 i = 2

 While Cells(i; 1) <> Empty

  If (Cells(i; 1) = CurDate And Cells(i; 2) = DilerConst) _

   And (Cells(i; 7) <> "зачисление" And Cells(i; 7) <> "списание") Then

   For k = 1 To BumNum

    If Cells(i; 3) = Bum(k) Then

     BumIndex(k) = True

     If Not IsEmpty(Cells(i; 4)) Then

      ComMas(k) = ComMas(k) + Format(Cells(i; 4) * Cells(i; 6) * ComBirga * 0,1 + 0,0001; "0,00")

     Else

      If Cells(i; 5) <> 100 Then

       ComMas(k) = ComMas(k) + Format(Cells(i; 5) * Cells(i; 6) * ComBirga * 0,1 + 0,0001; "0,00")

      End If

     End If

    End If

   Next k

  End If

  i = i + 1

 Wend

 

 Set Sheet = Worksheets("Сделки")

 Worksheets("Журнал лицевого учета").Select

 Cells(5; 1) = CurDate

 Cells(49; 2) = ComBirga

 Покупка = False

 Продажа = False

 Vol = 0

 sum = 0

 For k = 1 To BumNum

  If BumIndex(k) Then

   m = 7

   Range("A7:C43").ClearContents

   Range("E7:G43").ClearContents

   Vol = 0

   sum = 0

   For i = BeginIndex(k) To dates(k)

    If Volume(k; i) > 0 Then

     Cells(m; 1) = DateMas(k; i)

     Cells(m; 2) = Volume(k; i)

     Cells(m; 3) = Format(Price(k; i); "0,00")

     Vol = Vol + Volume(k; i)

     sum = sum + Format(Price(k; i); "0,00") * Volume(k; i) * 10

     m = m + 1

    End If

   Next i

   Cells(6; 2) = Vol

   Cells(6; 4) = sum

   Cells(49; 3) = ComMas(k)

   Cells(5; 3) = CStr(Bum(k)) + "MFTS"

   i = 2

   m1 = 7

   j = BeginIndex(k)

   While Sheet.Cells(i; 1) <> Empty

    If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 3) = Bum(k) And _

     Sheet.Cells(i; 7) <> "зачисление" And Sheet.Cells(i; 7) <> "списание" And _

     Sheet.Cells(i; 2) = DilerConst Then

     If Not IsEmpty(Sheet.Cells(i; 4)) Then

      Покупка = True

      Cells(m; 1) = Sheet.Cells(i; 1)

      Cells(m; 2) = Sheet.Cells(i; 6)

      Cells(m; 3) = Sheet.Cells(i; 4)

      Volume(k; dates(k)) = Sheet.Cells(i; 6)

      Price(k; dates(k)) = Sheet.Cells(i; 4)

      DateMas(k; dates(k)) = Sheet.Cells(i; 4)

      dates(k) = dates(k) + 1

      m = m + 1

     Else

      Продажа = True

      Vol = Sheet.Cells(i; 6)

      If Vol < Volume(k; j) Then

       Cells(m1; 5) = Vol

       Cells(m1; 6) = Format(Price(k; j); "0,00")

       Cells(m1; 7) = Sheet.Cells(i; 5)

       Volume(k; j) = Volume(k; j) - Sheet.Cells(i; 6)

       m1 = m1 + 1

      Else

       If Volume(k; j) = 0 Then j = j + 1

       While Vol > Volume(k; j) And Volume(k; j) <> Empty

        Cells(m1; 5) = Volume(k; j)

        Cells(m1; 6) = Format(Price(k; j); "0,00")

        Cells(m1; 7) = Sheet.Cells(i; 5)

        Vol = Vol - Volume(k; j)

        j = j + 1

        m1 = m1 + 1

       Wend

       If Volume(k; j) <> Empty Then

        Cells(m1; 5) = Vol

        Cells(m1; 6) = Format(Price(k; j); "0,00")

        Cells(m1; 7) = Sheet.Cells(i; 5)

        Volume(k; j) = Volume(k; j) - Vol

        m1 = m1 + 1

       End If

      End If

     End If

    End If

    i = i + 1

   Wend

no_do:

   MagMas(k; 1) = Format(Cells(46; 3); "0,00")

   MagMas(k; 2) = Format(Cells(47; 3); "0,00")

   MagMas(k; 3) = Format(Cells(48; 3); "0,00")

   MagMas(k; 4) = Format(Cells(45; 4); "0,00")

   If DialogPrint("Журнал лицевого учета"; 1) Then Exit Sub

  End If

 Next k

 

' Формирование журнала оборотов

 Worksheets("ЖурналОборотов").Select

 Cells(6; 1) = CurDate

 Range(Cells(7; 1); Cells(100; 6)).Delete shift:=xlToLeft

 m = 7

 For k = 1 To BumNum

  If BumIndex(k) Then

   Cells(m; 1) = CStr(Bum(k)) + "MFTS"

   Cells(m; 2) = MagMas(k; 1)

   Cells(m; 3) = MagMas(k; 2)

   Cells(m; 4) = MagMas(k; 3)

   Cells(m; 5) = MagMas(k; 4)

   Cells(m; 6) = ComMas(k)

   Cells(m; 1).Font.Bold = True

   Cells(m; 2).NumberFormat = "0,00"

   Cells(m; 3).NumberFormat = "0,00"

   Cells(m; 4).NumberFormat = "0,00"

   Cells(m; 5).NumberFormat = "0,00"

   Cells(m; 6).NumberFormat = "0,00"

   m = m + 1

  End If

 Next k

 For i = 2 To 6

  sum = 0

  For m1 = 7 To m - 1

   sum = sum + Cells(m1; i)

  Next m1

  Cells(m; i) = sum

  Cells(m; i).NumberFormat = "0,00"

 Next i

 Mag(1) = Cells(m; 2)

 Mag(2) = Cells(m; 3)

 Mag(3) = Cells(m; 4)

 Mag(4) = Cells(m; 6)

 If Cells(m; 2) > 0 Then Cells(m + 1; 2) = "Дт" + S192

 If Cells(m; 2) < 0 Then Cells(m + 1; 2) = "Кт" + S192

 If Cells(m; 3) > 0 Then Cells(m + 1; 3) = "Дт" + S904

 If Cells(m; 3) < 0 Then Cells(m + 1; 3) = "Кт" + S904

 If Cells(m; 4) > 0 Then Cells(m + 1; 4) = "Кт" + S960

 If Cells(m; 4) < 0 Then Cells(m + 1; 4) = "Дт" + S970

 Cells(m + 1; 6) = "Дт" + S970

 Range(Cells(m + 1; 2); Cells(m + 2; 6)).HorizontalAlignment = xlCenter

 Range(Cells(m + 1; 1); Cells(m + 1; 6)).Interior.ColorIndex = 15

 Cells(m + 2; 6) = "Кт" + S904

 Cells(m + 2; 6).Interior.ColorIndex = 15

 Range(Cells(7; 1); Cells(m - 1; 6)).Borders(xlRight).Weight = xlThin

 Range(Cells(m; 1); Cells(m; 6)).Borders(xlRight).LineStyle = xlDouble

 Range(Cells(m; 1); Cells(m; 6)).Borders(xlLeft).LineStyle = xlDouble

 Range(Cells(m; 1); Cells(m; 6)).Borders(xlTop).LineStyle = xlDouble

 Range(Cells(m; 1); Cells(m; 6)).Borders(xlBottom).LineStyle = xlDouble

 Cells(m + 2; 4) = "Подпись ответственного"

 Cells(m + 3; 4) = "сотрудника"

 Range(Cells(m + 2; 4); Cells(m + 3; 4)).Font.Size = 8

 Range(Cells(m + 2; 4); Cells(m + 3; 4)).HorizontalAlignment = xlLeft

 Range(Cells(7; 1); Cells(m + 4; 6)).BorderAround Weight:=xlMedium

 Range(Cells(m + 2; 3); Cells(m + 4; 3)).Borders(xlRight).Weight = xlThin

 Range(Cells(m + 1; 1); Cells(m + 1; 5)).Borders(xlBottom).Weight = xlThin

 Cells(m + 2; 6).Borders(xlLeft).Weight = xlThin

 Cells(m + 2; 6).Borders(xlBottom).Weight = xlThin

 If DialogPrint("ЖурналОборотов"; 1) Then Exit Sub

 

' печать мемориального ордера

 Dim StrS As String

 With DialogSheets("ДиалогОперация")

  .Show

  If .OptionButtons(1).Value = xlOn Then StrS = "Покупка"

  If .OptionButtons(2).Value = xlOn Then StrS = "Продажа"

  If .OptionButtons(3).Value = xlOn Then StrS = "Погашение"

  If .OptionButtons(4).Value = xlOn Then StrS = "Покупка / Продажа"

  If .OptionButtons(5).Value = xlOn Then StrS = "Покупка / Погашение"

 End With

 Worksheets("Ордер").Select

 i = CInt(InputBox("Введите номер 1-го ордера"))

 If Mag(1) > 0 Then

  If Mag(2) < 0 Then

   If MemoOrder(i; min(Mag(1); Mag(2)); S192; S904; 0; _

         StrS + " РКО за " + CStr(CurDate)) Then Exit Sub

   i = i + 1

  End If

  If Mag(3) > 0 Then

   If MemoOrder(i; min(Mag(1); Mag(3)); S192; S960; 0; _

         "Доход от продажи РКО за " + CStr(CurDate)) Then Exit Sub

   i = i + 1

  End If

 End If

 

 If Mag(2) > 0 Then

  If Mag(1) < 0 Then

   If MemoOrder(i; min(Mag(2); Mag(1)); S904; S192; 0; _

         StrS + " РКО за " + CStr(CurDate)) Then Exit Sub

   i = i + 1

  End If

  If Mag(3) > 0 Then

   If MemoOrder(i; min(Mag(2); Mag(3)); S904; S960; 0; _

         "Доход от продажи РКО за " + CStr(CurDate)) Then Exit Sub

   i = i + 1

  End If

 End If

 

 If Mag(3) < 0 Then

  If Mag(1) < 0 Then

   If MemoOrder(i; min(Mag(3); Mag(1)); SR970; S192; 0; _

         "Отрицательная разница от продажи РКО за " + CStr(CurDate)) Then Exit Sub

   i = i + 1

  End If

  If Mag(2) < 0 Then

   If MemoOrder(i; min(Mag(3); Mag(2)); SR970; S904; 0; _

         "Отрицательная разница от продажи РКО за " + CStr(CurDate)) Then Exit Sub

   i = i + 1

  End If

 End If

 

 If Format(Mag(4)) > 0 Then

  If MemoOrder(i; Mag(4); S970; S904; 0; _

   "Комиссия ВКБ в т.ч. НДС " + CStr(Format(Mag(4) / 6; "0,00"))) Then Exit Sub

 End If

End Sub

'-------------------------------------------- Memo Order

Function MemoOrder(Num; sum As Double; n1; n2; Pos As Integer; Order As String)

 Dim i As Integer

 Dim Flag As Boolean

 Str1 = ""

 Str = CStr(sum)

 Str = Format(Str; "000000000000,00")

 Flag = False

 For i = 1 To Len(Str)

  If Mid(Str; i; 1) = "," Then

   If CInt(Right(Str; 2)) = 0 Then

    Str1 = Str1 + "="

    Exit For

   Else

    Str1 = Str1 + "-"

   End If

  Else

   If Mid(Str; i; 1) <> "0" Then Flag = True

   If Mid(Str; i; 1) <> "0" Or Flag Then Str1 = Str1 + Mid(Str; i; 1)

  End If

 Next i

 Cells(3; 6) = Str1

 If Pos > 0 Then

  If n1 > 6 Then

   Cells(5; 6) = Worksheets("Клиенты").Cells(2; n1)

  Else

   Cells(5; 6) = Worksheets("Клиенты").Cells(Pos; n1)

  End If

  If n2 > 6 Then

   Cells(10; 6) = Worksheets("Клиенты").Cells(2; n2)

  Else

   Cells(10; 6) = Worksheets("Клиенты").Cells(Pos; n2)

  End If

 Else

  Cells(5; 6) = n1

  Cells(10; 6) = n2

 End If

 Cells(16; 1) = Order

 Cells(1; 6) = Num

 Range("A1:H24").Copy

 Range("A32").Select

 ActiveSheet.Paste

 If DialogPrint("Ордер"; 2) Then

  MemoOrder = True

 Else

  MemoOrder = False

 End If

End Function

'-------------------------------- Печать биржевой информации -------

Sub PrintBirgaInfo()

 Dim Sheet As Object

 Dim Flag As Boolean

 Dim i; n; k; Num As Long

 Dim mas(3) As Double

 Set Sheet = Worksheets("Биржа")

 CurDate = Worksheets("Врем").Cells(1; 4)

 Sheets("Биржевая Информация").Select

 Cells(3; 10) = CurDate

 For i = 1 To 3

  mas(i) = 0

 Next i

 i = 2

 n = 7

 Range(Cells(n; 1); Cells(n + 100; 17)).Delete shift:=xlToLeft

 Flag = True

 Do While Sheet.Cells(i; 1) <> Empty

  If Sheet.Cells(i; 1) = CurDate Then

   Flag = False

   Cells(n; 1) = Sheet.Cells(i; 2)

   Cells(n; 7) = Sheet.Cells(i; 3)

   Cells(n; 9) = Sheet.Cells(i; 4)

   Cells(n; 10) = Sheet.Cells(i; 5)

   Cells(n; 5).Font.Bold = True

   Cells(n; 11) = Sheet.Cells(i; 6)

   Cells(n; 11).Font.Bold = True

   Cells(n; 12) = Sheet.Cells(i; 7)

   Cells(n; 13) = Sheet.Cells(i; 8)

   k = 2

   While Worksheets("Бумаги").Cells(k; 1) <> Empty

    If Worksheets("Бумаги").Cells(k; 1) = Cells(n; 1) Then

     Cells(n; 2) = Worksheets("Бумаги").Cells(k; 2)

     Cells(n; 3) = Worksheets("Бумаги").Cells(k; 3)

     Cells(n; 6) = Worksheets("Бумаги").Cells(k; 4)

    End If

    k = k + 1

   Wend

   Cells(n; 2).NumberFormat = "ДД.ММ.ГГ"

   Cells(n; 3).NumberFormat = "ДД.ММ.ГГ"

   Cells(n; 6).NumberFormat = "# ##0"

   Cells(n; 9).NumberFormat = "# ##0"

   Range(Cells(n; 10); Cells(n; 17)).NumberFormat = "0,00"

   Cells(n; 4) = Cells(3; 10) - Cells(n; 2)

   Cells(n; 5) = Cells(n; 3) - Cells(3; 10)

   Cells(n; 8) = Cells(n; 9) / Cells(n; 6) * 100

   Cells(n; 8).NumberFormat = "0,00"

   If Cells(n; 7) <> 0 And Cells(n; 5) <> 0 Then

    Cells(n; 14) = (100 / Cells(n; 10) - 1) * 36500 / Cells(n; 5) * 0,85

    Cells(n; 15) = (100 / Cells(n; 10) - 1) * 36500 / Cells(n; 5)

    Cells(n; 16) = (100 / Cells(n; 11) - 1) * 36500 / Cells(n; 5) * 0,85

    Cells(n; 16).Font.Bold = True

    Cells(n; 17) = (100 / Cells(n; 11) - 1) * 36500 / Cells(n; 5)

    mas(1) = mas(1) + Cells(n; 5) * Cells(n; 9) * Cells(n; 14)

    mas(2) = mas(2) + Cells(n; 5) * Cells(n; 9) * Cells(n; 16)

    mas(3) = mas(3) + Cells(n; 5) * Cells(n; 9)

   End If

   n = n + 1

  End If

  i = i + 1

 Loop

 If Flag Then

  MsgBox "Биржевой информации нет"

  Exit Sub

 End If

 

 Num = n

 Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlLeft).Weight = xlThin

 Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlRight).Weight = xlThin

 Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlTop).Weight = xlThin

 Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlBottom).Weight = xlThin

 Range(Cells(7; 1); Cells(Num - 1; 17)).BorderAround Weight:=xlMedium

 Cells(Num; 1) = "Итого"

 Cells(Num; 1).Font.Bold = True

 Cells(Num; 1).HorizontalAlignment = xlCenter

 Cells(Num; 14) = mas(1) / mas(3)

 Cells(Num; 15) = mas(1) / mas(3) / 0,85

 Cells(Num; 16) = mas(2) / mas(3)

 Cells(Num; 16).Font.Bold = True

 Cells(Num; 17) = mas(2) / mas(3) / 0,85

 Range(Cells(Num; 14); Cells(Num; 17)).NumberFormat = "0,00"

 For i = 1 To 3

  mas(i) = 0

 Next i

 For i = 7 To Num - 1

  mas(1) = mas(1) + Cells(i; 6)

  mas(2) = mas(2) + Cells(i; 7)

  mas(3) = mas(3) + Cells(i; 9)

 Next

 Cells(Num; 6) = mas(1)

 Cells(Num; 6).NumberFormat = "# ##0"

 Cells(Num; 7) = mas(2)

 Cells(Num; 9) = mas(3)

 Cells(Num; 9).NumberFormat = "# ##0"

 Cells(Num; 8) = mas(3) / mas(1) * 100

 Cells(Num; 8).NumberFormat = "0,00"

 Cells(Num; 7).Font.Bold = True

 Cells(Num; 9).Font.Bold = True

 Range(Cells(Num; 1); Cells(Num; 17)).BorderAround Weight:=xlMedium

 Range(Cells(Num; 1); Cells(Num; 17)).Interior.ColorIndex = 15

 If DialogPrint("Биржевая Информация"; 1) Then Exit Sub

End Sub

'-------------------------------- Дата -----------------------------

Sub DateChange()

 With DialogSheets("ДиалогДата")

  .EditBoxes.Text = CurDate

  .EditBoxes.InputType = 1

  .Show

  CurDate = Worksheets("Врем").Cells(1; 4)

  If Button = False Then

   CurDate = Date

   Worksheets("Врем").Cells(1; 4) = CurDate

   MsgBox "Дата восстановлена"

  Else

   If IsDate(.EditBoxes.Text) Then

    CurDate = .EditBoxes.Text

    MsgBox "Дата изменена"

    Worksheets("Врем").Cells(1; 4) = CurDate

    Exit Sub

   End If

   MsgBox "Ошибка при вводе даты"

  End If

 End With

End Sub

'-------------------------------- Формирование текущей таблицы бумаг ----

Sub FormBum()

 Dim L As Object

 Dim i; k As Integer

 Set L = Worksheets("Бумаги")

 CurDate = Worksheets("Врем").Cells(1; 4)

 i = 2

 k = 1

 While L.Cells(i; 1) <> Empty

  If L.Cells(i; 2) <= CurDate And L.Cells(i; 3) >= CurDate Then

   Worksheets("Врем").Cells(k; 1) = L.Cells(i; 1)

   k = k + 1

  End If

  i = i + 1

 Wend

 Worksheets("Врем").Cells(1; 2) = k - 1

 Set L = Worksheets("Клиенты")

 i = 1

 While L.Cells(i; 1) <> Empty

  i = i + 1

 Wend

 Worksheets("Врем").Cells(1; 3) = i - 2

End Sub

' ------------------------------- Остатки на бирже --------------------

Sub EditOstBirga(CliNum As Long)

 Dim ComBirga; sum; OstBegin As Double

 Dim DoFlag As Boolean

 Dim Sheet; Sheet1 As Object

 Dim i; k; RowNum As Long

 Set Sheet = Worksheets("ОстаткиБиржа")

 Set Sheet1 = Worksheets("Сделки")

 CurDate = Worksheets("Врем").Cells(1; 4)

 ComBirga = Worksheets("Инфо").Cells(1; 2)

 Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _

                         Key2:=Sheet.Range("A2"); Order2:=xlDescending; _

                         Header:=xlYes; OrderCustom:=1; _

                         MatchCase:=False; Orientation:=xlTopToBottom

                        

 OstBegin = 0

 RowNum = 0

 k = 2

 DoFlag = True

 Do While Sheet.Cells(k; 1) <> Empty

  If Sheet.Cells(k; 2) = CliNum And DoFlag Then

   If Sheet.Cells(k; 1) < CurDate Then

    OstBegin = Sheet.Cells(k; 6)

   Else

    Do While Sheet.Cells(k; 1) <> Empty

     If Sheet.Cells(k; 2) <> CliNum Then Exit Do

     If Sheet.Cells(k; 1) = CurDate Then

      OstBegin = Sheet.Cells(k; 3)

      RowNum = k

      Exit Do

     End If

     k = k + 1

    Loop

   End If

   DoFlag = False

  End If

  k = k + 1

 Loop

 If RowNum = 0 Then RowNum = k

 k = RowNum

 sum = 0

 i = 2

 While Sheet1.Cells(i; 1) <> Empty

  If Sheet1.Cells(i; 1) = CurDate And Sheet1.Cells(i; 2) = CliNum Then

   If Sheet1.Cells(i; 4) <> Empty Then

    sum = sum - _

     Sheet1.Cells(i; 4) * Sheet1.Cells(i; 6) * 10000 - _

     Format(Sheet1.Cells(i; 4) * Sheet1.Cells(i; 6) * 100 * ComBirga + 0,0001; "0,00")

   Else

    If Sheet1.Cells(i; 5) = 100 Then ComBirga = 0

    sum = sum + _

     Sheet1.Cells(i; 5) * Sheet1.Cells(i; 6) * 10000 - _

     Format(Sheet1.Cells(i; 5) * Sheet1.Cells(i; 6) * 100 * ComBirga + 0,0001; "0,00")

   End If

  End If

  i = i + 1

 Wend

 Sheet.Cells(k; 3) = OstBegin

 Sheet.Cells(k; 6) = OstBegin + sum + Sheet.Cells(k; 4)

 Sheet.Cells(k; 1) = CurDate

 Sheet.Cells(k; 2) = CliNum

End Sub

Sub Ok()

 Button = True

End Sub

Sub Cancel()

 Button = False

End Sub

Sub ПросмотрОтчетов()

 Просмотр = True

End Sub

Sub Останов()

 ExitVar = True

End Sub

Sub EndOf()

 Dim i As Long

 i = 2

 While Cells(i; 1) <> Empty

  i = i + 1

 Wend

 Cells(i; 1).Select

End Sub

Function DialogPrint(Str As String; Count As Integer)

 With DialogSheets("ДиалогПечать")

AgainView:

  Просмотр = False

  ExitVar = False

  Button = False

  .Show

  If Просмотр Then

   Worksheets(Str).PrintPreview

   GoTo AgainView

  End If

  If ExitVar Then

   DialogPrint = True

  Else

   DialogPrint = False

  End If

  If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=Count

 End With

End Function

Function min(a; b)

 If Abs(a) > Abs(b) Then

  min = Abs(b)

 Else

  min = Abs(a)

 End If

End Function

Приложение № 1.3. Журнал оборотов.



Приложение № 1.4. Журнал лицевого учета.



Приложение № 1.5. Мемориальный ордер.



Приложение № 1.6. Отчет инвестору о совершенных сделках.



Приложение № 1.7. Структура пртфеля в разрезе по бумагам.



Приложение № 1.8. Структура портфеля обобщенная.



Приложение № 1.9. Биржевая информация.



Приложение № 1.10. Еженедельный отчет в депозитарий.




Приложение № 1.11. Ежемесячный отчет в депозитарий.



Приложение № 2. Программа анализа эффективности вложений в РКО.


Приложение 2.1. Текст программы.


Option Explicit

Option Base 1

'***************************   Сортировка  *************************

' Процедура сортировки страницы

' Параметры:

' Sheet - лист

' RangeSort - первая ячейка для сортировки

' StrKey1 - сортировка сначала производится по этому столбцу

' StrKey2 - а затем по этому

' StrKey3 - и по этому в последнюю очередь

' OrderType1 - Направление сортировки по столбцу StrKey1

' OrderType2 - Направление сортировки по столбцу StrKey2

' OrderType3 - Направление сортировки по столбцу StrKey3

' Пример использования :

' Call Сортировка(Worksheets("Биржа"); "A2"; "A2"; "B2"; "C2"; xlAscending; xlDescending; xlAscending)

'*****************************************************************

Sub Сортировка(Sheet As Object; RangeSort As String; StrKey1 As String; _

StrKey2 As String; StrKey3 As String; TypeOrder1 As Integer; TypeOrder2 As Integer; TypeOrder3 As Integer)

    Sheet.Range(RangeSort).Sort Key1:=Sheet.Range(StrKey1); Order1:=TypeOrder1; Key2:= _

    Sheet.Range(StrKey2); Order2:=TypeOrder2; Key3:=Sheet.Range(StrKey3); Order3:= _

        TypeOrder3; Header:=xlGuess; OrderCustom:=1; MatchCase:=False _

        ; Orientation:=xlTopToBottom

End Sub

'******************************* Поиск ***************************

' Функция поиска значения в определенном столбце с определенной позиции вперед/назад

' Параметры:

' Sheet - лист

' Column - колонка для поиска

' Row - начальная строка поиска

' Text - искомое значение

' Direction - направление поиска:

'                          1 - вперед

'                         -1 - назад

' Пример использования :

' MsgBox Поиск(Worksheets("Биржа"); 4; 8; 5; -1)

'*******************************************************************

Function Поиск(Sheet As Object; Column As Integer; Row As Integer; Text; Direction As Integer)

 Dim i As Integer

 Dim Compare; Compare1

 If Direction <> 1 And Direction <> -1 Then

  MsgBox "Неверно задано направление поиска"

  End

 On Error GoTo ErrorFuncFind

 i = Row

 While Not IsEmpty(Sheet.Cells(i; Column))

  If IsDate(Text) Then

   Compare = CDate(Sheet.Cells(i; Column))

   Compare1 = CDate(Text)

  Else

   If IsNumeric(Text) Then

    Compare = CDbl(Sheet.Cells(i; Column))

    Compare1 = CDbl(Text)

   Else

    Compare = CStr(Sheet.Cells(i; Column))

    Compare1 = CStr(Text)

   End If

  End If

  If Compare = Compare1 Then

   Поиск = i

   Exit Function

  End If

  i = i + Direction

 Wend

 Поиск = 0

 Exit Function

ErrorFuncFind:

 MsgBox "Несовпадение типов данных в вызове" + Chr(13) + "функции Поиск и в искомом столбце." _

         + Chr(13) + Chr(13) + "Данные разных типов в столбце базы" + Chr(13)

 End

End Function


Option Explicit

Option Base 1

' ---------------------------- Общая часть -------------------------------------

' внешние параметры

' тип данных для записи информации о бумаге

Type BumRecord

 Num As Long          ' номер бумаги

 DateStart As Date    ' дата выпуска

 DateEnd As Date      'дата погашения

 Volume As Long       'объем выпуска

 Present As Boolean

End Type

' тип данных для записи информации о структуре портфеля

Type PortfelRecord

 Dates() As Date       ' дата покупки

 Price() As Single     ' цена покупки

 Volume() As Long      ' количество

 StartPos() As Integer ' начальный индекс бумаги в массиве бумаг данной серии

 EndPos() As Integer   ' конечный индекс бумаги в массиве бумаг данной серии

 VolumeAll() As Long   ' количество бумаг данной серии в портфеле

End Type

' тип данных для записи информации об индксах портфеля и рынка

Type IndexRecord

 Dates As Date

 Portfel As Single

 Birga As Single

End Type

Const MaxBum = 500    ' максимальное количество бумаг в портфеле одной серии

Const DilerConst = 1000900000 ' константа для выборки портфеля дилера

Dim MaxPeriod As Long ' максимальное количество дней для анализа(можно вычислить как последний день анализа-первый день анализа+1)

Dim Portfel As PortfelRecord  ' данные о портфеле

Dim BumInfo() As BumRecord    ' данные о бумагах

Dim BumNum As Integer         ' количество различных серий бумаг

Dim Index() As IndexRecord    ' индексы портфеля и рынка

Dim Revenue() As IndexRecord  ' доходность к погашению портфеля и рынка

Dim BirgaInfo() As Single     ' текущая биржевая информация по каждой серии

Dim CoefIndex As Long         ' индекс коэффициента

Dim RevIndex As Long          ' индекс доходности

Dim EvalDate As Date          ' дата для расчета

Dim StartDate As Date         ' начальная дата для постоения индексов

Dim PortfelPricePred; BirgaPricePred As Single

Dim Analize1; Analize2 As Boolean

'------------------------------- Процедура расчета портфеля (главный модуль)-

Sub АнализПортфель()

 Dim Sheet As Object

 Dim i; Ind  As Integer

 Dim SumCell As Long

 Dim CurDate As Date

 Set Sheet = Worksheets("Бумаги")

 BumNum = 0

 While Sheet.Cells(BumNum + 2; 1) <> Empty

  BumNum = BumNum + 1

 Wend

 With DialogSheets("ДиалогДата")

  .EditBoxes(1).Text = "05.02.97"

  .EditBoxes(2).Text = "30.05.97"

  .EditBoxes(1).InputType = xlDate

  .EditBoxes(2).InputType = xlDate

  .Show

  StartDate = CDate(.EditBoxes(1).Text)

  EvalDate = CDate(.EditBoxes(2).Text)

 End With

 With DialogSheets("ДиалогВыбор")

again:

  .Show

  Analize1 = False

  Analize2 = False

  If .CheckBoxes(1).Value = 1 Then Analize1 = True

  If .CheckBoxes(2).Value = 1 Then Analize2 = True

  If Not Analize1 And Not Analize2 Then

   MsgBox "Выберите тип анализа"

   GoTo again

  End If

 End With

 MaxPeriod = EvalDate - StartDate + 1

 ReDim Index(MaxPeriod)

 ReDim Revenue(MaxPeriod)

 Index(1).Portfel = 1

 Index(1).Birga = 1

 Index(1).Dates = StartDate

 ReDim BumInfo(BumNum)

 ReDim BirgaInfo(BumNum)

 For i = 1 To BumNum

  With BumInfo(i)

  .Num = Sheet.Cells(i + 1; 1)

  .DateStart = Sheet.Cells(i + 1; 2)

  .DateEnd = Sheet.Cells(i + 1; 3)

  .Volume = Sheet.Cells(i + 1; 4)

 End With

 Next i

 

 ReDim Portfel.Dates(BumNum; MaxBum)

 ReDim Portfel.Price(BumNum; MaxBum)

 ReDim Portfel.Volume(BumNum; MaxBum)

 ReDim Portfel.StartPos(BumNum)

 ReDim Portfel.EndPos(BumNum)

 ReDim Portfel.VolumeAll(BumNum)

 

 For i = 1 To BumNum

  Portfel.StartPos(i) = 1

  Portfel.EndPos(i) = 0

 Next i

 

 Set Sheet = Worksheets("Сделки")

 Call Сортировка(Worksheets("Сделки"); "A2"; "A2"; "B2"; "D2"; _

                 xlAscending; xlAscending; xlAscending)

 i = 2

 CoefIndex = 1

 RevIndex = 1

 CurDate = StartDate

 While Sheet.Cells(i; 1) <> Empty And Sheet.Cells(i; 1) <= EvalDate

  If Sheet.Cells(i; 2) = DilerConst Then

   Ind = ReturnBum(Sheet.Cells(i; 3))

   If Not IsEmpty(Sheet.Cells(i; 4)) Then

    Portfel.EndPos(Ind) = Portfel.EndPos(Ind) + 1

    Portfel.Dates(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 1)

    Portfel.Price(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 4)

    Portfel.Volume(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 6)

    Portfel.VolumeAll(Ind) = Portfel.VolumeAll(Ind) + Sheet.Cells(i; 6)

   Else

    SumCell = Sheet.Cells(i; 6)

    Portfel.VolumeAll(Ind) = Portfel.VolumeAll(Ind) - Sheet.Cells(i; 6)

    While SumCell >= Portfel.Volume(Ind; Portfel.StartPos(Ind)) And SumCell > 0

     SumCell = SumCell - Portfel.Volume(Ind; Portfel.StartPos(Ind))

     Portfel.StartPos(Ind) = Portfel.StartPos(Ind) + 1

    Wend

    If SumCell < Portfel.Volume(Ind; Portfel.StartPos(Ind)) Then

     Portfel.Volume(Ind; Portfel.StartPos(Ind)) = Portfel.Volume(Ind; Portfel.StartPos(Ind)) - SumCell

    End If

   End If

  End If

  ' в данном месте можео провести анализ на основе данных о портфеле за текущую дату

  ' дата текущая - это Worksheets("Сделки").cells(i-1;1)

  ' т.е. анализ за эту текущую дату(доходность к погашению портфеля, индекс,...)

  If StartDate <= Sheet.Cells(i; 1) And Sheet.Cells(i; 1) <> CurDate Then

   Call Процедура_анализа(Sheet.Cells(i; 1))

   CoefIndex = CoefIndex + 1

   RevIndex = RevIndex + 1

   CurDate = Sheet.Cells(i; 1)

  End If

  i = i + 1

 Wend

 If Analize1 Then

  Worksheets("РезультатИндекс").Cells(1; 2) = "Портфель"

  Worksheets("РезультатИндекс").Cells(1; 3) = "Рынок"

  For i = 1 To CoefIndex - 1

   Worksheets("РезультатИндекс").Cells(i + 1; 1) = Index(i).Dates

   Worksheets("РезультатИндекс").Cells(i + 1; 2) = Index(i).Portfel

   Worksheets("РезультатИндекс").Cells(i + 1; 3) = Index(i).Birga

  Next i

  Charts("ДиаграммаИндекс").ChartWizard Source:=Sheets("РезультатИндекс").Range( _

        "A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _

        CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _

        "Сравнение индекса портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _

        "индекс"; ExtraTitle:=""

  Charts("ДиаграммаИндекс").Select

  MsgBox "Диаграмма Индекса"

 End If

 If Analize2 Then

  Worksheets("РезультатДоходность").Cells(1; 2) = "Портфель"

  Worksheets("РезультатДоходность").Cells(1; 3) = "Рынок"

  For i = 1 To RevIndex - 1

   Worksheets("РезультатДоходность").Cells(i + 1; 1) = Revenue(i).Dates

   Worksheets("РезультатДоходность").Cells(i + 1; 2) = Revenue(i).Portfel

   Worksheets("РезультатДоходность").Cells(i + 1; 3) = Revenue(i).Birga

  Next i

  Charts("ДиаграммаДоходность").ChartWizard Source:=Sheets("РезультатДоходность").Range( _

        "A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _

        CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _

        "Сравнение доходности портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _

        "доходность"; ExtraTitle:=""

  Charts("ДиаграммаДоходность").Select

  MsgBox "Диаграмма Доходности"

 End If

End Sub

'--------------------- функция возвращает индекс бумаги в массиве BumInfo -------------

Function ReturnBum(bum As Long)

 Dim i As Integer

 For i = 1 To BumNum

  If bum = BumInfo(i).Num Then

   ReturnBum = i

   Exit Function

  End If

 Next i

 MsgBox "Не найдена бумага в списке бумаг. Занести бумагу в лист Бумаги"

 End

End Function

'-------------------- Процедура построения индексов портфеля и рынка -----------------

Sub Процедура_анализа(CurDate As Date)

 Dim i; k As Long

 Dim Sheet As Object

 Dim PortfelPrice; BirgaPrice As Single

 Dim BirgaCoef; PortfelCoef As Single

 Dim Doh; Volume As Single

 Dim Flag As Boolean

 Set Sheet = Worksheets("Биржа")

 

 ' поиск первой строки начала биржевой информации за текущий день

 i = Поиск(Worksheets("Биржа"); 1; 2; CurDate; 1)

 If i = 0 Then

  'MsgBox "Биржевая информация за " + CStr(CDate(CurDate)) + "не найдена"

  'End

  CoefIndex = CoefIndex - 1

  Exit Sub

 End If

 

 ' занесение биржевой информации за текущий день

 If i <> 0 Then

  While Sheet.Cells(i; 1) = CurDate

   If Sheet.Cells(i; 6) <> Empty Then

    BirgaInfo(ReturnBum(Sheet.Cells(i; 2))) = Sheet.Cells(i; 6)

   End If

   i = i + 1

  Wend

 End If

 

  ' определение по каждой бумаге обращения на бирже

 For i = 1 To BumNum

  If BumInfo(i).DateStart <= CurDate And CurDate <= BumInfo(i).DateEnd Then

   BumInfo(i).Present = True

  Else

   BumInfo(i).Present = False

  End If

 Next i

 ' если выбран анализ эффективной доходности портфеля и рынка

 If Analize2 Then

  Doh = 0

  Volume = 0

  Flag = True

  For k = 1 To BumNum

   If BumInfo(k).Present Then

    For i = Portfel.StartPos(k) To Portfel.EndPos(k)

     Flag = False

     Doh = Doh + (100 / Portfel.Price(k; i) - 1) * 36500 * Portfel.Volume(k; i)

     Volume = Volume + Portfel.Volume(k; i) * (BumInfo(k).DateEnd - Portfel.Dates(k; i))

    Next i

   End If

  Next k

  If Flag Then

   RevIndex = RevIndex - 1

   GoTo Anal1

  End If

  Revenue(RevIndex).Portfel = Doh / Volume

  Revenue(RevIndex).Dates = CurDate

  Flag = True

  Doh = 0

  Volume = 0

  For k = 1 To BumNum

   If BumInfo(k).Present Then

    Flag = False

    Doh = Doh + (100 / BirgaInfo(k) - 1) * 36500 * BumInfo(k).Volume

    Volume = Volume + BumInfo(k).Volume * (BumInfo(k).DateEnd - CurDate)

   End If

  Next k

  If Flag Then

   RevIndex = RevIndex - 1

   GoTo Anal1

  End If

  Revenue(RevIndex).Birga = Doh / Volume

 End If

 

Anal1:

 ' если выбран анализ индекса портфеля и рынка

 If Analize1 Then

 ' определение стоимости портфеля и биржи по средневзвешенным ценам

 PortfelPrice = 0

 BirgaPrice = 0

 For i = 1 To BumNum

  PortfelPrice = PortfelPrice + Portfel.VolumeAll(i) * BirgaInfo(i) * 10000

  BirgaPrice = BirgaPrice + BumInfo(i).Volume * BirgaInfo(i) * 10000

 Next i

 ' расчет индексов

 If CoefIndex <> 1 Then

  ' поиск остатков за текущий день

  k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1)

  If k <> 0 Then

   PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2)

  End If

 

  ' вычисление коэффициента портфеля

  If k <> 0 Then

   PortfelCoef = (PortfelPrice - Worksheets("Остаток").Cells(k; 3) _

                  + Worksheets("Остаток").Cells(k; 4)) / PortfelPricePred

  Else

   PortfelCoef = PortfelPrice / PortfelPricePred

  End If

  PortfelPricePred = PortfelPrice

 

  ' определение индекса портфеля за текущий день

  Index(CoefIndex).Portfel = Index(CoefIndex - 1).Portfel * PortfelCoef

  Index(CoefIndex).Dates = CurDate

  BirgaCoef = BirgaPrice

  k = Поиск(Worksheets("Бумаги"); 2; 2; CurDate; 1)

  If k <> 0 Then

   BirgaCoef = BirgaCoef - Worksheets("Бумаги").Cells(k; 4)

  End If

  k = Поиск(Worksheets("Бумаги"); 3; 2; CurDate; 1)

  If k <> 0 Then

   BirgaCoef = BirgaCoef + Worksheets("Бумаги").Cells(k; 4)

  End If

  BirgaCoef = BirgaCoef / BirgaPricePred

  BirgaPricePred = BirgaPrice

  ' определение индекса биржи за текущий день

  Index(CoefIndex).Birga = Index(CoefIndex - 1).Birga * BirgaCoef

 Else

  k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1)

  If k <> 0 Then

   PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2)

  End If

  PortfelPricePred = PortfelPrice

  BirgaPricePred = BirgaPrice

 End If

 End If

End Sub

Sub Cancel()

 End

End Sub


Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка.



Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.




Приложение № 3. Входные статистические данные.


Приложение 3.1. Информация о бумагах.


Дата выпуска

Дата погашения

21019

14.11.96

13.02.97

60 000 000

21020

09.01.97

10.04.97

65 000 000

21021

13.02.97

15.05.97

55 000 000

21022

10.04.97

10.07.97

55 000 000

21023

10.07.97

09.10.97

40 000 000

21024

18.12.97

09.04.98

45 000 000

22002

29.08.96

27.02.97

25 000 000

22003

26.09.96

27.03.97

30 000 000

22004

24.10.96

24.04.97

40 000 000

22005

28.11.96

29.05.97

45 000 000

22006

19.12.96

19.06.97

90 000 000

22007

30.01.97

24.07.97

30 000 000

22008

27.02.97

28.08.97

55 000 000

22009

27.03.97

25.09.97

55 000 000

22010

24.04.97

23.10.97

60 000 000

22011

15.05.97

13.11.97

60 000 000

22012

29.05.97

27.11.97

60 000 000

24001

20.03.97

12.03.98

30 000 000

24002

08.05.97

07.05.98

25 000 000



Приложение 3.2. Информация о сделках.


Дата

№ бумаги

Цена приобр

Цена продажи

Кол-во

02.12.96

22004

92,99


62

02.12.96

22004

93,00


340

04.12.96

22005

77,50


6

05.12.96

22003

85,14


5

19.12.96

22006

80,05


300

19.12.96

22006

80,21


500

19.12.96

22006

80,37


259

01.01.97

22005

92,06


7

01.01.97

21021

0,00


1126

01.01.97

22005

0,00


95

01.01.97

22008

0,00


75

01.01.97

22009

0,00


457

01.01.97

22008

0,00


29

01.01.97

21020

0,00


642

01.01.97

22004

0,00


12

01.01.97

22006

0,00


20

01.01.97

22009

0,00


16

01.01.97

21020

0,00


90

01.01.97

22006

0,00


26

01.01.97

21020

0,00


20

01.01.97

22004

0,00


15

01.01.97

22006

0,00


5

01.01.97

21021

0,00


12

01.01.97

22006

0,00


27

01.01.97

21020

0,00


0

01.01.97

21021

0,00


63

01.01.97

22004

0,00


159

01.01.97

22005

0,00


146

01.01.97

22009

0,00


46

01.01.97

22007

0,00


32

01.01.97

22008

0,00


13

01.01.97

22006

0,00


73

01.01.97

22006

0,00


59

01.01.97

22006

0,00


56

01.01.97

21020

0,00


29

01.01.97

21021

0,00


8

01.01.97

22005

0,00


12

01.01.97

22006

0,00


27

01.01.97

21021

0,00


10

01.01.97

22008

0,00


28

01.01.97

22008

0,00


57

01.01.97

21021

0,00


42

01.01.97

24001

0,00


34

01.01.97

24001

0,00


69

01.01.97

21021

0,00


104

09.01.97

21020

90,93


300

09.01.97

21020

91,03


600

09.01.97

21020

91,24


900

09.01.97

21020

91,35


600

09.01.97

21020

91,50


500

10.01.97

22004

91,54


24

13.01.97

21020

93,65


50

14.01.97

21020

93,22


32

15.01.97

22005

88,51


10

17.01.97

21020

92,50


10

28.01.97

21020

93,40


7

31.01.97

22007

84,19


16

31.01.97

22007

84,20


184

06.02.97

22004

92,80


60

10.02.97

22006

89,00


500

13.02.97

21021

91,20


430

13.02.97

21021

91,30


430

13.02.97

21021

91,33


320

17.02.97

22005

92,25


78

17.02.97

22007


88,42

78

19.02.97

22005

93,00


122

19.02.97

22003

97,55


41

19.02.97


89,39

122

20.02.97

22005

92,60


28

25.02.97

22005

92,01


100

25.02.97

22005

92,03


60

25.02.97

21020

96,00


101

26.02.97

22004

95,10


12

26.02.97

21021


92,50

12

27.02.97

22008

84,04


300

27.02.97

22008

84,10


432

27.02.97

22008

84,22


318

27.02.97

22008

84,09


311

27.02.97

22008

84,22


182

27.02.97

22008

84,42


100

28.02.97

21021

93,23


80

03.03.97

21020


97,30

200

03.03.97

21021


94,00

154

03.03.97

22006


92,50

200

04.03.97

22006

92,40


24

04.03.97

22006

92,52


200

04.03.97

22006

92,53


200

06.03.97

22006

92,63


25

06.03.97

22004

96,45


4

06.03.97

21020

97,53


108

12.03.97

21020


97,70

489

13.03.97

21020


97,50

822

13.03.97

21021


94,00

399

17.03.97

21021

93,67


100

19.03.97

22003

99,19


128

19.03.97

22003

99,20


229

20.03.97

24001

72,00


50

20.03.97

24001

72,15


290

21.03.97

22005

94,20


2

21.03.97

22005

94,25


100

24.03.97

22005

94,25


108

24.03.97

22005

94,39


27

24.03.97

22005

94,40


598

24.03.97

21020


98,40

200

25.03.97

22006

92,10


70

25.03.97

22005

94,05


320

25.03.97

22003


99,78

403

26.03.97

22006

92,00


314

26.03.97

21021

94,45


80

26.03.97

21020

98,10


50

28.03.97

22005

94,15


7

28.03.97

21021

95,10


135

28.03.97

21021

95,19


378

28.03.97

21021

95,20


90

28.03.97

21020


99,07

288

28.03.97

21020


99,01

300

31.03.97

22006

92,92


200

31.03.97

22006

92,93


400

31.03.97

22006

92,94


100

31.03.97

22005

94,50


10

31.03.97

21020


99,10

88

31.03.97

21020


99,11

12

31.03.97

21020


99,12

2

31.03.97

22006


92,94

100

31.03.97

22006


92,93

400

31.03.97

22006


92,92

200

01.04.97

22006

92,70


1

01.04.97

22006

92,91


89

01.04.97

22004

97,72


10

03.04.97

22004

98,00


100

03.04.97

21020

99,28


38

03.04.97

22006

93,06


29

03.04.97

22006

93,23


5

03.04.97

22006

93,31


145

04.04.97

21020

99,30


370

04.04.97

22006

93,32


50

04.04.97

22006

93,37


47

04.04.97

22006

93,39


45

08.04.97

22004

98,35


239

08.04.97

22008


87,50

167

08.04.97

24001


73,15

23

08.04.97

22004


98,35

53

09.04.97

21020

99,80


13

09.04.97

21020

99,86


27

09.04.97

21020

99,87


325

09.04.97

24001


73,20

117

09.04.97

24001


73,25

200

09.04.97

22009

84,86


61

10.04.97

21022

91,50


2101

10.04.97

21020


100,00

1630

10.04.97

21022

91,50


91

10.04.97

21022

91,65


609

10.04.97

21020


100,00

642

10.04.97

21022

91,65


98

10.04.97

21020


100,00

90

21022

91,50


10

10.04.97

21020


100,00

20

10.04.97

21022

91,65


42

10.04.97

21020


100,00

39

10.04.97

21022

91,65


31

10.04.97

21020


100,00

29

10.04.97

21022

91,50


5458

11.04.97

21022


92,40

1

11.04.97

24001

73,50


300

14.04.97

22009

85,50


340

14.04.97

21021


97,25

300

14.04.97

22006

94,53


157

16.04.97

22008

88,40


330

16.04.97

21021


97,80

600

16.04.97

22004


99,60

90

16.04.97

22009


86,39

340

16.04.97

22004


99,60

50

17.04.97

22009

86,50


60

17.04.97

22004


99,64

3

17.04.97

24001

73,80


1

21.04.97

21022

92,45


515

21.04.97

22006


95,30

500

21.04.97

21022

92,38


3

21.04.97

22006


95,30

321

22.04.97

22004


99,90

189

22.04.97

22008


88,72

112

23.04.97

22005


97,20

12

24.04.97

22004


100,00

572

24.04.97

22010

84,35


14

24.04.97

22004


100,00

12

24.04.97

22010

84,32


10

24.04.97

22004


100,00

15

24.04.97

22010

84,32


28

24.04.97

22010

84,35


34

24.04.97

22004


100,00

53

24.04.97

22010

84,28


586

24.04.97

22010

84,32


355

25.04.97

22008

89,89


18

25.04.97

21022

93,55


48

25.04.97

21022

93,49


2

25.04.97

21022

93,50


4

28.04.97

21022

93,50


790

28.04.97

22005


97,68

200

28.04.97

22005


97,70

500

28.04.97

21022

93,50


1008

28.04.97

21022


93,65

982

28.04.97

21022


93,60

80

28.04.97

21022


93,55

468

28.04.97

21022


93,56

67

28.04.97

21022


93,50

1916

28.04.97

21022


93,61

10

28.04.97

21022


93,51

46

29.04.97

21022

94,01


826

29.04.97

22006


96,50

800

29.04.97

21022


94,00

400

29.04.97

21022


94,01

836

29.04.97

21022


94,05

55

29.04.97

21022


94,10

300

29.04.97

21022


94,15

298

06.05.97

21021


99,40

78

06.05.97

21022


94,70

131

06.05.97

22006


97,00

1

06.05.97

22006


96,90

1

06.05.97

22006


96,65

31

06.05.97

22006


96,61

263

06.05.97

22008


91,20

42

06.05.97

22008


90,80

501

12.05.97

21022

0,00


32

12.05.97

22009

0,00


160

14.05.97

21022


95,40

300

14.05.97

21022


95,45

300

14.05.97

21022


95,48

500

15.05.97

22011

86,30


1190

15.05.97

21021


100,00

500

15.05.97

22011

86,35


477

15.05.97

22011

86,41


826

15.05.97

21021


100,00

1126

15.05.97

22011

86,35


13

15.05.97

21021


100,00

12

15.05.97

22011

86,35


63

15.05.97

21021


100,00

63

15.05.97

21021


100,00

8

15.05.97

21021


100,00

10

15.05.97

22011

86,35


48

15.05.97

21021


100,00

42

15.05.97

21021


100,00

104

16.05.97

24001

79,30


50

16.05.97

22011

87,09

16.05.97

22011

87,10


90

16.05.97

22011

87,35


353

16.05.97

21022


95,75

355

16.05.97

21022


95,80

145

19.05.97

21022

96,54


50

20.05.97

21022

96,65


13

20.05.97

21022

96,73


44

21.05.97

22005


99,65

1

22.05.97

22011

88,40


92

22.05.97

22011

88,43


17

22.05.97

22011

88,44


391

22.05.97

22011

88,50


1

22.05.97

22011

88,70


350

22.05.97

22005


99,80

500

22.05.97

22005


99,82

252

23.05.97

22011

88,70


224

23.05.97

22005


99,82

119

26.05.97

22011


88,55

129

26.05.97

22011


88,54

26

26.05.97

22011


88,53

410

27.05.97

22011


0,00

791

28.05.97

22011

88,03


2

28.05.97

21022

96,40


10

28.05.97

21022

96,50


12

28.05.97

21022

96,69


100

28.05.97

21022

96,70


45

28.05.97

21022


96,88

144

28.05.97

22008


93,30

25

28.05.97

22011


88,21

50

28.05.97

22011


88,26

20

28.05.97

22011


88,25

100

28.05.97

22011


88,20

48

29.05.97

22012

87,30


108

29.05.97

22005


100,00

95

29.05.97

22012

87,30


8

29.05.97

22005


100,00

7

29.05.97

22012

87,30


64

29.05.97

22005


100,00

57

29.05.97

22005


100,00

12

29.05.97

22012

87,00


573

30.05.97

22007

95,79


73

30.05.97

22006

98,65


82

30.05.97

22012

87,85


50

30.05.97

22012

87,85


13


Приложение 3.3. Информация о движениях денежных средств.


Дата

Остаток на конец

Ввод

Вывод

05.02.97

61 746 712,20



06.02.97

481 785 980,60



10.02.97

36 340 980,60



14.02.97

297 257 974,60



17.02.97

294 129 652,00



19.02.97

249 467 440,70



20.02.97

223 513 512,70



25.02.97

20 918 675,30



26.02.97

21 253 187,30



28.02.97

8 953 377,10



03.03.97

532 789 017,10



04.03.97

140 120 741,10



06.03.97

7 640 493,20



12.03.97

484 915 740,20



13.03.97

660 249 230,20


1 000 000 000,00

17.03.97

566 485 560,20



19.03.97

912 000 229,00

700 000 000,00


21.03.97

570 289 860,00



24.03.97

74 813 572,70



25.03.97

8 058 802,70



26.03.97

6 123 432,20



28.03.97

6 838 506,90



31.03.97

97 060 573,30



01.04.97

3 578 284,40



02.04.97

503 578 284,40

500 000 000,00


03.04.97

368 270 852,10



04.04.97

493 442,10



07.04.97

500 493 442,10

500 000 000,00


08.04.97

427 988 436,10



09.04.97

295 022 078,40



11.04.97

684 663,40



14.04.97

1 152 213,40



16.04.97

678 336 327,40



21.04.97

3 004 364,27


675 000 000,00

22.04.97

290 965 631,22



23.04.97

302 620 883,22



24.04.97

2 620 883,22


300 000 000,00

25.04.97

574 620 883,22



28.04.97

5 756 283,52



29.04.97

72 291,57



06.05.97

122 502,22


980 000 000,00

14.05.97

533 285 039,72


516 000 000,00

16.05.97

5 009 715,72



22.05.97

931 583,51



23.05.97

1 584 837,51



26.05.97

1 432 570,33


500 000 000,00

28.05.97

650 729 151,73

500 000 000,00


29.05.97

151 229 151,73


499 500 000,00

30.05.97

296 336,95





Приложение 3.4. Биржевая информация.


Дата

№ бумаги

Цена средневзвешенная

06.01.97

21018

99,643

06.01.97

21019

94,126

06.01.97

22001

98,422

06.01.97

22002

94,880

06.01.97

22003

93,288

06.01.97

22004

90,318

06.01.97

22005

87,458

06.01.97

22006

96,187

08.01.97

21018

99,886

08.01.97

21019

96,830

08.01.97

22001

98,422

08.01.97

22002

95,664

08.01.97

22003

93,032

08.01.97

22004

91,372

08.01.97

22005

88,078

08.01.97

22006

86,150

09.01.97

21018

100,000

09.01.97

21020

90,832

10.01.97

21019

97,123

10.01.97

92,340

10.01.97

22001

99,009

10.01.97

22002

95,907

10.01.97

22003

92,999

10.01.97

22004

90,773

10.01.97

22005

88,050

10.01.97

22006

86,316

13.01.97

21019

97,245

13.01.97

21020

93,147

13.01.97

22001

99,176

13.01.97

22002

96,648

13.01.97

22003

94,013

13.01.97

22004

93,042

13.01.97

22005

89,735

13.01.97

22006

90,704

14.01.97

21019

97,670

14.01.97

21020

93,335

14.01.97

22001

99,343

14.01.97

22002

96,617

14.01.97

22003

94,127

14.01.97

22004

92,800

14.01.97

22005

90,000

14.01.97

22006

86,999

15.01.97

21019

97,693

15.01.97

21020

93,354

15.01.97

22001

99,621

15.01.97

22002

96,500

15.01.97

22003

94,369

15.01.97

22004

91,988

15.01.97

22005

89,289

15.01.97

22006

88,008

16.01.97

21019

97,685

16.01.97

21020

92,831

16.01.97

22001

99,634

16.01.97

22002

96,500

16.01.97

22003

94,325

16.01.97

22004

91,525

16.01.97

22005

89,500

16.01.97

22006

87,936

17.01.97

21019

97,413

17.01.97

21020

92,541

17.01.97

22001

99,680

17.01.97

22002

96,544

17.01.97

22003

92,338

17.01.97

22004

91,715

17.01.97

22005

89,000

17.01.97

22006

87,373

20.01.97

21019

97,650

20.01.97

21020

92,538

20.01.97

22001

99,826

20.01.97

22002

95,996

20.01.97

22003

93,943

20.01.97

22004

91,855

20.01.97

22005

87,862

20.01.97

22006

87,631

21.01.97

21019

97,557

21.01.97

21020

92,463

21.01.97

22001

99,801

21.01.97

22002

96,402

21.01.97

22003

94,097

21.01.97

22004

91,114

21.01.97

22005

88,438

21.01.97

22006

86,820

22.01.97

21019

97,691

22.01.97

21020

92,509

22.01.97

22001

99,861

22.01.97

22002

96,990

22.01.97

22003

94,097

22.01.97

22004

91,349

22.01.97

22005

88,389

22.01.97

22006

86,710

23.01.97

22001

100,000

23.01.97

22006

86,597

24.01.97

21019

98,164

24.01.97

21020

92,854

24.01.97

22002

96,740

24.01.97

22003

94,233

24.01.97

22004

91,920

24.01.97

22005

89,055

24.01.97

22006

87,196

27.01.97

21019

98,620

27.01.97

21020

93,200

27.01.97

22002

97,327

27.01.97

22003

94,658

27.01.97

22004

92,081

27.01.97

22005

89,153

27.01.97

22006

87,163

28.01.97

21019

98,681

28.01.97

21020

93,369

28.01.97

22002

97,412

28.01.97

22003

94,732

28.01.97

22004

92,486

28.01.97

22005

89,617

28.01.97

22006

87,152

29.01.97

21019

98,242

29.01.97

21020

93,041

29.01.97

22002

97,485

29.01.97

22003

94,821

29.01.97

22004

91,200

29.01.97

22005

89,617

29.01.97

22006

87,353

30.01.97

22007

83,554

31.01.97

21019

98,864

31.01.97

21020

93,385

31.01.97

22002

97,485

31.01.97

22003

94,652

31.01.97

22004

91,787

31.01.97

22005

85,900

31.01.97

22006

87,419

31.01.97

22007

84,043

03.02.97

21019

99,326

03.02.97

21020

93,500

03.02.97

22002

97,880

03.02.97

22003

94,829

03.02.97

22004

92,601

03.02.97

22005

89,415

03.02.97

22006

88,276

03.02.97

84,480

04.02.97

21019

99,155

04.02.97

21020

93,831

04.02.97

22002

97,954

04.02.97

22003

95,089

04.02.97

22004

92,484

04.02.97

22005

90,000

04.02.97

22006

88,181

04.02.97

22007

84,612

05.02.97

21019

99,245

05.02.97

21020

94,120

05.02.97

22002

97,954

05.02.97

22003

95,330

05.02.97

22004

92,705

05.02.97

22005

90,182

05.02.97

22006

88,575

05.02.97

22007

84,749

06.02.97

21019

99,502

06.02.97

21020

94,255

06.02.97

22002

98,440

06.02.97

22003

95,631

06.02.97

22004

93,010

06.02.97

22005

90,650

06.02.97

22006

89,112

06.02.97

22007

86,097

07.02.97

21019

99,646

07.02.97

21020

94,650

07.02.97

22002

97,238

07.02.97

22003

95,946

07.02.97

22004

93,249

07.02.97

22005

91,013

07.02.97

22006

89,136

07.02.97

22007

86,035

10.02.97

21019

99,771

10.02.97

21020

94,990

10.02.97

22002

98,667

10.02.97

22003

95,760

10.02.97

22004

93,520

10.02.97

22005

90,591

10.02.97

22006

88,109

10.02.97

22007

86,113

11.02.97

21019

99,842

11.02.97

21020

94,759

11.02.97

22002

98,667

11.02.97

22003

96,000

11.02.97

22004

93,565

11.02.97

22005

90,800

11.02.97

22006

89,259

11.02.97

22007

86,157

12.02.97

21019

99,875

12.02.97

21020

94,844

12.02.97

22002

98,571

12.02.97

22003

96,000

12.02.97

22004

93,678

12.02.97

22005

90,520

12.02.97

22006

89,239

12.02.97

22007

86,558

13.02.97

21019

100,000

13.02.97

21021

91,357

14.02.97

21020

95,057

14.02.97

21021

92,133

14.02.97

22002

99,233

14.02.97

22003

96,400

14.02.97

22004

94,100

14.02.97

22005

91,400

14.02.97

22006

90,053

14.02.97

22007

87,650

17.02.97

21020

95,604

17.02.97

21021

92,377

17.02.97

22002

99,535

17.02.97

22003

96,852

17.02.97

22004

94,484

17.02.97

22005

92,159

17.02.97

22006

90,548

17.02.97

22007

88,149

18.02.97

21020

96,133

18.02.97

21021

92,625

18.02.97

22002

99,700

18.02.97

22003

97,191

18.02.97

22004

94,987

18.02.97

22005

92,690

18.02.97

22006

90,988

18.02.97

22007

88,547

19.02.97

21020

96,364

19.02.97

21021

92,841

19.02.97

22002

99,702

19.02.97

22003

97,195

19.02.97

22004

95,049

19.02.97

22005

92,979

19.02.97

22006

91,236

19.02.97

22007

89,245

20.02.97

21020

96,263

20.02.97

21021

93,056

20.02.97

22002

99,800

20.02.97

22003

97,400

20.02.97

22004

95,370

20.02.97

22005

92,948

20.02.97

22006

90,918

20.02.97

22007

89,336

21.02.97

21020

96,490

21.02.97

21021

93,234

21.02.97

22002

99,800

21.02.97

22003

97,496

21.02.97

22004

95,310

21.02.97

22005

92,643

21.02.97

22006

91,359

21.02.97

22007

88,513

24.02.97

21020

96,071

24.02.97

21021

92,965

24.02.97

22002

99,800

24.02.97

22003

97,500

24.02.97

22004

95,200

24.02.97

22005

92,007

24.02.97

22006

90,456

24.02.97

22007

88,500

25.02.97

21020

96,000

25.02.97

21021

90,057

25.02.97

99,852

25.02.97

22003

97,427

25.02.97

22004

95,454

25.02.97

22005

92,054

25.02.97

22006

90,930

25.02.97

22007

88,199

26.02.97

21020

96,119

26.02.97

21021

92,786

26.02.97

22002

99,883

26.02.97

22003

97,734

26.02.97

22004

95,019

26.02.97

22005

92,299

26.02.97

22006

90,874

26.02.97

22007

88,730

27.02.97

22002

100,000

27.02.97

22008

84,092

28.02.97

21020

96,809

28.02.97

21021

93,293

28.02.97

22003

98,120

28.02.97

22004

95,190

28.02.97

22005

93,100

28.02.97

22006

91,725

28.02.97

22007

88,782

28.02.97

22008

84,956

03.03.97

21020

97,293

03.03.97

21021

94,125

03.03.97

22003

98,350

03.03.97

22004

96,362

03.03.97

22005

93,100

03.03.97

22006

92,266

03.03.97

22007

90,333

03.03.97

22008

86,453

04.03.97

21020

97,348

04.03.97

21021

94,392

04.03.97

22003

98,436

04.03.97

22004

96,124

04.03.97

22005

93,939

04.03.97

22006

92,416

04.03.97

22007

89,930

04.03.97

22008

87,157

05.03.97

21020

97,600

05.03.97

21021

94,421

05.03.97

22003

98,811

05.03.97

22004

96,685

05.03.97

22005

94,343

05.03.97

22006

92,647

05.03.97

22007

89,930

05.03.97

22008

87,016

06.03.97

21020

97,654

06.03.97

21021

94,503

06.03.97

22003

98,962

06.03.97

22004

96,782

06.03.97

22005

94,450

06.03.97

22006

92,646

06.03.97

22007

90,257

06.03.97

22008

86,887

07.03.97

21020

97,636

07.03.97

21021

94,630

07.03.97

22003

99,125

07.03.97

22004

96,903

07.03.97

22005

94,450

07.03.97

22006

92,953

07.03.97

22007

90,257

07.03.97

22008

87,081

11.03.97

21020

96,775

11.03.97

21021

94,860

11.03.97

22003

99,209

11.03.97

22004

96,650

11.03.97

22005

94,500

11.03.97

22006

93,162

11.03.97

22007

90,993

11.03.97

22008

87,317

12.03.97

21020

97,700

12.03.97

21021

94,132

12.03.97

22003

97,682

12.03.97

22004

95,787

12.03.97

22005

94,000

12.03.97

22006

92,513

12.03.97

22007

90,000

12.03.97

22008

87,138

13.03.97

21020

97,490

13.03.97

21021

94,000

13.03.97

22003

99,000

13.03.97

22004

96,064

13.03.97

22005

93,625

13.03.97

22006

92,141

13.03.97

22007

90,000

13.03.97

22008

86,400

14.03.97

21020

97,485

14.03.97

21021

94,946

14.03.97

22003

99,090

14.03.97

22004

96,501

14.03.97

22005

93,602

14.03.97

22006

92,133

14.03.97

22007

89,000

14.03.97

22008

86,731

17.03.97

21020

97,955

17.03.97

21021

92,545

17.03.97

22003

99,010

17.03.97

22004

96,800

17.03.97

22005

93,890

17.03.97

22006

92,423

17.03.97

22007

89,064

17.03.97

22008

87,328

18.03.97

21020

98,024

18.03.97

21021

94,576

18.03.97

22003

99,112

18.03.97

22004

96,576

18.03.97

22005

94,031

18.03.97

22006

92,455

18.03.97

22007

89,064

18.03.97

22008

86,166

19.03.97

21020

98,007

19.03.97

21021

94,668

19.03.97

22003

99,195

19.03.97

22004

96,819

19.03.97

22005

93,877

19.03.97

91,269

19.03.97

22007

88,900

19.03.97

22008

86,649

20.03.97

24001

72,152

21.03.97

21020

98,278

21.03.97

21021

94,772

21.03.97

22003

99,600

21.03.97

22004

97,004

21.03.97

22005

94,285

21.03.97

22006

92,474

21.03.97

22007

88,900

21.03.97

22008

86,200

21.03.97

24001

72,503

24.03.97

21020

98,542

24.03.97

21021

94,855

24.03.97

22003

99,782

24.03.97

22004

97,333

24.03.97

22005

94,290

24.03.97

22006

92,693

24.03.97

22007

89,014

24.03.97

22008

86,303

24.03.97

24001

73,415

25.03.97

21020

98,273

25.03.97

21021

94,770

25.03.97

22003

99,784

25.03.97

22004

97,212

25.03.97

22005

94,182

25.03.97

22006

90,967

25.03.97

22007

88,855

25.03.97

22008

86,255

25.03.97

24001

72,600

26.03.97

21020

98,248

26.03.97

21021

94,563

26.03.97

22003

99,845

26.03.97

22004

97,248

26.03.97

22005

94,264

26.03.97

22006

92,016

26.03.97

22007

88,934

26.03.97

22008

86,300

26.03.97

24001

72,495

27.03.97

22003

100,000

27.03.97

22009

83,778

28.03.97

21020

99,032

28.03.97

21021

95,190

28.03.97

22004

97,329

28.03.97

22005

94,188

28.03.97

22006

92,888

28.03.97

22007

89,682

28.03.97

22008

88,090

28.03.97

22009

84,019

28.03.97

24001

72,997

31.03.97

21020

99,106

31.03.97

21021

95,565

31.03.97

22004

97,543

31.03.97

22005

94,517

31.03.97

22006

92,818

31.03.97

22007

89,682

31.03.97

22008

87,300

31.03.97

22009

84,050

31.03.97

24001

72,900

01.04.97

21020

99,249

01.04.97

21021

95,723

01.04.97

22004

97,727

01.04.97

22005

94,517

01.04.97

22006

92,953

01.04.97

22007

90,000

01.04.97

22008

86,996

01.04.97

22009

84,330

01.04.97

24001

73,000

02.04.97

21020

99,250

02.04.97

21021

95,693

02.04.97

22004

97,963

02.04.97

22005

94,736

02.04.97

22006

93,156

02.04.97

22007

90,990

02.04.97

22008

86,940

02.04.97

22009

84,022

02.04.97

24001

73,000

03.04.97

21020

99,268

03.04.97

21021

95,807

03.04.97

22004

98,022

03.04.97

22005

94,922

03.04.97

22006

93,274

03.04.97

22007

90,558

03.04.97

22008

86,610

03.04.97

22009

83,988

03.04.97

24001

72,952

04.04.97

21020

99,308

04.04.97

21021

95,800

04.04.97

22004

98,072

04.04.97

22005

95,226

04.04.97

22006

93,486

04.04.97

22007

90,893

04.04.97

22008

86,444

04.04.97

22009

84,133

04.04.97

24001

72,857

07.04.97

21020

99,642

07.04.97

21021

95,765

07.04.97

22004

98,337

07.04.97

22005

95,438

07.04.97

22006

93,650

07.04.97

22007

91,200

07.04.97

22008

88,400

07.04.97

22009

84,131

07.04.97

24001

73,053

08.04.97

21020

99,790

08.04.97

21021

96,330

08.04.97

22004

98,380

08.04.97

22005

95,533

08.04.97

22006

93,841

08.04.97

22007

91,200

08.04.97

22008

87,490

08.04.97

22009

84,432

08.04.97

24001

73,006

09.04.97

21020

99,862

09.04.97

21021

96,427

09.04.97

22004

98,455

09.04.97

95,674

09.04.97

22006

93,827

09.04.97

22007

91,038

09.04.97

22008

87,525

09.04.97

22009

85,103

09.04.97

24001

73,208

10.04.97

21020

100,00

10.04.97

21022

91,650

11.04.97

21021

96,963

11.04.97

21022

92,066

11.04.97

22004

98,780

11.04.97

22005

95,861

11.04.97

22006

94,384

11.04.97

22007

91,498

11.04.97

22008

87,907

11.04.97

22009

84,907

11.04.97

24001

73,500

14.04.97

21021

97,091

14.04.97

21022

92,221

14.04.97

22004

99,137

14.04.97

22005

96,461

14.04.97

22006

94,535

14.04.97

22007

91,570

14.04.97

22008

88,076

14.04.97

22009

85,445

14.04.97

24001

73,561

15.04.97

21021

97,503

15.04.97

21022

92,419

15.04.97

22004

99,180

15.04.97

22005

96,521

15.04.97

22006

94,953

15.04.97

22007

91,891

15.04.97

22008

88,044

15.04.97

22009

85,768

15.04.97

24001

73,568

16.04.97

21021

97,762

16.04.97

21022

92,643

16.04.97

22004

99,514

16.04.97

22005

96,747

16.04.97

22006

95,016

16.04.97

22007

92,800

16.04.97

22008

88,395

16.04.97

22009

86,464

16.04.97

24001

73,614

17.04.97

21021

97,699

17.04.97

21022

92,528

17.04.97

22004

99,647

17.04.97

22005

96,600

17.04.97

22006

95,063

17.04.97

22007

92,009

17.04.97

22008

88,789

17.04.97

22009

86,860

17.04.97

24001

73,647

21.04.97

21021

97,836

21.04.97

21022

92,444

21.04.97

22004

99,809

21.04.97

22005

96,810

21.04.97

22006

95,262

21.04.97

22007

92,009

21.04.97

22008

86,911

21.04.97

22009

86,487

21.04.97

24001

73,671

22.04.97

21021

97,894

22.04.97

21022

92,642

22.04.97

22004

99,862

22.04.97

22005

96,854

22.04.97

22006

95,350

22.04.97

22007

92,487

22.04.97

22008

88,720

22.04.97

22009

86,314

22.04.97

24001

73,938

23.04.97

21021

98,091

23.04.97

21022

92,955

23.04.97

22004

99,893

23.04.97

22005

97,196

23.04.97

22006

95,347

23.04.97

22007

92,693

23.04.97

22008

88,859

23.04.97

22009

86,535

23.04.97

24001

74,051

24.04.97

22004

100,000

24.04.97

22010

84,320

25.04.97

21021

98,472

25.04.97

21022

93,593

25.04.97

22005

97,478

25.04.97

22006

95,920

25.04.97

22007

92,693

25.04.97

22008

89,248

25.04.97

22009

87,185

25.04.97

22010

84,823

25.04.97

24001

75,000

28.04.97

21021

98,686

28.04.97

21022

93,569

28.04.97

22005

97,687

28.04.97

22006

96,382

28.04.97

22007

93,300

28.04.97

22008

89,248

28.04.97

22009

88,132

28.04.97

22010

86,361

28.04.97

24001

76,105

29.04.97

21021

98,913

29.04.97

21022

94,045

29.04.97

22005

97,880

29.04.97

22006

96,498

29.04.97

22007

93,800

29.04.97

22008

89,248

29.04.97

22009

88,106

29.04.97

22010

86,366

29.04.97

24001

76,318

30.04.97

21021

99,023

30.04.97

21022

94,968

30.04.97

22005

98,284

30.04.97

22006

96,779

30.04.97

22007

93,800

30.04.97

22008

90,700

30.04.97

22009

89,266

30.04.97

22010

86,498

30.04.97

76,811

04.05.97

21021

99,205

04.05.97

21022

94,962

04.05.97

22005

98,202

04.05.97

22006

96,818

04.05.97

22007

94,351

04.05.97

22008

90,750

04.05.97

22009

88,884

04.05.97

22010

86,817

04.05.97

24001

76,987

05.05.97

21021

99,378

05.05.97

21022

94,962

05.05.97

22005

98,500

05.05.97

22006

96,600

05.05.97

22007

94,290

05.05.97

22008

91,176

05.05.97

22009

88,810

05.05.97

22010

86,953

05.05.97

24001

76,983

06.05.97

21021

99,433

06.05.97

21022

94,700

06.05.97

22005

98,331

06.05.97

22006

96,649

06.05.97

22007

94,290

06.05.97

22008

90,865

06.05.97

22009

89,017

06.05.97

22010

86,915

06.05.97

24001

76,880

07.05.97

21021

97,211

07.05.97

21022

94,820

07.05.97

22005

98,369

07.05.97

22006

96,859

07.05.97

22007

94,377

07.05.97

22008

91,100

07.05.97

22009

89,046

07.05.97

22010

86,797

07.05.97

24001

76,980

08.05.97

24002

73,909

12.05.97

21021

99,765

12.05.97

21022

94,939

12.05.97

22005

98,501

12.05.97

22006

95,704

12.05.97

22007

94,377

12.05.97

22008

91,260

12.05.97

22009

89,035

12.05.97

22010

88,008

12.05.97

24001

77,406

12.05.97

24002

73,923

13.05.97

21021

99,850

13.05.97

21022

95,315

13.05.97

22005

98,694

13.05.97

22006

97,399

13.05.97

22007

94,698

13.05.97

22008

90,403

13.05.97

22009

89,313

13.05.97

22010

87,685

13.05.97

24001

77,422

13.05.97

24002

74,508

14.05.97

21021

99,892

14.05.97

21022

95,445

14.05.97

22005

98,872

14.05.97

22006

97,414

14.05.97

22007

95,000

14.05.97

22008

91,750

14.05.97

22009

89,683

14.05.97

22010

87,630

14.05.97

24001

77,601

14.05.97

24002

74,762

15.05.97

21021

100,000

15.05.97

22011

86,347

16.05.97

21022

96,203

16.05.97

22005

99,396

16.05.97

22006

98,034

16.05.97

22007

95,000

16.05.97

22008

92,360

16.05.97

22009

90,972

16.05.97

22010

88,562

16.05.97

22011

87,236

16.05.97

24001

79,057

16.05.97

24002

75,700

19.05.97

21022

96,549

19.05.97

22005

99,577

19.05.97

22006

98,254

19.05.97

22007

95,650

19.05.97

22008

92,754

19.05.97

22009

91,107

19.05.97

22010

88,993

19.05.97

22011

87,497

19.05.97

24001

79,448

19.05.97

24002

77,016

20.05.97

21022

96,686

20.05.97

22005

99,765

20.05.97

22006

98,239

20.05.97

22007

95,852

20.05.97

22008

93,027

20.05.97

22009

91,487

20.05.97

22010

89,323

20.05.97

22011

87,627

20.05.97

24001

79,926

20.05.97

24002

77,002

21.05.97

21022

96,819

21.05.97

22005

99,650

21.05.97

22006

98,492

21.05.97

22007

95,850

21.05.97

22008

93,298

21.05.97

22009

91,846

21.05.97

22010

89,554

21.05.97

22011

87,971

21.05.97

24001

80,371

21.05.97

24002

77,202

22.05.97

21022

98,222

22.05.97

22005

99,804

22.05.97

22006

98,492

22.05.97

22007

96,143

22.05.97

22008

93,672

22.05.97

22009

92,145

22.05.97

22010

89,949

22.05.97

88,536

22.05.97

24001

81,219

22.05.97

24002

78,777

23.05.97

21022

97,250

23.05.97

22005

99,811

23.05.97

22006

98,629

23.05.97

22007

96,232

23.05.97

22008

92,804

23.05.97

22009

92,625

23.05.97

22010

90,014

23.05.97

22011

88,937

23.05.97

24001

81,434

23.05.97

24002

79,200

26.05.97

21022

96,616

26.05.97

22005

99,803

26.05.97

22006

98,649

26.05.97

22007

96,232

26.05.97

22008

93,498

26.05.97

22009

92,338

26.05.97

22010

89,902

26.05.97

22011

88,581

26.05.97

24001

79,606

26.05.97

24002

79,001

27.05.97

21022

96,645

27.05.97

22005

99,890

27.05.97

22006

98,094

27.05.97

22007


27.05.97

22008

93,545

27.05.97

22009

91,260

27.05.97

22010

89,563

27.05.97

22011

88,897

27.05.97

24001

81,543

27.05.97

24002

78,102

28.05.97

21022

96,287

28.05.97

22005

99,869

28.05.97

22006

98,338

28.05.97

22007


28.05.97

22008

93,475

28.05.97

22009

91,221

28.05.97

22010

89,391

28.05.97

22011

88,233

28.05.97

24001

81,067

28.05.97

24002

78,200

29.05.97

22005

100,000

29.05.97

22012

87,303

30.05.97

21022

96,982

30.05.97

22006

98,667

30.05.97

22007

95,814

30.05.97

22008

93,096

30.05.97

22009

90,537

30.05.97

22010

89,430

30.05.97

22011

88,050

30.05.97

22012

87,858

30.05.97

24001

80,994

30.05.97

24002

77,325



Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!