РУБРИКИ |
Межбанковский клиринг |
РЕКЛАМА |
|
Межбанковский клирингМежбанковский клирингБелорусский государственный университет Факультет прикладной математики и информатики Кафедра математического моделирования и анализа данных ЯКИМОВИЧ АЛЕКСЕЙ СЕРГЕЕВИЧ МЕЖБАНКОВСКИЙ КЛИРИНГ Дипломная работа студента 5 курса “ Допустить к защите “ Руководители __ ___________ 1998 г. Рощупкин Владимир Васильевич - начальник управления разработки платежных систем на основе пластиковых карточек ГП БМРЦ Рецензент Лобач Виктор Иванович - доцент кафедры ММАД, кандидат физ. - мат. наук Минск 1998 Введение В соответствии с утвержденными планами модернизации платежной системы - системы расчетов по срочным и крупным платежам на валовой основе в режиме реального времени с использованием электронных сообщений, - системы расчетов по прочим (мелким) платежам на клиринговой основе, - системы управления очередями платежных сообщений банков. Данный дипломный проект непосредственно связан с одной из наиболее
перспективных и совершенно новой для нашей страны частью этого проекта, а
именно, системе клиринговых расчетов. Рассматриваются общие механизмы
функционирования реальных клиринговых систем и освещаются принципы создания
и развития модели клиринговой системы Республики Беларусь в рамках
создаваемой в стране автоматизированной системы межбанковских расчетов BIS. 1. Межбанковский клиринг 1. Понятие клиринга и его назначение Суть клиринговой формы расчетов состоит в следующем. Клиринг (англ. clearing) представляет собой систему регулярных безналичных расчетов, основанную на зачете взаимных требований и обязательств юридических и физических лиц за товары (услуги) и ценные бумаги. Клиринг представляет собой, в самом общем виде, систему безналичных расчетов за товары и услуги, основанную на зачете взаимных требований и обязательств и использующуюся банками в целях снижения потребности в оборотных средствах и упрощения обмена платежами. Место клиринговых операций в системе BIS показано на Рис. 1.1. Рис. 1.1. Структура АС МБР BIS. Как известно, расчеты по платежам могут производиться либо на валовой, либо на чистой основе. В первом случае расчеты по каждой сделке осуществляются отдельно, во втором – банки, участвующие в производстве платежей, дают возможность требованиям и обязательствам накопиться на протяжении определенного периода времени – лага клиринга (проблема оптимизации лага клиринга также исследуется в данном дипломном проекте). В конце данного периода производятся расчеты только по взаимно зачтенным обязательствам. Такой взаимозачет сумм кредиторской и дебиторской задолженности может иметь место между двумя сторонами (двусторонний взаимозачет) и между тремя и более сторонами (многосторонний взаимозачет). Когда два банка имеют большие объемы общих платежей, клиринг и урегулирование межбанковских расчетов часто осуществляется на основе двустороннего соглашения: банки договариваются о взаимозачете посланных и полученных платежных поручений (расчете чистой суммы) и об осуществлении в определенное время взаимных расчетов по чистой стоимости платежей. Этот процесс носит название двустороннего взаимозачета. Если в процессе взаимозачета участвуют три банка и более, то этот процесс называется многосторонним взаимозачетом. Агент группы, участвующей во взаимном погашении, подсчитывает чистую позицию каждого члена клиринговой системы в конце цикла, с учетом платежей, отправленных им другим банкам, и платежей, полученных от остальных участников системы. В результате каждый банк перечисляет лишь свой чистый остаток по счету со всеми другими участниками. После проведения взаимозачета сумма обязательств всех участников должна равняться нулю. Функции учета взаимных обязательств участников клиринговой системы выполняет клиринговая палата, которая является формальным или неформальным соглашением между банками об обмене платежными инструментами в определенном месте и в определенное время. Банки-члены клиринговой палаты имеют право и возможность обмениваться платежными инструментами, как в бумажном, так и в электронном виде. Остатки, образовавшиеся в результате такого обмена, должны быть оплачены. Расчетный агент приступает к окончательному расчету по клирингу. Роль данного учреждения состоит в том, чтобы в ходе взаимозачета получать платежи по расчетам от нетто-дебиторов и переводить средства на счета нетто- кредиторов. Кроме того, расчетный агент может выполнять и другие банковские операции, например, предоставлять кредиты для финансирования расчетов и хранить залог для обеспечения обязательств по расчетам. Расчетный агент назначается или избирается членами клиринговой палаты. Процесс взаимозачета обязательств сторон-участников клиринговой системы носит название клирингового сеанса. Он проводится клиринговой палатой несколько раз в течение дня в заранее установленное время и служит для исчисления промежуточного или итогового сальдо каждого члена палаты. К осуществлению клиринга участников вполне объективно побудил еще в Концентрация платежей при клиринге позволяет значительно уменьшить
баланс платежей и общую сумму, затрачиваемую оборачивающихся платежных
средств, расширяет сферу безналичного оборота и облегчает управление им. Клиринг в банковской сфере может проводиться как внутри страны, так и между странами (международный валютный клиринг). Достоинством банковских клиринговых расчетов является и то, что в большинстве стран коммерческим банкам разрешено использовать свои клиринговые балансы в центральном банке для выполнения резервных требований, что, безусловно, выгодно коммерческим банкам. Организация межбанковского клиринга в каждой стране зависит от исторических особенностей развития банковской системы, модели ее построения, степени концентрации и централизации банковского дела, политики центрального банка в области денежно-кредитного регулирования экономики. 2. Зарубежный опыт Таким образом, преимущества клиринговой системы расчетов очевидны. Широкие масштабы межбанковского клиринга за рубежом обусловлены
практической невозможностью осуществить все возрастающий безналичный
платежный оборот посредством индивидуальных расчетов между кредитно-
финансовыми институтами. Например, в ФРГ безналичный платежный оборот
составил в 1960г. 1.3 трлн. марок, в 1970г. – 4.5 трлн. марок, а в 1980г. – Организация межбанковского зачета различна в зависимости от того, являются ли банки, участвующие во взаимных зачетах, самостоятельными юридическими лицами или же они входят в систему одного и того же банка. В первом случае банки обычно обмениваются между собой чеками, векселями и другими долговыми обязательствами клиентов, доплачивая лишь разницу в специально создаваемых для расчетов организациях. Это и есть собственно межбанковский клиринг (клиринг в широком смысле). Во втором случае, т.е. при внутрибанковском клиринге (межбанковском клиринге в суженном его понимании) все расчеты, связанные с уплатой денег клиентом одного банковского филиала клиенту другого филиала того же банка при помощи различных расчетно-платежных документов (чеков, жиро-чеков и др.), производятся отнесением этих расчетов на правление (головную контору) данного банка. Обычно клиринговый отдел головной конторы и сводит все расчеты филиалов собственной системы. Соответственно разницы, подлежащие уплате или получению филиалами, не погашаются наличными деньгами, а отражаются в пассивной или активной части бухгалтерского баланса филиалов, либо как долг филиала правлению, либо как долг правления соответствующему филиалу. Проблема организации внутрибанковского клиринга особенно актуальна для крупных банковских монополий с широко разветвленной филиальной сетью. В зависимости от сферы применения межбанковский клиринг может быть:
локальным – между банками какого-либо региона, либо между банками
определенной банковской группы и (или) между филиалами одного и того же
банка; и общенациональным – в пределах всей страны. В свою очередь
специфика указанных видов межбанковского клиринга проявляется в способах их
проведения. Исходя из последнего критерия, можно выделить совершаемые
клиринги: через специальные межбанковские организации – расчетные Широкое распространение за рубежом получили клиринговые палаты,
основной функцией которых является зачет денежных требований и
обязательств. К настоящему времени деятельность большинства расчетных палат
автоматизирована. Прежде всего, нужно отметить осуществление этими палатами
локального клиринга расчетно-платежных документов. Наибольшую роль
расчетные палаты играют в Великобритании, США и других странах, где развито
чековое обращение. Особое место среди них занимает Лондонская расчетная
палата, через которую проходит ежедневно 7 млн. чеков более чем на 27 млн.
фунтов стерлингов, а также 2,35 млн. других платежей на сумму 790 млн.
фунтов стерлингов. К примеру, в США каждый федеральный резервный банк (их
всего 12) является одновременно и расчетной палатой своего округа. Всего в Сущность расчетов через клиринговую палату состоит в следующем. Если же банк не является членом клиринговой палаты, то составленные
расчетные ведомости вместе с чеками и векселями представляются в
эмиссионный банк, который в этом случае выполняет функции расчетной палаты. К локальному клирингу можно отнести и широко распространенные в ряде
стран западной Европы (Австрии, Венгрии, Франции, ФРГ, Швейцарии) так
называемые GIRO-системы (жироцентрали). Наиболее типичны они для ФРГ. Для совершения международных платежей ряд коммерческих банков
прибегает к услугам международных автоматизированных систем. Наиболее
крупной и известной среди них является СВИФТ (SWIFT – Society for Worldwide 3. Деятельность клиринговых палат Рассмотрим более детально все аспекты возникновения и существования основного элемента механизма многостороннего межбанковского взаимозачета – клиринговой палаты. 1.3.1. Категории клиринговых палат. В большинстве стран основным средством, используемым при урегулировании финансовых обязательств, а также приобретения товаров и услуг, являются наличные деньги. Однако в процентном отношении они составляют относительно небольшую часть от общей суммы платежей. На долю современных инструментов безналичного оборота приходится значительно меньшее количество платежей, но на значительно большие суммы. В результате широкого распространения таких инструментов финансовые круги столкнулись с серьезной проблемой, связанной с возникновением определенных трудностей при осуществлении расчетов. При использовании наличных денег окончательный расчет происходит незамедлительно. Безналичным же формам платежей свойственны задержки. Важнейшую роль в сокращении интервалов между платежами и расчетами стали играть клиринговые палаты. Их можно разделить на три категории: - местные - региональные - национальные В состав местных клиринговых палат входят учреждения, обслуживающие
население данного района. Сюда относятся небольшие местные банки,
сберегательные банки, ссудно-сберегательные ассоциации, кредитные союзы,
местные отделения банковских групп, а также, возможно, небольшие
независимые организации, обрабатывающие платежи от имени третьих сторон. В состав членов региональных клиринговых палат входят, в основном, крупные региональные банки, крупные независимые организации, обрабатывающие платежи третьих сторон, общенациональные банки, а также, в некоторых случаях, крупные местные или сберегательные банки. Количество членов и периодичность расчетов могут обуславливать необходимость использования сотрудников на основе полного рабочего дня и постоянной материальной базы для выполнения административных функций, связанных с расчетами. Расходы на функционирование таких систем покрываются за счет взимания платы с участников и ежегодных членских взносов. Членами национальных клиринговых палат, как правило, являются
крупнейшие и наиболее передовые в техническом отношении банки. Обычно такие
системы используются для осуществления платежей на крупные суммы. 1.3.2. Возникновение клиринговых палат. Большинство клиринговых механизмов возникает, когда два или несколько кредитных учреждений в одном и том же городе или районе считают выгодным обмениваться платежными инструментами. Затем образуется двусторонняя рабочая группа или комиссия, которая проводит предварительное исследование с целью анализа жизнеспособности механизма клиринговой палаты. При этом основное внимание уделяется определению возможного количества платежных поручений, которые являются объектом взаимозачета. Если в результате такого исследования будет сделан вывод о выгодности работы клиринговой палаты, то организаторы приступают к опросу других учреждений относительно их заинтересованности в участии. Один из важнейших вопросов, возникающих в процессе организации клиринговой палаты, связан с составом ее членов. В зависимости от ряда факторов члены могут быть отнесены к одной или двум категориям. При единой категории членства все участники рассматриваются в качестве “постоянных членов”, имеющих право голосовать и вносить поправки в уставные нормы. В случае же распределения по двум категориям, ко второй категории относятся так называемые “ассоциированные члены”, которые могут участвовать в процессе расчетов, но не имеют права голоса. Клиринговые палаты, занимающиеся расчетами только по платежным поручениям, обычно относят всех участников к категории членов с правом голоса. Это объясняется тем, что изменение правил или уставных норм затрагивает всех членов клиринговой палаты, в связи с чем каждый из них должен иметь возможность представлять свои интересы. Необходимость введения категории ассоциированных членов возникает в
тех случаях, когда некоторым участникам клиринговой системы потребовалось
осуществить вложения в материально-технические ценности, имеющие жизненно
важное значение для деятельности клиринговой палаты, или когда такие
ценности находятся в их собственности. В качестве примера можно привести
межбанковскую телекоммуникационную коммутационную сеть. Для ее создания и
функционирования могут потребоваться капиталовложения нескольких банков. В зависимости от уровня платежеспособности таких учреждений для них устанавливаются максимально допустимые лимиты на сумму платежей, расчеты по которым производятся в рамках одного расчетного цикла. Это хотя и не устраняет риск полностью, но снижает уровень потенциальных потерь, которые могут возникать в любой момент времени. Механизм минимизации рисков предусматривает также обязательное внесение залога участниками системы взаимозачета на счет какой-либо третьей стороны или надежного в финансовом отношении члена клиринговой палаты. При этом разрешается лишь расчеты на сумму, не превышающую размера внесенного залога. Последний и наименее желательный вариант – отказ в допуске к работе клиринговой палаты для тех учреждений, с которыми связан повышенный риск. 1.3.3. Клиринговые расчеты. Клиринговые палаты проводят расчеты по операциям как на основе дебетования, так и на основе кредитования. По мере развития альтернативных форм платежей доля платежей на основе кредитования (особенно электронных) резко возросла. Сюда относятся такие операции, как выплата заработной платы, процентные платежи по долговым обязательствам, платежи за услуги и т.п. При использовании в операциях документов на бумажных носителях клиринговыми палатами обычно проводится разграничение дебетовых и кредитовых платежных инструментов. Однако при осуществлении платежей на электронной основе дебетовые и кредитовые платежные инструменты нередко не разграничиваются и расчеты по ним осуществляются одновременно. Возможны два варианта окончательного расчета по счетам при многостороннем чистом клиринге: - классический вариант - вариант, основанный на методе “ авансирования ” Классический вариант предусматривает урегулирование рассчитанного
клиринговой палатой итогового сальдо каждого из ее членов по книгам Второй вариант окончательного расчета по счетам основывается на методе 1.4. Виды финансового риска Участники клиринговых систем подвергаются нескольким видам финансового риска: - кредитный риск - риск неликвидности - системный риск По наступлению срока погашения задолженности партнер по сделке может
не выполнить своего обязательства и никогда не будет в состоянии выполнить
его в полном объеме (пассивы превышают активы). Нередко такие проблемы
связаны с банкротством партнера, но могут существовать и другие причины. [pic] (1.1), а также коэффициент краткосрочной задолженности (ККЗ) и коэффициент покрытия общей задолженности (КПОЗ): [pic] (1.2) [pic] (1.3) Еще одним видом финансового риска является риск неликвидности. По наступлении срока платежей по расчетам они могут быть не произведены, даже, если в конечном счете один или большее число партнеров будут обладать достаточными активами и собственным капиталом для того, чтобы произвести такие платежи (несоответствие структур пассивов и активов). Например, временная неспособность превратить активы в наличные средства, различные операционные затруднения или неспособность банков-корреспондентов выполнить свои функции по расчетам – все это создает проблемы ликвидности. Несмотря на то, что многосторонняя система взаимозачета уменьшает общую нуждаемость участников в ликвидности, она концентрирует давление, связанное с ликвидностью, в конце цикла обработки, когда участники, имеющие задолженность, должны одновременно произвести расчеты. Для контроля за этим видом риска наиболее часто исследуются такие показатели, как коэффициент ликвидности (КЛ), где [pic] (1.4) (оптимальное значение – 2 и выше) и так называемый “кислотный тест” или коэффициент лакмусовой бумажки (КЛБ, оптимальное значение 1), где [pic] (1.5) Использование платежных систем и участие в финансовых рынках могут
быть также сопряжены и с системным риском, связанным с неспособностью
одного из участников выполнить свои обязательства, что приводит к нарушению
функционирования других участников, начиная цепную реакцию (так называемый [pic] (1.6) [pic] (1.7) Значения этих показателей должны быть 1,5 и выше. 1.5. Взаимозачеты и связанные с ними риски В зависимости от характеристик риска различные системы взаимозачета можно разделить на четыре вида, которые отличаются друг от друга правовой природой подлежащих уплате чистых сумм и наличием основного партнера. К числу этих видов относятся: - двусторонний зачет позиций - двусторонний взаимозачет путем новации - многосторонний зачет позиций - многосторонний взаимозачет позиций путем новации и замещения. 1.5.1 Двусторонний зачет позиций. В некоторых финансовых центрах традиционно используются различные неофициальные формы валютного взаимозачета. К этим формам, которые обычно применяются в целях снижения числа осуществляемых партнерами взаимных платежей, относится и двусторонний зачет позиций. Например, в день зачисления средств по какой-нибудь группе валютных контрактов пары банков- партнеров могут определить чистые суммы, подлежащие уплате друг другу, и осуществить двустороннее урегулирование обязательств по контрактам путем оплаты чистых сумм. Однако правовые последствия такого взаимозачета обычно четко не определены, поэтому возникает большая неопределенность относительно юридического обязательства выплатить валютные или чистые суммы в том случае, если партнер испытывает финансовые трудности. В связи с этим, как правило, принимается условие, что в случае возникновения таких трудностей, стороны продолжают нести ответственность за уплату валовых сумм. Урегулирование чистых позиций сокращает число платежей по расчетам,
которые должны быть произведены партнерами (а следовательно, и число
возможных ошибок), и тем самым уменьшает расходы, но лишь в том случае,
если стоимость услуг не превышает экономию, достигнутую благодаря его
применению. Теоретически, при взаимозачете позиций кредитный риск остается
таким же, как и при отсутствии взаимозачета, поскольку валовые
обязательства, на основе которых определяется чистая сумма, не погашаются. 1.5.2. Двусторонний взаимозачет путем новации. Двусторонний взаимозачет путем новации (двусторонний взаимозачет обязательств) осуществляется на основе заключенного между двумя банками соглашения, согласно которому в будущем о истечению каждого срока зачисления средств один из этих банков должен будет перевести другому сумму одну текущую сумму в той валюте, в которой они проводят операции. Это достигается путем зачета обязательств по второй и каждой последующей сделок с обязательствами по первой сделке для данного срока зачисления средств и данной валюты, в результате чего заключается новый контракт на чистые суммы. Такой процесс новации может быть осуществлен автоматически в течение операционного дня в тот момент, когда банки обмениваются соответствующими подтверждениями: в двустороннем соглашении может быть предусмотрено, что в момент сверки таких подтверждений обязательства по всем предыдущим контрактам погашаются путем новации, и эти контракты заменяются новым контрактом. Такой процесс может повторяться неограниченное число раз до наступления определенного расчетного дня. В двустороннем соглашении о взаимозачете путем новации можно также предусмотреть формирование из новых чистых сумм, подлежащих уплате в каждую отдельную будущую дату в каждой валюте, единого потока платежей, которые должны быть уплачены согласно основному контракту между двумя банками. В случае, если такое соглашение будет подтверждено, ни один из ликвидаторов какого-либо из этих банков не сможет выбирать валюты или платежи, подлежащие получению или переводу в отдельные будущие даты. Услуги по двустороннему взаимозачету путем новации могут ограничиваться заключением типовых контрактов на осуществление взаимозачета или предоставлением линий связи и систем бухгалтерского учета, которые дают возможность участникам подбирать соответствующие сделки; подтверждать, их и регистрировать новые суммы чистых обязательств. Применение систем двустороннего взаимозачета путем новации обеспечивает такие же выгоды, как и использование систем двустороннего взаимозачета позиций. Однако двусторонний взаимозачет обязательств сопряжен со значительно меньшим кредитным риском, чем взаимозачет позиций, так как дает возможность снизить кредитный риск, связанный с партнером, с валовой суммы до чистой суммы для каждой отдельной будущей даты. Как правило, двусторонний взаимозачет путем новации также приводит к снижению риска ликвидности, поскольку из подлежащих уплате чистых сумм нельзя восстановить отдельные обязательства на валовой основе. Однако фактическое уменьшение кредитного риска целиком и полностью зависит от юридической исполнимости нового контракта на чистые суммы, заменившего собой первоначальные контракты на валовые суммы, которая является гарантией того, что, в случае прекращения деятельности одного из партнеров, первоначальные контракты не будут избирательно возобновлены ликвидатором. 1.5.3. Многосторонний взаимозачет позиций. В рамках многосторонней системы, в которой обеспечивается специальная связь, и используются специальные формы бухгалтерского учета, обычно осуществляется многосторонний взаимозачет позиций. В учреждении, являющемся агентом по клирингу или расчетам, могут открываться "клиринговые счета" для участников, этот агент хранит средства участников и может предоставлять им кредиты для облегчения расчетов по сделкам. В данном случае возможным является также использование единого основного клирингового счета и других механизмов для производства расчетов. Осуществление многостороннего взаимозачета позиций происходит в несколько этапов: сначала подсчитываются чистые суммы, которые должен получить каждый участник от всех остальных членов клиринговой группы и которые он должен им уплатить, а затем производятся расчеты путем перевода соответствующих денежных средств нетто- дебиторами нетто-кредиторам. Если возникают неразрешимые проблемы с урегулированием обязательств по сделке в связи с тем, что банк, являющийся нетто-должником, не в состоянии оплатить свои платежи, правила системы нередко требуют или позволяют аннулировать платежи участнику (участникам), испытывающему (испытывающим) такие затруднения, и платежи, причитающиеся с этого участника (участников), с тем, чтобы определить многосторонние сальдо для остальных участников, по которым можно в конечном счете рассчитаться на следующий операционный день после первоначально запланированного расчетного дня. В абстрактном случае многостороннего взаимозачета позиций все финансовые обязательства на валовой основе или платежные поручения остаются невыполненными до производства окончательного расчета. Поэтому в рамках данной организационно-правовой формы взаимозачета существует такой же кредитный риск, как и при отсутствии взаимозачета. В системах многостороннего взаимозачета позиций одну из наиболее серьезных проблем представляет риск неликвидности. Причины этого объясняются методом, использующимся для вычисления многостороннего чистого обязательства каждого участника. В случае, если после осуществления зачета двусторонних кредитовых и дебетовых сальдо с получением единой чистой суммы многостороннего обязательства, какой-то участник не в состоянии урегулировать свое сальдо, обычно производится пересчет многосторонних позиций, восстанавливающий платежи или обязательства. После этого в рамках системы многостороннего взаимозачета уже невозможно компенсировать двусторонние "дебетовые сальдо" двусторонними "кредитовыми сальдо", причитающимися остальным участникам со стороны неплательщика. В результате чего значительно возрастают многосторонние чистые обязательства, и, следовательно, потребности в ликвидных средствах у тех участников системы, которым неплательщик должен какие-то чистые суммы. В системах многостороннего взаимозачета позиций могут также возникать и более общие проблемы с ликвидностью, причиной которых становятся чаще всего операционные затруднения. Например, учреждение, обслуживающее участников системы многостороннего взаимозачета позиций в качестве расчетного агента, может не желать или быть не в состоянии производить ежедневные платежи по расчетам участникам, которые являются нетто- кредиторами, до тех пор, пока оно не получит все платежи от нетто- дебиторов. Любая задержка с производством платежа каким-либо нетто- дебитором может вызвать проблемы у всех нетто-кредиторов и, возможно, неблагоприятно сказаться на их способности урегулировать свои платежи на других рынках или в рамках других систем. В случае неплатежей кого-либо из участников многостороннего
взаимозачета позиций особенно значительным может стать системный риск
неликвидности. После пересчета многосторонних сальдо каждый (оставшийся)
участник может быть должен большую сумму или может получить меньшую сумму. 1.5.4. Многосторонний взаимозачет путем новации и замещения. Хотя в принципе взаимозачет путем новации представляет собой двусторонний процесс, его можно использовать и для многосторонних расчетов между членами более крупной группы банков. В этом случае должна быть использована третья сторона (например, своего рода клиринговая палата) для принятия на себя нового чистого обязательства в качестве партнера каждого банка-участника. Такой процесс называется новацией и замещением. В качестве примера многостороннего взаимозачета путем новации и замещения можно привести гипотетическую клиринговую палату или компанию, занимающуюся расчетами по валютным операциям. В роли такого учреждения, предоставляющего услуги по взаимозачету, могла бы выступать национальная клиринговая палата, осуществляющая для своих членов имеющий юридическую силу многосторонний зачет обязательств по всем их валютным контрактам с другими участниками. При представлении такого контракта парой участников в клиринговую палату эта палата будет выступать в качестве партнера по отношению к каждому из этих своих членов и будет погашать их взаимные обязательства. Более того, у клиринговой палаты будет существовать текущая чистая позиция по соответствующим валютам и по датам зачисления средств по отношению к каждому участнику. В результате, для данной группы контрактов, переданных для взаимных расчетов, будет определен ряд чистых сумм (равных многостороннему сальдо каждого участника по отношению к группе участников взаимозачета в целом), причитающихся клиринговой палате от каждого участника им наоборот. В качестве основного партнера клиринговая палата возьмет на себя как кредитный риск, так и риск неликвидности. В то же самое время ее члены будут нести кредитный риск и риск неликвидности по отношению к клиринговой палате, а не к своим партнерам по операциям. Таким образом, клиринговой палате придется управлять своей кредитовой позицией по отношению к каждому члену, а также риском неликвидности, связанным с расчетами. Важнейшим элементом, способствующим тому, чтобы кредитный риск, существующий при использовании клиринговой палаты, был меньше кредитного риска, возникающего при двустороннем взаимозачете путем новации, является ряд соглашений, касающихся многостороннего взаимозачета путем новации и замещения. При юридической исполнимости договоренностей о многостороннем взаимозачете такое снижение риска для отдельного участника будет иметь место потому, что данная система взаимозачета даст возможность использовать двусторонние дебетовые сальдо каждого участника по отношению к другим для компенсации двусторонних кредитовых сальдо по той же валюте, в результате чего уменьшится чистая кредитовая позиция. Однако многосторонний взаимозачет не изменит кредитовую позицию участников, не имеющих двусторонних дебетовых сальдо. Многосторонний взаимозачет путем новации и замещения обладает потенциальной возможностью большего снижения риска неликвидности по сравнению с любой другой формой взаимозачета. При такой системе взаимозачета на данную дату зачисления средств чистые суммы задолженности по сравнению с двусторонним взаимозачетом снижаются или остаются неизменными для некоторых участников. Это снижает риск неликвидности для отдельных участников, для участников клиринга в целом и, возможно, для других финансовых рынков. С другой стороны, при использовании клиринговых палат требуется
централизация платежей по расчетам: все такие платежи производятся между
клиринговой палатой и отдельными участниками. В подобном случае
неспособность одного члена урегулировать свою позицию может привести к
нехватке наличности в одной или нескольких валютах, необходимых для
производства расчетов. Риск неликвидности для остальных участников зависит
в этом случае от способности клиринговой палаты мобилизовать наличность,
необходимую для завершения расчетов. 1.6. Управление рисками в системах взаимозачета Риск, возникающий в связи с осуществлением взаимозачета, может быть урегулирован несколькими путями. Центральный банк, выступая в роли учреждения, осуществляющего контроль за бесперебойным функционированием системы платежей, представляет собой одного из основных кредиторов и является расчетным агентом при проведении большей части клиринговых операций, что обуславливает и его решающую роль в определении принципов управления факторами риска и обеспечении того, чтобы каждый из участников клиринговой системы следовал этим принципам. Кроме того, немаловажную роль в управлении рисками играют и сами клиринговые палаты, определяющие порядок обслуживания кредитных учреждений, деятельность которых сопряжена с высокой степенью риска, а также осуществляющие урегулирование других проблем, связанных с различными видами финансового риска. Для управления рисками клиринговых платежей обычно используются следующие методы: - сокращение расчетного периода - двусторонние и многосторонние лимиты - механизмы распределения убытков - неокончательный характер расчетов в рамках клиринговых систем и аннулирование результатов клирингового сеанса. Сокращение расчетного периода Чем короче расчетный период, тем меньше риск неуплаты по расчетам и связанный с ним системный риск. В качестве дополнительного механизма применяются средства контроля в масштабе реального времени, которые помогают выявлять на ранней стадии потенциальные проблемы и облегчают управление ликвидными средствами, особенно в тех случаях, когда возможен централизованный контроль сальдо всех участников. Двусторонние и многосторонние лимиты Одним из методов управления рисками в клиринговых системах является
использование двусторонних или многосторонних верхних лимитов сальдо
участников, которые автоматически ограничивают потенциальный риск
межбанковских расчетов в рамках системы. Такие верхние лимиты часто
определяются как сумма, кратная величине первичного капитала банков, а
также основываются на оценке каждым учреждением своей кредитоспособности. Механизмы распределения убытков Наиболее твердой гарантией от связанных с осуществлением взаимозачета
рисков являются механизмы, призванные обеспечить возможность проведения
расчетов в рамках клиринговой системы даже в том случае, когда ее отдельные
участники не в состоянии урегулировать свои обязательства. Обычно такие
механизмы предусматривают объединение риска неликввдности и распределение
неурегулированных сальдо в соответствии с заранее установленным порядком. Неокончательный характер расчетов в рамках клиринговых систем и аннулирование результатов клирингового сеанса Своевременность расчетов в рамках клиринговых систем зависит от способности каждого из участников выполнить свои многосторонние обязательства, принятые в результате операций, проведенных в определенный период (в течение операционного дня). Типичной процедурой, применяемой при возникновении просрочек и неплатежей в процессе проведения расчетов, является использование положения о неокончательном характере расчетов и возможности отзыва платежей участнику, испытывающему подобные затруднения, и платежей, причитающихся с этого участника. В этом случае некоторые или все платежные операции, произведенные в рамках системы за данный период времени, аннулируются, а многостороннее сальдо для остальных участников пересчитывается. Эта процедура перемещает давление, связанное с недостатком ликвидности и потенциальными убытками, с одного на всех участников системы взаимозачета. 2. Оптимизация лага клиринга 1. Постановка задачи Республика Беларусь сейчас модернизирует автоматизированную систему межбанковских расчетов. Это ставит вопрос четкого выделения возможных их форм и оптимальных параметров. Ясность в формах расчетов достигнута, а в параметрах – нет. Проблема выбора оптимальных параметров расчетов не решена в системе, и данная часть дипломной работы посвящена выбору одного из них – лага клиринга. В зависимости от скорости обработки платежного документа есть два полюса форм оплаты, поступающих в банк платежных документов: валовая оплата и клиринг. При валовой оплате платежные документы оплачиваются индивидуально по
мере их поступления. Идеал валовой оплаты – оплата в темпе поступления
документов или, выражаясь по другому, в реальном времени (имеется в виду
время поступления). Такая форма называется RTSG (Real Time Gross Settlement Цель валовой оплаты – скорость оплаты. Модуль автоматизированной системы межбанковских расчетов, отвечающий за валовую оплату в реальном времени - это модуль BIS (Belarus Interbank Settlement). При клиринге оплата поступившего документа специально откладывается и
формируется множество неоплаченных платежных документов (платежный пакет). Лаг клиринга – отрезок времени, в течение которого формируется пакет платежных документов, и после истечения которого выносится решение о клиринговой оплате. Фактор лага проявляется двояко и в противоположных тенденциях: 1. Чем больше лаг клиринга, тем больше стоят в неподвижности деньги клирингового пакета. Значит, имеем отвлеченные средства и, следовательно, имеем потенциальные потери банка-получателя этих средств. Ясно, что отвлечение прямо пропорционально лагу клиринга. 2. Чем меньше лаг клиринга, тем больше требуется ликвидных средств для проведения совокупных расчетов. Значит, имеем отвлечение средств и, следовательно, имеем потенциальные потери банка-плательщика. Ясно, что при стремлении лага к нулю отвлечение достигает какого-то максимума V, а при стремлении лага к бесконечности отвлечение достигает какого-то минимума I. Итак, происходит конкуренция двух факторов: 1) потенциальная потеря от замораживания средств в клиринге, которая пропорциональна времени замораживания и 2) потенциальный доход от уменьшения средств обеспечения расчетов, которое растет с ростом лага клиринга. Интегральный эффект клиринга есть разность этих двух величин. Значит,
и слишком малый лаг клиринга плох, и слишком большой лаг клиринга плох. Задача состоит в том, чтобы определить лаг клирингового цикла, при котором интегральный эффект клиринга будет максимальным. 2.2. Формализация задачи Формула расчета убытка от применения клиринга вследствие простаивания денег клирингового пакета имеет следующий вид: [pic], где [pic] – интенсивность оборота, сколько средств проходит в валовых расчетах за единицу времени – за день. Эта формула показывает отвлечение вследствие клиринговой неподвижности средств платежного пакета, как следствие клиринга Средства [pic] были бы пущены в оборот и принесли бы выгоду банкам-получателям средств. Итак, имеем здесь дело с потенциальным убытком. Предполагая равномерное поступление платежей, имеем простой средств в размере [pic] в течение времени [pic], т.е. [pic] . Теперь подсчитаем доход: на оплату требуется меньше средств, чем при валовой оплате, а сэкономленные средства пускаются в оборот и приносят доход. Таким образом имеется возможность построить математическую модель: Пусть, [pic] - средства, необходимые для поддержания клиринга, [pic] – лаг клиринга. Накладываются следующие естественные условия: 1) При [pic] (2.1), где [pic] – средства, обслуживающие валовые расчеты. 2) При [pic] (2.2), где [pic] – средства, обслуживающие «экспорт-импорт» клиринговой системы; 3) [pic] есть функция от [pic]. Найдем вид функции [pic], основываясь, как говорят в физике, на
феноменологическом подходе. Т.е. мы не привлекаем никаких «микродеталей»
типа статистики потоков между участниками и т.д., а основываемся только на
самых общих «внешних» соображениях. Внутренний причинный механизм денежных
потоков остается черным ящиком. Воспользуемся однородностью времени. Все
возможные лаги клиринга образуют ось [pic] – ось лага клиринга. Очевидно,
что ни один момент времени [pic] не должен быть выделен: если у нас был лаг
клиринга [pic] и мы переходим к [pic], то все равно, как мы считаем [pic] –
или отталкиваясь от 0, беря за основу [pic], или отталкиваясь от [pic],
беря за основу [pic]. Графическая интерпретация изложенного дана на Рис. Итак, [pic] однородно и, значит, имеем своего рода принцип относительности: закон не должен зависеть от системы координат. В применении к нашему случаю это означает, что формула О должна давать ковариантную (не изменяющую вида) зависимость от [pic]: сдвиг по оси [pic] не должен менять вида формулы, если пересчитать все к новому началу координат – переход от [pic] к [pic] = [pic] - а и от [pic]к [pic] должен удовлетворять условию [pic]. Или, по другому, [pic]. Такое функциональное уравнение характерно только для экспоненты. Рис.2.1. Графическая интерпретация «однородности» времени. В дифференциальном виде экспонента характеризуется соотношением: [pic] (2.3), где v – какой-то коэффициент пропорциональности. Условия (1) - (3) дают единственное решение: [pic] (2.4) Проверяем выполнение свойства [pic]: Данная математическая модель подсчета средств, необходимых для
поддержания клиринга, была разработана и протестирована на адекватность и
устойчивость в американской клиринговой системе CHIPS, кроме того,
адекватность данной модели подтверждена проверкой на отечественных
статистических данных по межбанковским расчетам в информационно-
аналитическом управлении Белорусского Межбанковского Расчетного Центра Используя этот результат, подсчитаем экономию вследствие клиринговости. Итак, [pic] – реальное отвлечение вследствие «валовости» (об этом
говорит индекс параметра О), т. е. расчетов через конечный отрезок времени [pic] (2.5) Параметр [pic] характеризует импортную незамкнутость системы: если бы пользователи клиринга были тесно связаны только между собой, то [pic]. Для страны в целом – это средства оплаты экспорта-импорта и, значит, [pic] можно определить из данных статистики, если клиринг охватывает всю республику. Для группы банков – это обслуживание входа-выхода средств вне этой группы. Экономия вследствие клиринговости равна: [pic] Доход от такой экономии пропорционален рыночной процентной ставке Подсчитаем интегральный эффект от клиринга. Эффект - разность дохода и убытка: [pic] (2.6) Оптимизация этой функции равносильна оптимизации следующей функции: [pic] (2.7) 2.3. Решение задачи и его анализ При каком-то значении [pic] экономия достигает максимума. Для определения этого значения возьмем производную функции [pic] по [pic] и приравняем ее к нулю. Вычисляем производную: [pic] [pic] Теперь решаем уравнение: [pic] [pic] [pic] Для того, чтобы убедиться, что найденная точка является точкой
глобального максимума функции интегрального эффекта от применения клиринга [pic] Окончательно получим: [pic] (2.8) или с учетом (5): [pic] (2.9) Модифицируем вид решения: Пусть: k = K/V, т. е. k – дневная оборачиваемость средств в расчетах, определяющая, сколько рублей дневного оборота обслуживает один рубль сальдо. е = O(l)/V, т.е. е – доля клиринговых отвлечений от валовых отвлечений при однодневном цикле. n = 1/е – уменьшение средств, обусловленное клирингом – эффективность клиринга. i = l/V, т.е. i – доля средств, обслуживающих в расчетах экспорт- импорт системы. Тогда [pic] (2.10) Итак, [pic] выражена через: 1) k – дневную оборачиваемость средств в расчетах, 2) е – долю клиринговых отвлечений от валовых отвлечений при однодневном цикле, 3) i – долю обслуживания импорта в расчетах. Область возможного положительного эффекта от клиринга задается отрезком времени от 0 до Т. Т есть корень уравнения [pic] или [pic] Далее ясно, что при заданной модели [pic] существует нижняя граница
для [pic], выше которой клиринг не дает никакого эффекта. Эту границу
определяет касательная к [pic] в начале координат. Прямые [pic], лежащие
выше касательной, не пересекаются с [pic] нигде, кроме начала координат. [pic], отсюда [pic] (2.11)
Рис.2.2. Графическая интерпретация решения. И, наконец, подсчитаем потери от применения неоптимального лага: Пусть dt - отклонение от [pic]. Возникающие потери, измеряемые в сальдовых единицах, есть разность: [pic]. Все рассуждения, приведенные выше касались одного отдельно взятого банка, однако лаг клиринга устанавливается клиринговой палатой, составленной из представителей всех банков-участников. Поэтому, лаг, являющий оптимальным для одного банка, может быть далеким от такового для остальных банков. Поэтому для учета интересов всех участников системы предлагается следующая модель. Пусть в клиринговой системе участвует n банков. Обозначим, как и ранее [pic] – эффект от применения клиринга с лагом [pic] для i-го банка, вычисляемый по формуле (2.6), [pic] – средства i-го банка, необходимые ему для валовых взаиморасчетов (т.е. без клиринга). Тогда наиболее приемлемый для всех участников лаг клиринга рекомендуется искать, решив следующую задачу оптимизации: [pic] (2.12) т.е. максимизируется наименьший из удельных эффектов от применения клиринга для всех банков-участников. 2.4. Статистическая оценка оптимального лага. На основе статистической выборки, включающей в себя ежедневные данные за четыре месяца, были получены следующие оценки вышеописанных параметров: i*=0.05, k*=v*=0.42. Подставив оценочные значения в формулу (2.9), получим следующую оценку оптимального лага клиринга t* =1,538372. Таким образом, на основе вышеизложенной модели оптимизации лага клиринга можно утверждать, что оптимальным в текущих условиях является лаг в полтора дня, т.е. 36 часов. 3. ППП «Система межбанковского клиринга» 3.1. Назначение и структура пакета ППП «Система межбанковского клиринга» является практической
реализацией идеи автоматизации клирингового процесса. Пакет охватывает
автоматизацию как работы самой клиринговой палаты, так и работы банков-
участников клирингового сеанса. ППП содержит два функционально различных
программных модуля: «АРМ оператора клиринговой палаты» и «АРМ оператора
банка» и представляет собой программный продукт, построенный по схеме 3.2. Модуль « АРМ оператора клиринговой палаты» Модуль «АРМ оператора клиринговой палаты» устанавливается на сервере клиринговой палаты и обеспечивает добавление и удаление банков-участников клиринговой системы, прием, обработку платежных документов, проверку их на наличие ошибок и проведение окончательных взаиморасчетов между банками- членами клиринговой палаты. Кроме того, данный модуль инициирует начало клирингового сеанса, ведет статистику платежей и закрывает сеанс по истечению заданного срока. Работой модуля управляет один человек – оператор клиринговой палаты, наделенный особыми полномочиями. Главное окно модуля «АРМ оператора клиринговой палаты» выглядит следующим образом: Рис.3.1. Главное окно модуля «АРМ оператора клиринговой палаты». Пункт меню «Банки» содержит подпункты «Просмотреть» для просмотра
списка текущих участников системы и удаления любого из них и
При выборе подпункта «Регистрация нового участника» на экран
выводится диалоговое окно для ввода необходимой информации об участнике. Рис.3.3. Окно регистрации нового банка. После выполнения регистрации на сервере новый банк-участник может запускать на своей рабочей станции модуль «АРМ оператора банка» и входить в систему указав необходимые имя пользователя и пароль. Пункт меню «Сообщения» содержит один элемент – подпункт
Основными функциями данного окна являются просмотр списка полученных сообщений и подтверждение тех из них, которые удовлетворяют требованиям клиринговой палаты. Меню главного окна «Сеанс» содержит три подпункта «Начать сеанс», 3.2. Модуль « АРМ оператора банка» Модуль «АРМ оператора клиринговой палаты» устанавливается на рабочих станциях банков-участников системы взаимозачета и обеспечивает следующие функции: подключение банка к текущему клиринговому сеансу, выход от сеанса, отсылку платежных сообщений, а также подсчет и просмотр окончательной чистой позиции банка. Работой модуля также управляет один человек – оператор банка. Главное окно модуля «АРМ оператора клиринговой палаты» выглядит следующим образом:
Данное окно содержит два основных пункта меню «Клиринговый сеанс» и
Выбор подпункта «Показать сообщения» приводит к выводу на экран диалогового окна со списком сообщений, которые относятся к банку-владельцу запущенной копии модуля. Можно выбрать для показа входящие платежи, исходящие платежи или оба типа одновременно. Показываются лишь те сообщения, которые были подтверждены клиринговой палатой в модуле «АРМ оператора клиринговой палаты». Вид этого окна приведен на Рис. 3.7.
ЗАКЛЮЧЕНИЕ В данном дипломном проекте освещены проблемы межбанковского клиринга и методы их решения, приведены реальные модели клиринговых систем. Кроме того, поставлена, математически сформулирована и решена проблема оптимизации важнейшего параметра клирингового цикла – лага клиринга. На основе реальных статистических данных получена статистическая оценка искомого параметра. Также приводится математическая модель обобщения полученных результатов для максимизации прибыли каждого из участников клиринговой системы. Существенной частью работы в дипломном проекте является разработка пакета программных продуктов «Система межбанковского клиринга». Этот программный продукт является попыткой комплексной автоматизации клирингового процесса. Пакет полностью готов для тестового использования и сбора статистической информации, планируется его доработка в областях сохранности целостности данных, управления доступом и оптимизации производительности до уровня реальной системы. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
“Финстатинформ”, 1993.-142с. М.: “Дело”, 1994.-122с. ИПЦ “Вазар-Ферро”, 1994.-320с. Банкаўскі веснік – 1998. №1. 1997. №9. – С.3-6. ПРИЛОЖЕНИЕ 1. SQL-КОД ППП «СИСТЕМА МЕЖБАНКОВСКОГО КЛИРИНГА» ---------------------------------------------------- -- 1. Sequence BankID_Seq PROMPT Creating sequence BankID_Seq... -- Последовательность уникальных идентификаторов для банков-участников
-- Таблица банков, зарегистрированных в клиринговой палате CONSTRAINT bankno_pk PRIMARY KEY, CONSTRAINT bankname UNIQUE, CONSTRAINT username UNIQUE ----------------------------------------------- PROMPT Creating table BankState... CREATE TABLE BankState CONSTRAINT sessionbankid_fk REFERENCES Banks ON DELETE CASCADE, ----------------------------------------------- PROMPT Creating package ClientUtils... CREATE OR REPLACE PACKAGE ClientUtils -- Возвращает флаг состояния текущей сессии
-- Процедура отсылки в клиринговую палату платежа в "электронном" виде END ClientUtils; / ----------------------------------------------- PROMPT Creating package body ClientUtils... CREATE OR REPLACE PACKAGE BODY ClientUtils -- Функция возвращает флаг состояния текущей сессии FUNCTION GetSessionStatus RETURN INT RETURN ServerUtils.SessionState; END GetSessionStatus;
FUNCTION StartBankSession(aBankID IN INT) RETURN INT IF ServerUtils.SessionState = GlobalConst.cSessionActive THEN UPDATE BankState SET BankStatus = GlobalConst.cBankWork WHERE BankID = aBankID; END IF; RETURN ServerUtils.SessionState; END StartBankSession;
PROCEDURE StopBankSession(aBankID IN INT) UPDATE BankState SET BankStatus = GlobalConst.cBankStopWork WHERE BankId = aBankID; END StopBankSession;
FUNCTION GetOurID RETURN INT Res INT; BEGIN SELECT BankID INTO Res FROM Banks WHERE UserName = USER; END GetOurID;
FUNCTION GetFinalSaldo(aBankID IN INT) RETURN INT aSaldo INT; BEGIN BEGIN SELECT DebitPos-CreditPos INTO aSaldo FROM Results WHERE BankID = aBankID; EXCEPTION WHEN No_Data_Found THEN aSaldo := NULL; END; RETURN aSaldo; END GetFinalSaldo;
PROCEDURE SendMessage(aSourceBankID IN INT, aDebitBankID IN INT, aCreditBankID IN INT, aAmount IN INT) aMsgID INT; BEGIN SELECT Msg_Seq.NextVal INTO aMsgID FROM Dual; INSERT INTO Messages VALUES (aMsgID, aSourceBankID, aDebitBankID, aCreditBankID, aAmount, GlobalConst.cMsgNotProcessed); END SendMessage; END ClientUtils; / ----------------------------------------------- PROMPT Creating package CommonUtils... CREATE OR REPLACE PACKAGE CommonUtils -- Возвращает уникальный номер банка по его имени
END CommonUtils; / ----------------------------------------------- PROMPT Creating package CommonUtils... CREATE OR REPLACE PACKAGE BODY CommonUtils
FUNCTION GetBankID(aBankName IN VARCHAR2) RETURN INT Res INT; BEGIN BEGIN SELECT BankID INTO Res FROM Banks WHERE BankName = aBankName; EXCEPTION WHEN No_Data_Found THEN Res := NULL; END; RETURN Res; END GetBankID;
FUNCTION GetCurrentDebitSaldo(aBankID IN INT) RETURN INT Res INT; BEGIN BEGIN SELECT DebitPos INTO Res FROM TmpRes WHERE BankID = aBankID; EXCEPTION WHEN No_Data_Found THEN Res := 0; END; RETURN Res; END GetCurrentDebitSaldo;
FUNCTION GetCurrentCreditSaldo(aBankID IN INT) RETURN INT Res INT; BEGIN BEGIN SELECT CreditPos INTO Res FROM TmpRes WHERE BankID = aBankID; EXCEPTION WHEN No_Data_Found THEN Res := 0; END; RETURN Res; END GetCurrentCreditSaldo; END CommonUtils; / -------------------------------------------------------- PROMPT Creating package GlobalConst CREATE OR REPLACE PACKAGE GlobalConst cStatusClass CONSTANT INT := -1; cBankWork CONSTANT INT := 1; cBankStopWork CONSTANT INT := 2; cBankNotWork CONSTANT INT := 3; cMsgNotProcessed CONSTANT INT := 1; cMsgAccepted CONSTANT INT := 2; cMsgSourceError CONSTANT INT := 3; cMsgDebitError CONSTANT INT := 4; cMsgCreditError CONSTANT INT := 5; cMsgProcessed CONSTANT INT := 6; cSessionUnActive CONSTANT INT := 1; cSessionActive CONSTANT INT := 2; END GlobalConst; / ------------------------------------------------------ CONNECT INTERNAL SPOOL createdb.log SET ECHO ON CREATE TABLESPACE "CLEARING" DATAFILE 'C:ORAWIN95DATABASEclearing.dbf' CREATE USER "ALEX" IDENTIFIED BY "ALEX" GRANT "DBA" TO "ALEX" WITH ADMIN OPTION; SPOOL OFF EXIT -------------------------------------------------- PROMPT Creating databases and sequences... @@consts.pkg PROMPT Creating packages... @@srvrutil.pkg @@clntutil.pkg @@commutil.pkg ------------------------------------------------------------- PROMPT Creating sequence Msg_Seq... CREATE SEQUENCE Msg_Seq PROMPT Creating table Messages... CREATE TABLE Messages CONSTRAINT message_pk PRIMARY KEY, CONSTRAINT sourcebank_fk REFERENCES Banks ON DELETE CASCADE, CONSTRAINT debitbank_fk REFERENCES Banks ON DELETE CASCADE, CONSTRAINT creditbank_fk REFERENCES Banks ON DELETE CASCADE, -------------------------------------------------------------- PROMPT Creating table Results... CREATE TABLE RESULTS CONSTRAINT resultbankid_fk REFERENCES Banks ON DELETE CASCADE, ------------------------------------------------------- PROMPT Creating package ServerUtils... CREATE OR REPLACE PACKAGE ServerUtils SessionState INT DEFAULT GlobalConst.cSessionUnActive; PROCEDURE StartClearingSession; PROCEDURE StopClearingSession;
-- Процедура регистрации банка-участника клиринговой системы PROCEDURE UnRegisterBank(aBankName IN VARCHAR2); -- Процедура выхода банка из клиринговой системы
PROCEDURE ConfirmMessage(aMessageID IN INT);
/ ----------------------------------------------- PROMPT Creating package body ServerUtils... CREATE OR REPLACE PACKAGE BODY ServerUtils
PROCEDURE StartClearingSession BEGIN DELETE FROM Messages; FOR x IN ( SELECT BankID FROM Banks ) INSERT INTO BankState (BankID, BankStatus) VALUES (x.BankID, GlobalConst.cBankNotWork); END LOOP; SessionState := GlobalConst.cSessionActive; END StartClearingSession;
PROCEDURE StopClearingSession aDebitSum INT; aCreditSum INT; BEGIN SessionState := GlobalConst.cSessionUnActive; UPDATE BankState SET BankStatus = GlobalConst.cBankStopWork WHERE BankStatus = GlobalConst.cBankWork; FOR x IN ( SELECT BankID FROM BankState WHERE BankStatus = GlobalConst.cBankStopWork ) BEGIN SELECT Sum(Amount) INTO aDebitSum FROM Messages WHERE MsgStatus = GlobalConst.cMsgAccepted AND DebitBankID = x.BankID; EXCEPTION WHEN No_Data_Found THEN aDebitSum := 0; END; BEGIN SELECT Sum(Amount) INTO aCreditSum FROM Messages WHERE MsgStatus = GlobalConst.cMsgAccepted AND CreditBankID = x.BankID; EXCEPTION WHEN No_Data_Found THEN aCreditSum := 0; END; INSERT INTO Results(BankID, DebitPos, CreditPos) VALUES(x.BankID, aDebitSum, aCreditSum); END LOOP;
SELECT Stat_Seq.NextVal, SYSDATE, BankID, DebitPos, CreditPos FROM Results;
END StopClearingSession;
FUNCTION GetActiveBanksCountInSession RETURN INT IS Res INT; BEGIN BEGIN SELECT Count(*) INTO Res FROM BankState WHERE BankStatus = GlobalConst.cBankWork; EXCEPTION WHEN No_Data_Found THEN Res :=0; END; RETURN Res; END GetActiveBanksCountInSession;
FUNCTION RegisterBank(aBankName IN VARCHAR2, aUserName IN VARCHAR2, aPassword IN VARCHAR2) RETURN INT IS Res INT; Cur INT; Col INT; BEGIN BEGIN SELECT BankID INTO Res FROM Banks WHERE BankName = aBankName; EXCEPTION WHEN No_Data_Found THEN SELECT BankID_Seq.NextVal INTO Res FROM Dual; INSERT INTO Banks(BankID, BankName, UserName) VALUES (Res, aBankName, aUserName); cur:=dbms_sql.open_cursor; dbms_sql.parse(cur, 'CREATE USER '||aUserName||' IDENTIFIED BY '||aPassword, dbms_sql.v7); Col := dbms_sql.execute(Cur); dbms_sql.parse(cur, 'GRANT CREATE SESSION to '||aUserName, dbms_sql.v7); Col := dbms_sql.execute(Cur); dbms_sql.close_cursor(cur); END; RETURN Res; END RegisterBank;
PROCEDURE UnRegisterBank(aBankID IN INT) BEGIN DELETE FROM Banks WHERE BankID = aBankID; END UnRegisterBank;
PROCEDURE UnRegisterBank(aBankName IN VARCHAR2) BEGIN DELETE FROM Banks WHERE BankName = aBankName; END UnRegisterBank;
FUNCTION CheckMessage(aMessageID IN INT) RETURN INT aMsgStatus INT; aBankStatus INT; aSourceBank INT; aDebitBank INT; aCreditBank INT; BEGIN SELECT SourceBankID INTO aSourceBank FROM Messages WHERE MessageID = aMessageID; SELECT DebitBankID INTO aDebitBank FROM Messages WHERE MessageID = aMessageID; SELECT CreditBankID INTO aCreditBank FROM Messages WHERE MessageID = aMessageID; BEGIN SELECT BankStatus INTO aBankStatus FROM BankState WHERE BankID = aSourceBank; EXCEPTION WHEN No_Data_Found THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgSourceError WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgSourceError; END; IF aBankStatus = GlobalConst.cBankNotWork THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgSourceError WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgSourceError; END IF; BEGIN SELECT BankStatus INTO aBankStatus FROM BankState WHERE BankID = aDebitBank; EXCEPTION WHEN No_Data_Found THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgDebitError WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgDebitError; END; IF aBankStatus = GlobalConst.cBankNotWork THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgDebitError WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgDebitError; END IF; BEGIN SELECT BankStatus INTO aBankStatus FROM BankState WHERE BankID = aCreditBank; EXCEPTION WHEN No_Data_Found THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgCreditError WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgCreditError; END; IF aBankStatus = GlobalConst.cBankNotWork THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgCreditError WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgCreditError; END IF; UPDATE Messages SET MsgStatus = GlobalConst.cMsgProcessed WHERE MessageID = aMessageID; RETURN GlobalConst.cMsgProcessed; END CheckMessage;
PROCEDURE ConfirmMessage(aMessageID IN INT) aMsgStatus INT; aTmpID INT; aAmount INT; aDebitBank INT; aCreditBank INT; BEGIN SELECT MsgStatus, DebitBankID, CreditBankID INTO aMsgStatus, aDebitBank, aCreditBank FROM Messages WHERE MessageID = aMessageID; IF aMessageID = GlobalConst.cMsgProcessed THEN UPDATE Messages SET MsgStatus = GlobalConst.cMsgAccepted WHERE MessageID = aMessageID; SELECT Amount INTO aAmount FROM Messages WHERE MessageID = aMessageID; BEGIN SELECT BankID INTO aTmpID FROM TmpRes WHERE BankID = aDebitBank; EXCEPTION WHEN No_Data_Found THEN INSERT INTO TmpRes (BankID, DebitPos, CreditPos) VALUES (aDebitBank, 0, 0); END; UPDATE TmpRes SET DebitPos = DebitPos + aAmount WHERE BankID = aDebitBank; BEGIN SELECT BankID INTO aTmpID FROM TmpRes WHERE BankID = aCreditBank; EXCEPTION WHEN No_Data_Found THEN INSERT INTO TmpRes (BankID, DebitPos, CreditPos) VALUES (aCreditBank, 0, 0); END; UPDATE TmpRes SET CreditPos = CreditPos - aAmount WHERE BankID = aCreditBank; END IF; END ConfirmMessage; END ServerUtils; / --------------------------------------------------------- PROMPT Create table Statistics... PROMPT Creating sequence Stat_Seq... CREATE SEQUENCE Stat_Seq CREATE TABLE Statistics CONSTRAINT itemno_pk PRIMARY KEY, ----------------------------------------------- PROMPT Inserting data into table Status ... BEGIN DELETE FROM Status WHERE StatusClass = 1;
COMMIT; END; ----------------------------------------------- PROMPT Create table Status ... CREATE TABLE Status StatusClass NUMBER(3), StatusNo NUMBER(3), StatusText VARCHAR2(70) NOT NULL, CONSTRAINT status_pk PRIMARY KEY (StatusClass, StatusNo) ------------------------------------------------------- PROMPT Creating table TmpRes... CREATE TABLE TmpRes CONSTRAINT tmpresbankid_fk REFERENCES Banks ON DELETE CASCADE, --------------------------------------------------- PROMPT Deleting databases... SET ECHO ON; DROP SEQUENCE Stat_Seq;
DROP PACKAGE BODY ServerUtils; DROP PACKAGE BODY ClientUtils; DROP PACKAGE BODY CommonUtils; SET ECHO OFF; ---------------------------------------------------------------- ----------------------- [pic] [pic]
|
|
© 2000 |
|