Межбанковский клиринг
В соответствии с утвержденными планами модернизации платежной системы Республики Беларусь (РБ) в ближайшее время намечено внедрить пусковой комплекс нового проекта межбанковских расчетов в составе:
- системы расчетов по срочным и крупным платежам на валовой основе в режиме реального времени с использованием электронных сообщений,
- системы расчетов по прочим (мелким) платежам на клиринговой основе,
- системы управления очередями платежных сообщений банков.
Данный дипломный проект непосредственно связан с одной из наиболее перспективных и совершенно новой для нашей страны частью этого проекта, а именно, системе клиринговых расчетов. Рассматриваются общие механизмы функционирования реальных клиринговых систем и освещаются принципы создания и развития модели клиринговой системы Республики Беларусь в рамках создаваемой в стране автоматизированной системы межбанковских расчетов BIS. Решаются проблемы оптимизации и автоматизации построенной модели.
1. МЕЖБАНКОВСКИЙ КЛИРИНГ
1.1. Понятие клиринга и его назначение
Суть клиринговой формы расчетов состоит в следующем. Клиринг (англ. clearing) представляет собой систему регулярных безналичных расчетов, основанную на зачете взаимных требований и обязательств юридических и физических лиц за товары (услуги) и ценные бумаги.
Клиринг представляет собой, в самом общем виде, систему безналичных расчетов за товары и услуги, основанную на зачете взаимных требований и обязательств и использующуюся банками в целях снижения потребности в оборотных средствах и упрощения обмена платежами.
Как известно, расчеты по платежам могут производиться либо на валовой, либо на чистой основе. В первом случае расчеты по каждой сделке осуществляются отдельно, во втором – банки, участвующие в производстве платежей, дают возможность требованиям и обязательствам накопиться на протяжении определенного периода времени – лага клиринга (проблема оптимизации лага клиринга также исследуется в данном дипломном проекте). В конце данного периода производятся расчеты только по взаимно зачтенным обязательствам. Такой взаимозачет сумм кредиторской и дебиторской задолженности может иметь место между двумя сторонами (двусторонний взаимозачет) и между тремя и более сторонами (многосторонний взаимозачет).
Когда два банка имеют большие объемы общих платежей, клиринг и урегулирование межбанковских расчетов часто осуществляется на основе двустороннего соглашения: банки договариваются о взаимозачете посланных и полученных платежных поручений (расчете чистой суммы) и об осуществлении в определенное время взаимных расчетов по чистой стоимости платежей. Этот процесс носит название двустороннего взаимозачета.
Если в процессе взаимозачета участвуют три банка и более, то этот процесс называется многосторонним взаимозачетом. Агент группы, участвующей во взаимном погашении, подсчитывает чистую позицию каждого члена клиринговой системы в конце цикла, с учетом платежей, отправленных им другим банкам, и платежей, полученных от остальных участников системы. В результате каждый банк перечисляет лишь свой чистый остаток по счету со всеми другими участниками. После проведения взаимозачета сумма обязательств всех участников должна равняться нулю.
Функции учета взаимных обязательств участников клиринговой системы выполняет клиринговая палата, которая является формальным или неформальным соглашением между банками об обмене платежными инструментами в определенном месте и в определенное время. Банки-члены клиринговой палаты имеют право и возможность обмениваться платежными инструментами, как в бумажном, так и в электронном виде. Остатки, образовавшиеся в результате такого обмена, должны быть оплачены.
Расчетный агент приступает к окончательному расчету по клирингу. Роль данного учреждения состоит в том, чтобы в ходе взаимозачета получать платежи по расчетам от нетто-дебиторов и переводить средства на счета нетто-кредиторов. Кроме того, расчетный агент может выполнять и другие банковские операции, например, предоставлять кредиты для финансирования расчетов и хранить залог для обеспечения обязательств по расчетам. Расчетный агент назначается или избирается членами клиринговой палаты.
Процесс взаимозачета обязательств сторон-участников клиринговой системы носит название клирингового сеанса. Он проводится клиринговой палатой несколько раз в течение дня в заранее установленное время и служит для исчисления промежуточного или итогового сальдо каждого члена палаты.
К осуществлению клиринга участников вполне объективно побудил еще в XVII в. рост числа сделок и, соответственно, объема перерабатываемой информации. Затем клиринг получил широкое распространение за рубежом на товарном, фондовом рынках и особенно в банковской сфере.
Концентрация платежей при клиринге позволяет значительно уменьшить баланс платежей и общую сумму, затрачиваемую оборачивающихся платежных средств, расширяет сферу безналичного оборота и облегчает управление им. Посредством клиринга упрощаются, удешевляются и ускоряются расчеты, сохраняется имеющаяся денежная (кассовая) наличность, и за счет этого повышается уровень прибыльности и ликвидности участников расчетов.
Клиринг в банковской сфере может проводиться как внутри страны, так и между странами (международный валютный клиринг). Достоинством банковских клиринговых расчетов является и то, что в большинстве стран коммерческим банкам разрешено использовать свои клиринговые балансы в центральном банке для выполнения резервных требований, что, безусловно, выгодно коммерческим банкам.
Организация межбанковского клиринга в каждой стране зависит от исторических особенностей развития банковской системы, модели ее построения, степени концентрации и централизации банковского дела, политики центрального банка в области денежно-кредитного регулирования экономики.
1.2. Зарубежный опыт
Таким образом, преимущества клиринговой системы расчетов очевидны. Следовательно, без ее внедрения в структуру национальных межбанковских расчетов немыслима интеграция в систему международных финансовых операций. Однако, в силу того, что клиринговая система, в сущности, является совершенно новой для Республики Беларусь, имеет смысл досконально изучить зарубежный опыт становления и развития системы межбанковского клиринга.
Широкие масштабы межбанковского клиринга за рубежом обусловлены практической невозможностью осуществить все возрастающий безналичный платежный оборот посредством индивидуальных расчетов между кредитно-финансовыми институтами. Например, в ФРГ безналичный платежный оборот составил в 1960г. 1.3 трлн. марок, в 1970г. – 4.5 трлн. марок, а в 1980г. – 11.7 трлн. марок (рост соответственно в 3.5 и 2.6 раза). В США этото показатель оценивается в 1970г. – 12.3 трлн. долларов, в 1979г. – 64.2 трлн. долларов, а в 1986г. – 125 трлн. долларов.
Организация межбанковского зачета различна в зависимости от того, являются ли банки, участвующие во взаимных зачетах, самостоятельными юридическими лицами или же они входят в систему одного и того же банка. В первом случае банки обычно обмениваются между собой чеками, векселями и другими долговыми обязательствами клиентов, доплачивая лишь разницу в специально создаваемых для расчетов организациях. Это и есть собственно межбанковский клиринг (клиринг в широком смысле). Во втором случае, т.е. при внутрибанковском клиринге (межбанковском клиринге в суженном его понимании) все расчеты, связанные с уплатой денег клиентом одного банковского филиала клиенту другого филиала того же банка при помощи различных расчетно-платежных документов (чеков, жиро-чеков и др.), производятся отнесением этих расчетов на правление (головную контору) данного банка. Обычно клиринговый отдел головной конторы и сводит все расчеты филиалов собственной системы. Соответственно разницы, подлежащие уплате или получению филиалами, не погашаются наличными деньгами, а отражаются в пассивной или активной части бухгалтерского баланса филиалов, либо как долг филиала правлению, либо как долг правления соответствующему филиалу. Проблема организации внутрибанковского клиринга особенно актуальна для крупных банковских монополий с широко разветвленной филиальной сетью.
В зависимости от сферы применения межбанковский клиринг может быть: локальным – между банками какого-либо региона, либо между банками определенной банковской группы и (или) между филиалами одного и того же банка; и общенациональным – в пределах всей страны. В свою очередь специфика указанных видов межбанковского клиринга проявляется в способах их проведения. Исходя из последнего критерия, можно выделить совершаемые клиринги: через специальные межбанковские организации – расчетные (клиринговые) палаты и жироцентрали; через учреждения центрального банка или крупнейшие коммерческие банки; а при внутрибанковском клиринге, при расчетах между отделениями (филиалами) – через клиринговый отдел головной конторы банка. Все эти способы проведения межбанковских клиринговых расчетов тесно взаимосвязаны. Конечное сальдо расчетов в любом случае оплачивается с корреспондентских счетов коммерческих банков, открытых в центральном банке. Выбор способа для клиринга определяется соображениями быстроты и экономичности. Банки заинтересованы в скорейшем завершении расчетов, так как запаздывание с инкассированием ведет к потере доходов банка и в ряде случаев – к неудобствам для вкладчиков.
Широкое распространение за рубежом получили клиринговые палаты, основной функцией которых является зачет денежных требований и обязательств. К настоящему времени деятельность большинства расчетных палат автоматизирована. Прежде всего, нужно отметить осуществление этими палатами локального клиринга расчетно-платежных документов. Наибольшую роль расчетные палаты играют в Великобритании, США и других странах, где развито чековое обращение. Особое место среди них занимает Лондонская расчетная палата, через которую проходит ежедневно 7 млн. чеков более чем на 27 млн. фунтов стерлингов, а также 2,35 млн. других платежей на сумму 790 млн. фунтов стерлингов. К примеру, в США каждый федеральный резервный банк (их всего 12) является одновременно и расчетной палатой своего округа. Всего в США насчитывается 32 автоматические палаты ФРС (Федеральной Расчетной Сети) и, кроме того, расчетная палата Нью-Йорка. Помимо ФРС, подобные услуги оказывают и частные сети, такие, как Deluxe Data System, VISA, Chase Manhattan Bank. Услуги клиринговых палат избавляют коммерческие банки от необходимости проводки чеков через центральный банк или банк-корреспондент, что ускоряет процесс инкассирования. Ускорение, в свою очередь, способствует повышению степени доступности денежных средств. Данный фактор является главной причиной, по которой коммерческие банки пользуются услугами клиринговых палат. Помимо этого, использование клиринговых палат снижает издержки на осуществление расчетов, поскольку они обязаны регистрировать только либо активные, либо пассивные клиринговые балансы банков-участников палаты, о чем информируется центральный банк или банк-корреспондент.
Сущность расчетов через клиринговую палату состоит в следующем. Каждый банк, член расчетной палаты, ежедневно составляет ведомости чеков и векселей, сданных ему на инкассо клиентами, отдельно по каждому такому банку. Указанные ведомости вместе с чеками и векселями направляются в клиринговую палату. Там на основании этого составляется общая расчетная ведомость, в которой определяется конечное сальдо обмена расчетно-платежными документами и выявляется, кто из банков должник и кто – кредитор. Затем общая расчетная ведомость направляется в центральный банк, а чеки и векселя – банкам, клиентам которых они выданы. Согласно данным полученной ведомости эмиссионный банк списывает соответствующие суммы с открытых у него корреспондентских счетов банков-корреспондентов. Не принятые расчетно-платежные документы вычеркиваются из расчетной ведомости и возвращаются непосредственно банку, представившему чеки и векселя вместе с мотивировкой отказа от оплаты.
Если же банк не является членом клиринговой палаты, то составленные расчетные ведомости вместе с чеками и векселями представляются в эмиссионный банк, который в этом случае выполняет функции расчетной палаты. По получении ведомостей центральный банк производит соответствующие операции по корреспондентским счетам банков-должников и кредиторов. Сами же чеки и векселя направляются банкам-должникам для списания денег с текущих счетов клиентов, т.е. непосредственных должников, согласно расчетно-платежным документам.
К локальному клирингу можно отнести и широко распространенные в ряде стран западной Европы (Австрии, Венгрии, Франции, ФРГ, Швейцарии) так называемые GIRO-системы (жироцентрали). Наиболее типичны они для ФРГ. Жироцентрали не только проводят безналичные расчеты, но осуществляют пассивные и активные операции. Так, в ФРГ они привлекают средства сберкасс и других кредитных учреждений, государства, земель и местных органов управления. Размещение же ресурсов жироцентралей производится путем предоставления долгосрочных кредитов сберкассам, государству, землям и местным органам в форме коммунальных и ипотечных займов. На практике жироцентрали нередко выполняют функции муниципальных сберегательных касс. Жтроцентрали создаются коммерческими банками обычно в форме акционерного общества открытого типа. Центральный банк страны также является, как правило, одним из учредителей GIRO-систем. Его доля участия в капитале жироцентрали пропорциональна объему информации, которую центробанк получает из такой системы от коммерческих банков в соответствии с законодательством ой или иной страны.
Для совершения международных платежей ряд коммерческих банков прибегает к услугам международных автоматизированных систем. Наиболее крупной и известной среди них является СВИФТ (SWIFT – Society for Worldwide Interbank Financial Telecommunications) – Ассоциация международных межбанковских финансовых коммуникаций, которая представляет собой автоматизированную систему осуществления международных платежей через сеть компьютеров. Эта система была создана в 1973г. представителями 240 банков и начала функционировать в 1977г. В настоящее время к данной системе подключены ведущие компании мира, на их долю приходится 90% всех мировых платежей. Через СВИФТ производятся такие виды банковских операций, как переводы денежных средств, информация о состоянии счетов в банках, подтверждение валютных сделок, расчеты по инкассо, аккредитивам, торговля ценными бумагами, согласование спорных финансовых вопросов, ведение электронных счетов клиентов и управление их средствами. Главные достоинства системы СВИФТ – быстрота операций, защита от злоупотребления и ошибок с помощью шифров, удешевление стоимости банковских операций.
1.3. Деятельность клиринговых палат
Рассмотрим более детально все аспекты возникновения и существования основного элемента механизма многостороннего межбанковского взаимозачета – клиринговой палаты.
1.3.1. Категории клиринговых палат.
В большинстве стран основным средством, используемым при урегулировании финансовых обязательств, а также приобретения товаров и услуг, являются наличные деньги. Однако в процентном отношении они составляют относительно небольшую часть от общей суммы платежей. На долю современных инструментов безналичного оборота приходится значительно меньшее количество платежей, но на значительно большие суммы. В результате широкого распространения таких инструментов финансовые круги столкнулись с серьезной проблемой, связанной с возникновением определенных трудностей при осуществлении расчетов. При использовании наличных денег окончательный расчет происходит незамедлительно. Безналичным же формам платежей свойственны задержки. Важнейшую роль в сокращении интервалов между платежами и расчетами стали играть клиринговые палаты. Их можно разделить на три категории:
- местные
- региональные
- национальные
В состав местных клиринговых палат входят учреждения, обслуживающие население данного района. Сюда относятся небольшие местные банки, сберегательные банки, ссудно-сберегательные ассоциации, кредитные союзы, местные отделения банковских групп, а также, возможно, небольшие независимые организации, обрабатывающие платежи от имени третьих сторон. Цель таких местных объединений заключается в том, чтобы облегчить расчеты при сведении к минимуму расходов для своих членов. Большая часть работы, связанной с операциями местных клиринговых палат, выполняется их членами на добровольной основе. Поэтому в данном случае не предусматривается плата за участие, хотя могут устанавливаться небольшие годовые взносы для покрытия накладных административных расходов. Местные клиринговые палаты, как правило, занимаются платежами, которые возникли и подлежат получению в пределах соответствующего района. Наиболее распространенный вид расчетов связан с обработкой платежных поручений, срок получения по которым может быть сведен до одного дня и менее. В зависимости от величины района число участников местных клиринговых палат может колебаться от двух до двадцати.
В состав членов региональных клиринговых палат входят, в основном, крупные региональные банки, крупные независимые организации, обрабатывающие платежи третьих сторон, общенациональные банки, а также, в некоторых случаях, крупные местные или сберегательные банки. Количество членов и периодичность расчетов могут обуславливать необходимость использования сотрудников на основе полного рабочего дня и постоянной материальной базы для выполнения административных функций, связанных с расчетами. Расходы на функционирование таких систем покрываются за счет взимания платы с участников и ежегодных членских взносов.
Членами национальных клиринговых палат, как правило, являются крупнейшие и наиболее передовые в техническом отношении банки. Обычно такие системы используются для осуществления платежей на крупные суммы. Деятельность национальных клиринговых палат сопряжена со значительными расходами по обеспечению гарантированного уровня обслуживания для членов палат, а также расходами на содержание необходимой материальной базы и персонала. Эти затраты обычно покрываются за счет определяемой на рыночной основе платы за участие и оказываемые услуги, в число которых может входить и обеспечение доступа к международным системам расчетов.
1.3.2. Возникновение клиринговых палат.
Большинство клиринговых механизмов возникает, когда два или несколько кредитных учреждений в одном и том же городе или районе считают выгодным обмениваться платежными инструментами. Затем образуется двусторонняя рабочая группа или комиссия, которая проводит предварительное исследование с целью анализа жизнеспособности механизма клиринговой палаты. При этом основное внимание уделяется определению возможного количества платежных поручений, которые являются объектом взаимозачета. Если в результате такого исследования будет сделан вывод о выгодности работы клиринговой палаты, то организаторы приступают к опросу других учреждений относительно их заинтересованности в участии. Один из важнейших вопросов, возникающих в процессе организации клиринговой палаты, связан с составом ее членов. В зависимости от ряда факторов члены могут быть отнесены к одной или двум категориям. При единой категории членства все участники рассматриваются в качестве “постоянных членов”, имеющих право голосовать и вносить поправки в уставные нормы. В случае же распределения по двум категориям, ко второй категории относятся так называемые “ассоциированные члены”, которые могут участвовать в процессе расчетов, но не имеют права голоса. Клиринговые палаты, занимающиеся расчетами только по платежным поручениям, обычно относят всех участников к категории членов с правом голоса. Это объясняется тем, что изменение правил или уставных норм затрагивает всех членов клиринговой палаты, в связи с чем каждый из них должен иметь возможность представлять свои интересы.
Необходимость введения категории ассоциированных членов возникает в тех случаях, когда некоторым участникам клиринговой системы потребовалось осуществить вложения в материально-технические ценности, имеющие жизненно важное значение для деятельности клиринговой палаты, или когда такие ценности находятся в их собственности. В качестве примера можно привести межбанковскую телекоммуникационную коммутационную сеть. Для ее создания и функционирования могут потребоваться капиталовложения нескольких банков. Банки, осуществившие капиталовложения, будут отнесены к категории членов с правом голоса, а для других пользователей данной сети может быть установлен статус ассоциированных членов. Такое присвоение членам клиринговой палаты определенного статуса обеспечивает защиту капитала, принадлежащего банкам-учредителям. На начальных стадиях образования клиринговой палаты чрезвычайно важно разработать правила принятия в состав ее членов учреждений, деятельность которых связана с повышенным риском. Существует несколько путей решения данной проблемы.
В зависимости от уровня платежеспособности таких учреждений для них устанавливаются максимально допустимые лимиты на сумму платежей, расчеты по которым производятся в рамках одного расчетного цикла. Это хотя и не устраняет риск полностью, но снижает уровень потенциальных потерь, которые могут возникать в любой момент времени.
Механизм минимизации рисков предусматривает также обязательное внесение залога участниками системы взаимозачета на счет какой-либо третьей стороны или надежного в финансовом отношении члена клиринговой палаты. При этом разрешается лишь расчеты на сумму, не превышающую размера внесенного залога.
Последний и наименее желательный вариант – отказ в допуске к работе клиринговой палаты для тех учреждений, с которыми связан повышенный риск.
1.3.3. Клиринговые расчеты.
Клиринговые палаты проводят расчеты по операциям как на основе дебетования, так и на основе кредитования. По мере развития альтернативных форм платежей доля платежей на основе кредитования (особенно электронных) резко возросла. Сюда относятся такие операции, как выплата заработной платы, процентные платежи по долговым обязательствам, платежи за услуги и т.п. При использовании в операциях документов на бумажных носителях клиринговыми палатами обычно проводится разграничение дебетовых и кредитовых платежных инструментов. Однако при осуществлении платежей на электронной основе дебетовые и кредитовые платежные инструменты нередко не разграничиваются и расчеты по ним осуществляются одновременно.
Возможны два варианта окончательного расчета по счетам при многостороннем чистом клиринге:
- классический вариант
- вариант, основанный на методе “ авансирования ”
Классический вариант предусматривает урегулирование рассчитанного клиринговой палатой итогового сальдо каждого из ее членов по книгам Центрального банка. В этом случае каждому банку-участнику системы взаимозачета в клиринговой палате открывают транзитные счета-позиции, деньги на которых фактически отсутствуют. Остатки на таких счетах всегда равны нулю. Транзитный счет существует для учета обязательств и ведется по каждому банку на основании поступающих и обрабатываемых документов. По данным этого счета выводится итоговое сальдо банка (оно может быть как дебетовым, так и кредитовым), которое затем передается на основные корсчета членов клиринговой палаты, находящиеся в Центральном банке. У этой системы есть ряд преимуществ. Прежде всего, она значительно упрощает процесс расчетов. Кроме того, Центральный банк может способствовать снижению риска для клиринговой палаты, обеспечив достаточные остатки на счетах участников, положение которых является нестабильным или участников, чья деятельность связана с высоким уровнем риска.
Второй вариант окончательного расчета по счетам основывается на методе “авансирования”. Клиринговая палата создается в форме акционерного общества банками данного региона и действует как специальный клиринговый банк. Банки-участники системы взаимозачета открывают в клиринговой палате корреспондентские счета, на которые переводят часть своих средств, образующих первоначальный капитал клиринговой палаты. В свою очередь клиринговая палата открывает свой корреспондентский счет в Центральном банке. Кроме того, банки-участники клиринговой системы создают в клиринговой палате страховой (резервный) фонд для непрерывного осуществления взаимных расчетов. Клиринговая палата имеет право в случае образования дебетового сальдо у кого-либо из своих членов выдать ему краткосрочный кредит за счет указанного фонда. На основе взаимозачета кредитовых и дебетовых оборотов клиринговая палата ежедневно вносит соответствующие изменения в баланс каждого банка-участника. Информация об изменениях остатков средств клиринговой палаты по итогам работы за день поступает в Центральный банк и относится на корреспондентский счет клиринговой палаты, а сведения по корреспондентским счетам банков передаются членам клиринговой системы. Таким образом, в данном случае функции клиринговой палаты и расчетного агента осуществляются в рамках одного учреждения. Недостаток такого метода заключается в том, что расчеты по книгам коммерческого банка сопряжены с большим риском, чем расчеты по книгам Центрального банка.
1.4. Виды финансового риска
Участники клиринговых систем подвергаются нескольким видам финансового риска:
- кредитный риск
- риск неликвидности
- системный риск
Рассмотрим каждый из видов риска.
По наступлению срока погашения задолженности партнер по сделке может не выполнить своего обязательства и никогда не будет в состоянии выполнить его в полном объеме (пассивы превышают активы). Нередко такие проблемы связаны с банкротством партнера, но могут существовать и другие причины. Кредитный риск, связанный с особенностями функционирования клиринговой системы, возникает в результате разрыва во времени между обмена платежными поручениями и осуществлением окончательных расчетов по ним в конце клирингового цикла. В результате появляется так называемый скрытый кредит, предоставляемый любым из банков в течение операционного дня своим клиентам до того, как произведены окончательные расчеты с банком, пославшим платежное поручение. Центральный банк, будучи расчетным учреждением, подвергается кредитному риску, если он позволяет участникам, имеющим чистое кредитовое сальдо в конце клирингового цикла, снимать средства со счетов до того, как все участники, имеющие чистое дебетовое сальдо, произвели свои расчеты. Для уменьшения потенциальной опасности от кредитного риска рекомендуется постоянно отслеживать динамику следующих показателей банков-участников: коэффициент покрытия основных средств (КПОС), где:
(1.1),
а также коэффициент краткосрочной задолженности (ККЗ) и коэффициент покрытия общей задолженности (КПОЗ):
(1.2)
(1.3)
Еще одним видом финансового риска является риск неликвидности. По наступлении срока платежей по расчетам они могут быть не произведены, даже, если в конечном счете один или большее число партнеров будут обладать достаточными активами и собственным капиталом для того, чтобы произвести такие платежи (несоответствие структур пассивов и активов). Например, временная неспособность превратить активы в наличные средства, различные операционные затруднения или неспособность банков-корреспондентов выполнить свои функции по расчетам – все это создает проблемы ликвидности. Несмотря на то, что многосторонняя система взаимозачета уменьшает общую нуждаемость участников в ликвидности, она концентрирует давление, связанное с ликвидностью, в конце цикла обработки, когда участники, имеющие задолженность, должны одновременно произвести расчеты. Для контроля за этим видом риска наиболее часто исследуются такие показатели, как коэффициент ликвидности (КЛ), где
(1.4)
(оптимальное значение – 2 и выше) и так называемый “кислотный тест” или коэффициент лакмусовой бумажки (КЛБ, оптимальное значение 1), где
(1.5)
Использование платежных систем и участие в финансовых рынках могут быть также сопряжены и с системным риском, связанным с неспособностью одного из участников выполнить свои обязательства, что приводит к нарушению функционирования других участников, начиная цепную реакцию (так называемый “эффект домино”). Системный риск может стать причиной общего финансового кризиса, когда неплатеж или проблемы кредитного учреждения, связанные с недостатком ликвидности, вызывают подобные же затруднения и у других участников финансового рынка. В зависимости от факторов, способствующих возникновению данного риска, различают системный риск ликвидности и системный кредитный риск. Помочь ослабить влияние системного риска позволяет исследование так называемых показателей погашения долга: коэффициент денежного потока (КДП) и коэффициент процентных выплат (КПВ), где
(1.6)
(1.7)
Значения этих показателей должны быть 1,5 и выше.
1.5. Взаимозачеты и связанные с ними риски
В зависимости от характеристик риска различные системы взаимозачета можно разделить на четыре вида, которые отличаются друг от друга правовой природой подлежащих уплате чистых сумм и наличием основного партнера. К числу этих видов относятся:
- двусторонний зачет позиций
- двусторонний взаимозачет путем новации
- многосторонний зачет позиций
- многосторонний взаимозачет позиций путем новации и замещения.
1.5.1 Двусторонний зачет позиций.
В некоторых финансовых центрах традиционно используются различные неофициальные формы валютного взаимозачета. К этим формам, которые обычно применяются в целях снижения числа осуществляемых партнерами взаимных платежей, относится и двусторонний зачет позиций. Например, в день зачисления средств по какой-нибудь группе валютных контрактов пары банков-партнеров могут определить чистые суммы, подлежащие уплате друг другу, и осуществить двустороннее урегулирование обязательств по контрактам путем оплаты чистых сумм. Однако правовые последствия такого взаимозачета обычно четко не определены, поэтому возникает большая неопределенность относительно юридического обязательства выплатить валютные или чистые суммы в том случае, если партнер испытывает финансовые трудности. В связи с этим, как правило, принимается условие, что в случае возникновения таких трудностей, стороны продолжают нести ответственность за уплату валовых сумм.
Урегулирование чистых позиций сокращает число платежей по расчетам, которые должны быть произведены партнерами (а следовательно, и число возможных ошибок), и тем самым уменьшает расходы, но лишь в том случае, если стоимость услуг не превышает экономию, достигнутую благодаря его применению. Теоретически, при взаимозачете позиций кредитный риск остается таким же, как и при отсутствии взаимозачета, поскольку валовые обязательства, на основе которых определяется чистая сумма, не погашаются. Однако на практике существует опасность того, что сальдированные суммы будут рассматриваться как представляющие собой фактическую кредитовую позицию партнеров в рамках дилинговых и иных кредитных линий. Если подобное происходит, партнеры берут на себя риск существования очень крупных валовых позиций, даже если суммы чистых обязательств не превышают разумных пределов. Двусторонний взаимозачет позиций существенно снижает риск неликвидности. Это происходит в результате того, что при осуществлении партнерами взаимного зачета платежей пропадает необходимость обмениваться отдельными платежами по расчетам при большом числе валовых обязательств.
1.5.2. Двусторонний взаимозачет путем новации.
Двусторонний взаимозачет путем новации (двусторонний взаимозачет обязательств) осуществляется на основе заключенного между двумя банками соглашения, согласно которому в будущем о истечению каждого срока зачисления средств один из этих банков должен будет перевести другому сумму одну текущую сумму в той валюте, в которой они проводят операции. Это достигается путем зачета обязательств по второй и каждой последующей сделок с обязательствами по первой сделке для данного срока зачисления средств и данной валюты, в результате чего заключается новый контракт на чистые суммы. Такой процесс новации может быть осуществлен автоматически в течение операционного дня в тот момент, когда банки обмениваются соответствующими подтверждениями: в двустороннем соглашении может быть предусмотрено, что в момент сверки таких подтверждений обязательства по всем предыдущим контрактам погашаются путем новации, и эти контракты заменяются новым контрактом. Такой процесс может повторяться неограниченное число раз до наступления определенного расчетного дня.
В двустороннем соглашении о взаимозачете путем новации можно также предусмотреть формирование из новых чистых сумм, подлежащих уплате в каждую отдельную будущую дату в каждой валюте, единого потока платежей, которые должны быть уплачены согласно основному контракту между двумя банками. В случае, если такое соглашение будет подтверждено, ни один из ликвидаторов какого-либо из этих банков не сможет выбирать валюты или платежи, подлежащие получению или переводу в отдельные будущие даты.
Услуги по двустороннему взаимозачету путем новации могут ограничиваться заключением типовых контрактов на осуществление взаимозачета или предоставлением линий связи и систем бухгалтерского учета, которые дают возможность участникам подбирать соответствующие сделки; подтверждать, их и регистрировать новые суммы чистых обязательств.
Применение систем двустороннего взаимозачета путем новации обеспечивает такие же выгоды, как и использование систем двустороннего взаимозачета позиций. Однако двусторонний взаимозачет обязательств сопряжен со значительно меньшим кредитным риском, чем взаимозачет позиций, так как дает возможность снизить кредитный риск, связанный с партнером, с валовой суммы до чистой суммы для каждой отдельной будущей даты.
Как правило, двусторонний взаимозачет путем новации также приводит к снижению риска ликвидности, поскольку из подлежащих уплате чистых сумм нельзя восстановить отдельные обязательства на валовой основе. Однако фактическое уменьшение кредитного риска целиком и полностью зависит от юридической исполнимости нового контракта на чистые суммы, заменившего собой первоначальные контракты на валовые суммы, которая является гарантией того, что, в случае прекращения деятельности одного из партнеров, первоначальные контракты не будут избирательно возобновлены ликвидатором.
1.5.3. Многосторонний взаимозачет позиций.
В рамках многосторонней системы, в которой обеспечивается специальная связь, и используются специальные формы бухгалтерского учета, обычно осуществляется многосторонний взаимозачет позиций. В учреждении, являющемся агентом по клирингу или расчетам, могут открываться "клиринговые счета" для участников, этот агент хранит средства участников и может предоставлять им кредиты для облегчения расчетов по сделкам. В данном случае возможным является также использование единого основного клирингового счета и других механизмов для производства расчетов. Осуществление многостороннего взаимозачета позиций происходит в несколько этапов: сначала подсчитываются чистые суммы, которые должен получить каждый участник от всех остальных членов клиринговой группы и которые он должен им уплатить, а затем производятся расчеты путем перевода соответствующих денежных средств нетто-дебиторами нетто-кредиторам.
Если возникают неразрешимые проблемы с урегулированием обязательств по сделке в связи с тем, что банк, являющийся нетто-должником, не в состоянии оплатить свои платежи, правила системы нередко требуют или позволяют аннулировать платежи участнику (участникам), испытывающему (испытывающим) такие затруднения, и платежи, причитающиеся с этого участника (участников), с тем, чтобы определить многосторонние сальдо для остальных участников, по которым можно в конечном счете рассчитаться на следующий операционный день после первоначально запланированного расчетного дня.
В абстрактном случае многостороннего взаимозачета позиций все финансовые обязательства на валовой основе или платежные поручения остаются невыполненными до производства окончательного расчета. Поэтому в рамках данной организационно-правовой формы взаимозачета существует такой же кредитный риск, как и при отсутствии взаимозачета. В системах многостороннего взаимозачета позиций одну из наиболее серьезных проблем представляет риск неликвидности. Причины этого объясняются методом, использующимся для вычисления многостороннего чистого обязательства каждого участника. В случае, если после осуществления зачета двусторонних кредитовых и дебетовых сальдо с получением единой чистой суммы многостороннего обязательства, какой-то участник не в состоянии урегулировать свое сальдо, обычно производится пересчет многосторонних позиций, восстанавливающий платежи или обязательства. После этого в рамках системы многостороннего взаимозачета уже невозможно компенсировать двусторонние "дебетовые сальдо" двусторонними "кредитовыми сальдо", причитающимися остальным участникам со стороны неплательщика. В результате чего значительно возрастают многосторонние чистые обязательства, и, следовательно, потребности в ликвидных средствах у тех участников системы, которым неплательщик должен какие-то чистые суммы.
В системах многостороннего взаимозачета позиций могут также возникать и более общие проблемы с ликвидностью, причиной которых становятся чаще всего операционные затруднения. Например, учреждение, обслуживающее участников системы многостороннего взаимозачета позиций в качестве расчетного агента, может не желать или быть не в состоянии производить ежедневные платежи по расчетам участникам, которые являются нетто-кредиторами, до тех пор, пока оно не получит все платежи от нетто-дебиторов. Любая задержка с производством платежа каким-либо нетто-дебитором может вызвать проблемы у всех нетто-кредиторов и, возможно, неблагоприятно сказаться на их способности урегулировать свои платежи на других рынках или в рамках других систем.
В случае неплатежей кого-либо из участников многостороннего взаимозачета позиций особенно значительным может стать системный риск неликвидности. После пересчета многосторонних сальдо каждый (оставшийся) участник может быть должен большую сумму или может получить меньшую сумму. Даже у тех участников системы платежей или взаимозачета, которые не вели расчетов с неплательщиком, могут увеличиться потребности в ликвидности в том случае, если участники, с которыми они вели расчеты, испытывают недостаток ликвидности из-за неплатежа по расчетам.
1.5.4. Многосторонний взаимозачет путем новации и замещения.
Хотя в принципе взаимозачет путем новации представляет собой двусторонний процесс, его можно использовать и для многосторонних расчетов между членами более крупной группы банков. В этом случае должна быть использована третья сторона (например, своего рода клиринговая палата) для принятия на себя нового чистого обязательства в качестве партнера каждого банка-участника. Такой процесс называется новацией и замещением.
В качестве примера многостороннего взаимозачета путем новации и замещения можно привести гипотетическую клиринговую палату или компанию, занимающуюся расчетами по валютным операциям. В роли такого учреждения, предоставляющего услуги по взаимозачету, могла бы выступать национальная клиринговая палата, осуществляющая для своих членов имеющий юридическую силу многосторонний зачет обязательств по всем их валютным контрактам с другими участниками. При представлении такого контракта парой участников в клиринговую палату эта палата будет выступать в качестве партнера по отношению к каждому из этих своих членов и будет погашать их взаимные обязательства. Более того, у клиринговой палаты будет существовать текущая чистая позиция по соответствующим валютам и по датам зачисления средств по отношению к каждому участнику. В результате, для данной группы контрактов, переданных для взаимных расчетов, будет определен ряд чистых сумм (равных многостороннему сальдо каждого участника по отношению к группе участников взаимозачета в целом), причитающихся клиринговой палате от каждого участника им наоборот. В качестве основного партнера клиринговая палата возьмет на себя как кредитный риск, так и риск неликвидности. В то же самое время ее члены будут нести кредитный риск и риск неликвидности по отношению к клиринговой палате, а не к своим партнерам по операциям. Таким образом, клиринговой палате придется управлять своей кредитовой позицией по отношению к каждому члену, а также риском неликвидности, связанным с расчетами.
Важнейшим элементом, способствующим тому, чтобы кредитный риск, существующий при использовании клиринговой палаты, был меньше кредитного риска, возникающего при двустороннем взаимозачете путем новации, является ряд соглашений, касающихся многостороннего взаимозачета путем новации и замещения. При юридической исполнимости договоренностей о многостороннем взаимозачете такое снижение риска для отдельного участника будет иметь место потому, что данная система взаимозачета даст возможность использовать двусторонние дебетовые сальдо каждого участника по отношению к другим для компенсации двусторонних кредитовых сальдо по той же валюте, в результате чего уменьшится чистая кредитовая позиция. Однако многосторонний взаимозачет не изменит кредитовую позицию участников, не имеющих двусторонних дебетовых сальдо.
Многосторонний взаимозачет путем новации и замещения обладает потенциальной возможностью большего снижения риска неликвидности по сравнению с любой другой формой взаимозачета. При такой системе взаимозачета на данную дату зачисления средств чистые суммы задолженности по сравнению с двусторонним взаимозачетом снижаются или остаются неизменными для некоторых участников. Это снижает риск неликвидности для отдельных участников, для участников клиринга в целом и, возможно, для других финансовых рынков.
С другой стороны, при использовании клиринговых палат требуется централизация платежей по расчетам: все такие платежи производятся между клиринговой палатой и отдельными участниками. В подобном случае неспособность одного члена урегулировать свою позицию может привести к нехватке наличности в одной или нескольких валютах, необходимых для производства расчетов. Риск неликвидности для остальных участников зависит в этом случае от способности клиринговой палаты мобилизовать наличность, необходимую для завершения расчетов.
Таким образом, многосторонний характер деятельности клиринговой палаты не дает гарантии снижения риска неликвидности по сравнению с двусторонним взаимозачетом путем новации. На практике риск неликвидности, в том числе и системный, в данном случае может оказаться более высоким.
1.6. Управление рисками в системах взаимозачета
Риск, возникающий в связи с осуществлением взаимозачета, может быть урегулирован несколькими путями. Центральный банк, выступая в роли учреждения, осуществляющего контроль за бесперебойным функционированием системы платежей, представляет собой одного из основных кредиторов и является расчетным агентом при проведении большей части клиринговых операций, что обуславливает и его решающую роль в определении принципов управления факторами риска и обеспечении того, чтобы каждый из участников клиринговой системы следовал этим принципам. Кроме того, немаловажную роль в управлении рисками играют и сами клиринговые палаты, определяющие порядок обслуживания кредитных учреждений, деятельность которых сопряжена с высокой степенью риска, а также осуществляющие урегулирование других проблем, связанных с различными видами финансового риска. Для управления рисками клиринговых платежей обычно используются следующие методы:
- сокращение расчетного периода
- двусторонние и многосторонние лимиты
- механизмы распределения убытков
- неокончательный характер расчетов в рамках клиринговых систем и аннулирование результатов клирингового сеанса.
Сокращение расчетного периода
Чем короче расчетный период, тем меньше риск неуплаты по расчетам и связанный с ним системный риск. В качестве дополнительного механизма применяются средства контроля в масштабе реального времени, которые помогают выявлять на ранней стадии потенциальные проблемы и облегчают управление ликвидными средствами, особенно в тех случаях, когда возможен централизованный контроль сальдо всех участников.
Двусторонние и многосторонние лимиты
Одним из методов управления рисками в клиринговых системах является использование двусторонних или многосторонних верхних лимитов сальдо участников, которые автоматически ограничивают потенциальный риск межбанковских расчетов в рамках системы. Такие верхние лимиты часто определяются как сумма, кратная величине первичного капитала банков, а также основываются на оценке каждым учреждением своей кредитоспособности. Помимо лимитов на дебетовое сальдо каждого участника по отношению к другим участникам, некоторые клиринговые палаты дополнительно требуют от каждого члена установить лимит на свое кредитовое сальдо по отношению к другим членам системы. Главным недостатком таких лимитов является то, что их можно обходить с помощью посылаемых через другие системы платежных поручений и что они могут приводить к замедлению выполнения поручений клиентов или отказу от их выполнения.
Механизмы распределения убытков
Наиболее твердой гарантией от связанных с осуществлением взаимозачета рисков являются механизмы, призванные обеспечить возможность проведения расчетов в рамках клиринговой системы даже в том случае, когда ее отдельные участники не в состоянии урегулировать свои обязательства. Обычно такие механизмы предусматривают объединение риска неликввдности и распределение неурегулированных сальдо в соответствии с заранее установленным порядком. При этом, как правило, выдвигается требование о предварительном внесении обеспечения и/или о гарантированном выделении ликвидных средств Центральным банком. В некоторых системах Центральный банк выражает готовность осуществить расчет лишь при условии, что превышающие обеспечение убытки будут впоследствии покрыты не обанкротившимися участниками.
Неокончательный характер расчетов в рамках клиринговых систем и аннулирование результатов клирингового сеанса
Своевременность расчетов в рамках клиринговых систем зависит от способности каждого из участников выполнить свои многосторонние обязательства, принятые в результате операций, проведенных в определенный период (в течение операционного дня). Типичной процедурой, применяемой при возникновении просрочек и неплатежей в процессе проведения расчетов, является использование положения о неокончательном характере расчетов и возможности отзыва платежей участнику, испытывающему подобные затруднения, и платежей, причитающихся с этого участника. В этом случае некоторые или все платежные операции, произведенные в рамках системы за данный период времени, аннулируются, а многостороннее сальдо для остальных участников пересчитывается. Эта процедура перемещает давление, связанное с недостатком ликвидности и потенциальными убытками, с одного на всех участников системы взаимозачета.
2. ОПТИМИЗАЦИЯ ЛАГА КЛИРИНГА
2.1. Постановка задачи
Республика Беларусь сейчас модернизирует автоматизированную систему межбанковских расчетов. Это ставит вопрос четкого выделения возможных их форм и оптимальных параметров. Ясность в формах расчетов достигнута, а в параметрах – нет. Проблема выбора оптимальных параметров расчетов не решена в системе, и данная часть дипломной работы посвящена выбору одного из них – лага клиринга.
В зависимости от скорости обработки платежного документа есть два полюса форм оплаты, поступающих в банк платежных документов: валовая оплата и клиринг.
При валовой оплате платежные документы оплачиваются индивидуально по мере их поступления. Идеал валовой оплаты – оплата в темпе поступления документов или, выражаясь по другому, в реальном времени (имеется в виду время поступления). Такая форма называется RTSG (Real Time Gross Settlement – Система крупных платежей в реальном времени). В режиме RTGS должны оплачиваться крупные или срочные платежи. Решение о срочности - это решение плательщика. Ясно, что за срочность нужно платить. Параметр «крупности» определяется Центробанком.
Цель валовой оплаты – скорость оплаты. Модуль автоматизированной системы межбанковских расчетов, отвечающий за валовую оплату в реальном времени - это модуль BIS (Belarus Interbank Settlement).
При клиринге оплата поступившего документа специально откладывается и формируется множество неоплаченных платежных документов (платежный пакет). Затем оплата сформированного пакета платежных документов делается не по каждому документу последовательно, а итоговыми расчетными документами с учетом погашения встречных платежей. После реализации итоговых платежей, платежи исходного пакета считаются оплаченными без реального индивидуального оформления бухгалтерских проводок по каждому документу. Цель клиринга – уменьшение ликвидных средств, требуемых для поддержания расчетов. За клиринг будет отвечать самостоятельный модуль системы межбанковских расчетов.
Лаг клиринга – отрезок времени, в течение которого формируется пакет платежных документов, и после истечения которого выносится решение о клиринговой оплате. Фактор лага проявляется двояко и в противоположных тенденциях:
1. Чем больше лаг клиринга, тем больше стоят в неподвижности деньги клирингового пакета. Значит, имеем отвлеченные средства и, следовательно, имеем потенциальные потери банка-получателя этих средств. Ясно, что отвлечение прямо пропорционально лагу клиринга.
2. Чем меньше лаг клиринга, тем больше требуется ликвидных средств для проведения совокупных расчетов. Значит, имеем отвлечение средств и, следовательно, имеем потенциальные потери банка-плательщика. Ясно, что при стремлении лага к нулю отвлечение достигает какого-то максимума V, а при стремлении лага к бесконечности отвлечение достигает какого-то минимума I.
Итак, происходит конкуренция двух факторов:
1) потенциальная потеря от замораживания средств в клиринге, которая пропорциональна времени замораживания и
2) потенциальный доход от уменьшения средств обеспечения расчетов, которое растет с ростом лага клиринга.
Интегральный эффект клиринга есть разность этих двух величин. Значит, и слишком малый лаг клиринга плох, и слишком большой лаг клиринга плох. Следовательно, есть оптимальный лаг и его нужно определить.
Задача состоит в том, чтобы определить лаг клирингового цикла, при котором интегральный эффект клиринга будет максимальным.
2.2. Формализация задачи
Формула расчета убытка от применения клиринга вследствие простаивания денег клирингового пакета имеет следующий вид:
где – интенсивность оборота, сколько средств проходит в валовых расчетах за единицу времени – за день. Эта формула показывает отвлечение вследствие клиринговой неподвижности средств платежного пакета, как следствие клиринга Средства были бы пущены в оборот и принесли бы выгоду банкам-получателям средств. Итак, имеем здесь дело с потенциальным убытком. Предполагая равномерное поступление платежей, имеем простой средств в размере в течение времени , т.е. .
Теперь подсчитаем доход: на оплату требуется меньше средств, чем при валовой оплате, а сэкономленные средства пускаются в оборот и приносят доход.
Таким образом имеется возможность построить математическую модель:
Пусть, - средства, необходимые для поддержания клиринга, – лаг клиринга. Накладываются следующие естественные условия:
1) При (2.1),
где – средства, обслуживающие валовые расчеты.
2) При (2.2),
где – средства, обслуживающие «экспорт-импорт» клиринговой системы;
3) есть функция от .
Найдем вид функции , основываясь, как говорят в физике, на феноменологическом подходе. Т.е. мы не привлекаем никаких «микродеталей» типа статистики потоков между участниками и т.д., а основываемся только на самых общих «внешних» соображениях. Внутренний причинный механизм денежных потоков остается черным ящиком. Воспользуемся однородностью времени. Все возможные лаги клиринга образуют ось – ось лага клиринга. Очевидно, что ни один момент времени не должен быть выделен: если у нас был лаг клиринга и мы переходим к , то все равно, как мы считаем – или отталкиваясь от 0, беря за основу , или отталкиваясь от , беря за основу . Графическая интерпретация изложенного дана на Рис. 3.1.
Итак, однородно и, значит, имеем своего рода принцип относительности: закон не должен зависеть от системы координат. В применении к нашему случаю это означает, что формула О должна давать ковариантную (не изменяющую вида) зависимость от : сдвиг по оси не должен менять вида формулы, если пересчитать все к новому началу координат – переход от к = - а и от к должен удовлетворять условию . Или, по другому, . Такое функциональное уравнение характерно только для экспоненты.
Рис.2.1. Графическая интерпретация «однородности» времени.
В дифференциальном виде экспонента характеризуется соотношением:
(2.3),
где v – какой-то коэффициент пропорциональности. Условия (1) - (3) дают единственное решение:
(2.4)
Проверяем выполнение свойства :
что и нужно.
Данная математическая модель подсчета средств, необходимых для поддержания клиринга, была разработана и протестирована на адекватность и устойчивость в американской клиринговой системе CHIPS, кроме того, адекватность данной модели подтверждена проверкой на отечественных статистических данных по межбанковским расчетам в информационно-аналитическом управлении Белорусского Межбанковского Расчетного Центра Национального Банка Республики Беларусь.
Используя этот результат, подсчитаем экономию вследствие клиринговости.
Итак, – реальное отвлечение вследствие «валовости» (об этом говорит индекс параметра О), т. е. расчетов через конечный отрезок времени , а не бесконечный, что было бы идеальным для клиринга. Параметр – это максимум средств, для поддержки расчетов, достигаемый при чистом вале, когда клиринга нет: . Параметр – это минимум средств для поддержки расчетов, достигаемый при чистом клиринге, когда валовой оплаты нет: . Параметр – это мера спада потребности в средствах для расчетов. Его можно определить эмпирически по результатам клиринга с циклом в один день. Пусть, в этом случае, требуются для обеспечения расчетов средства в размере . Тогда
(2.5)
Параметр характеризует импортную незамкнутость системы: если бы пользователи клиринга были тесно связаны только между собой, то . Для страны в целом – это средства оплаты экспорта-импорта и, значит, можно определить из данных статистики, если клиринг охватывает всю республику. Для группы банков – это обслуживание входа-выхода средств вне этой группы. Экономия вследствие клиринговости равна:
Доход от такой экономии пропорционален рыночной процентной ставке и времени .
Подсчитаем интегральный эффект от клиринга. Эффект - разность дохода и убытка:
(2.6)
Оптимизация этой функции равносильна оптимизации следующей функции:
(2.7)
2.3. Решение задачи и его анализ
При каком-то значении экономия достигает максимума. Для определения этого значения возьмем производную функции по и приравняем ее к нулю. Вычисляем производную:
Теперь решаем уравнение:
Для того, чтобы убедиться, что найденная точка является точкой глобального максимума функции интегрального эффекта от применения клиринга , покажем, что эта функция является вогнутой (выпуклой вверх), для чего исследуем знак второй производной функции :
Окончательно получим:
(2.8)
или с учетом (5):
(2.9)
Модифицируем вид решения:
Пусть: k = K/V, т. е. k – дневная оборачиваемость средств в расчетах, определяющая, сколько рублей дневного оборота обслуживает один рубль сальдо.
е = O(l)/V, т.е. е – доля клиринговых отвлечений от валовых отвлечений при однодневном цикле.
n = 1/е – уменьшение средств, обусловленное клирингом – эффективность клиринга.
i = l/V, т.е. i – доля средств, обслуживающих в расчетах экспорт-импорт системы. Тогда
(2.10)
Итак, выражена через:
1) k – дневную оборачиваемость средств в расчетах,
2) е – долю клиринговых отвлечений от валовых отвлечений при однодневном цикле,
3) i – долю обслуживания импорта в расчетах.
Область возможного положительного эффекта от клиринга задается отрезком времени от 0 до Т. Т есть корень уравнения или
Далее ясно, что при заданной модели существует нижняя граница для , выше которой клиринг не дает никакого эффекта. Эту границу определяет касательная к в начале координат. Прямые , лежащие выше касательной, не пересекаются с нигде, кроме начала координат. Значит, для них кривая не имеет максимума не в начале координат. Указанная граница для определится из условия
отсюда
(2.11)
Рассмотрим также графическую интерпретацию решения (см. Рис 2.2.)
Рис.2.2. Графическая интерпретация решения.
И, наконец, подсчитаем потери от применения неоптимального лага:
Пусть dt - отклонение от . Возникающие потери, измеряемые в сальдовых единицах, есть разность:
Все рассуждения, приведенные выше касались одного отдельно взятого банка, однако лаг клиринга устанавливается клиринговой палатой, составленной из представителей всех банков-участников. Поэтому, лаг, являющий оптимальным для одного банка, может быть далеким от такового для остальных банков. Поэтому для учета интересов всех участников системы предлагается следующая модель.
Пусть в клиринговой системе участвует n банков. Обозначим, как и ранее – эффект от применения клиринга с лагом для i-го банка, вычисляемый по формуле (2.6), – средства i-го банка, необходимые ему для валовых взаиморасчетов (т.е. без клиринга). Тогда наиболее приемлемый для всех участников лаг клиринга рекомендуется искать, решив следующую задачу оптимизации:
(2.12)
т.е. максимизируется наименьший из удельных эффектов от применения клиринга для всех банков-участников.
2.4. Статистическая оценка оптимального лага.
На основе статистической выборки, включающей в себя ежедневные данные за четыре месяца, были получены следующие оценки вышеописанных параметров: i*=0.05, k*=v*=0.42. Подставив оценочные значения в формулу (2.9), получим следующую оценку оптимального лага клиринга t* =1,538372. Таким образом, на основе вышеизложенной модели оптимизации лага клиринга можно утверждать, что оптимальным в текущих условиях является лаг в полтора дня, т.е. 36 часов.
3. ППП «СИСТЕМА МЕЖБАНКОВСКОГО КЛИРИНГА»
3.1. Назначение и структура пакета
ППП «Система межбанковского клиринга» является практической реализацией идеи автоматизации клирингового процесса. Пакет охватывает автоматизацию как работы самой клиринговой палаты, так и работы банков-участников клирингового сеанса. ППП содержит два функционально различных программных модуля: «АРМ оператора клиринговой палаты» и «АРМ оператора банка» и представляет собой программный продукт, построенный по схеме «клиент-сервер». Сервером является модуль «АРМ оператора клиринговой палаты», а клиентом – модуль «АРМ оператора банка». В системе всегда действует один сервер и неограниченное количество клиентов. Модуль «АРМ оператора клиринговой палаты» устанавливается на сервере клиринговой палаты, а экземпляры модуля «АРМ оператора банка» – на серверах или рабочих станциях банков-участников клирингового процесса, по одному на каждый банк. ППП обеспечивает всю необходимую функциональность для работы клиринговой палаты, однако для реального внедрения необходима существенная доработка в области сохранения целостности данных и контроля доступа к ним. Однако эта доработка может производиться независимо от существующего кода стандартными средствами СУБД. Система взаимосвязанных таблиц данных сервера реализована на базе СУБД Oracle 7.3.3 Server. Рекомендуемыми операционными системами для этой СУБД являются SCO Unix версии 5.2 и выше либо Windows NT Server версии 4.0 и выше. Клиентская часть реализована на базе СУБД Personal Oracle 7.3.3. Удаленный доступ к серверу БД реализован с помощью стандартного средства СУБД Oracle 7.3.3 – Oracle SQL* Net. Графический пользовательский интерфейс обоих модулей реализован в RAD-среде разработки приложений Borland Delphi 3.0 Client/Server для операционной системы Windows 95 или Windows NT Workstation. Полный текст исходного кода ППП «Система межбанковского клиринга» приведен в Приложении 1.
3.2. Модуль « АРМ оператора клиринговой палаты»
Модуль «АРМ оператора клиринговой палаты» устанавливается на сервере клиринговой палаты и обеспечивает добавление и удаление банков-участников клиринговой системы, прием, обработку платежных документов, проверку их на наличие ошибок и проведение окончательных взаиморасчетов между банками-членами клиринговой палаты. Кроме того, данный модуль инициирует начало клирингового сеанса, ведет статистику платежей и закрывает сеанс по истечению заданного срока. Работой модуля управляет один человек – оператор клиринговой палаты, наделенный особыми полномочиями.
Главное окно модуля «АРМ оператора клиринговой палаты» выглядит следующим образом:
Рис.3.1. Главное окно модуля «АРМ оператора клиринговой палаты».
Пункт меню «Банки» содержит подпункты «Просмотреть» для просмотра списка текущих участников системы и удаления любого из них и «Зарегистрировать нового участника» для добавления новых банков. Список банков выглядит, как на Рис.3.2.
Рис.3.2. Окно со списком банков-членов клиринговой палаты.
При выборе подпункта «Регистрация нового участника» на экран выводится диалоговое окно для ввода необходимой информации об участнике. Его вид приведен на Рис.3.3.
Рис.3.3. Окно регистрации нового банка.
После выполнения регистрации на сервере новый банк-участник может запускать на своей рабочей станции модуль «АРМ оператора банка» и входить в систему указав необходимые имя пользователя и пароль.
Пункт меню «Сообщения» содержит один элемент – подпункт «Просмотреть». При выборе этого подпункта на экран выводится диалоговое окно следующего вида:
Рис. 3.4. Окно со списком полученных сообщений.
Основными функциями данного окна являются просмотр списка полученных сообщений и подтверждение тех из них, которые удовлетворяют требованиям клиринговой палаты.
Меню главного окна «Сеанс» содержит три подпункта «Начать сеанс», «Завершить сеанс» и «Показать текущие позиции» для инициализации клирингового сеанса, его завершения и для просмотра текущих чистых позиций соответственно.
3.2. Модуль « АРМ оператора банка»
Модуль «АРМ оператора клиринговой палаты» устанавливается на рабочих станциях банков-участников системы взаимозачета и обеспечивает следующие функции: подключение банка к текущему клиринговому сеансу, выход от сеанса, отсылку платежных сообщений, а также подсчет и просмотр окончательной чистой позиции банка. Работой модуля также управляет один человек – оператор банка.
Главное окно модуля «АРМ оператора клиринговой палаты» выглядит следующим образом:
Рис. 3.5. Главное окно модуля «АРМ оператора банка».
Данное окно содержит два основных пункта меню «Клиринговый сеанс» и «Сообщения». Первый из них имеет два подпункта для входа в клиринговый сеанс и выхода из него соответственно. Наиболее важным является пункт меню «Сообщения». Он имеет подпункты «Отправить сообщение» и «Показать сообщения». При выборе подпункта «Отправить сообщение» на экран выводится диалоговое окно для ввода параметров сообщения. Его вид показан на Рис. 3.6. Диалоговое окно отправки платежного сообщения.
Выбор подпункта «Показать сообщения» приводит к выводу на экран диалогового окна со списком сообщений, которые относятся к банку-владельцу запущенной копии модуля. Можно выбрать для показа входящие платежи, исходящие платежи или оба типа одновременно. Показываются лишь те сообщения, которые были подтверждены клиринговой палатой в модуле «АРМ оператора клиринговой палаты». Вид этого окна приведен на Рис. 3.7.
Рис 3.7. Окно со списком подтвержденных сообщений.
ЗАКЛЮЧЕНИЕ
В данном дипломном проекте освещены проблемы межбанковского клиринга и методы их решения, приведены реальные модели клиринговых систем. Кроме того, поставлена, математически сформулирована и решена проблема оптимизации важнейшего параметра клирингового цикла – лага клиринга. На основе реальных статистических данных получена статистическая оценка искомого параметра. Также приводится математическая модель обобщения полученных результатов для максимизации прибыли каждого из участников клиринговой системы.
Существенной частью работы в дипломном проекте является разработка пакета программных продуктов «Система межбанковского клиринга». Этот программный продукт является попыткой комплексной автоматизации клирингового процесса. Пакет полностью готов для тестового использования и сбора статистической информации, планируется его доработка в областях сохранности целостности данных, управления доступом и оптимизации производительности до уровня реальной системы.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Березина М.П., Крупнов Ю.С. Межбанковские расчеты. – М.: АО “Финстатинформ”, 1993.-142с.
2. Тосунян Г.А. Клиринг и межбанковские финансовые операции: основные понятия и финансовые инструменты. – М.: “Дело”, 1994.-56с.
3. Тосунян Г.А. Операционные технологии межбанковского финансового рынка. – М.: “Дело”, 1994.-122с.
4. Усоскин В.М. Современный коммерческий банк: управление и операции. – М.: ИПЦ “Вазар-Ферро”, 1994.-320с.
5. Каллаур П.В. Осуществление межбанковских расчетов по прочим платежам // Банкаўскі веснік – 1998. №1.
6. Жуков В.В. Модернизация платежной системы Беларуси // Банкаўскі веснік – 1997. №9. – С.3-6.
ПРИЛОЖЕНИЕ 1.
SQL-КОД ППП «СИСТЕМА МЕЖБАНКОВСКОГО КЛИРИНГА»
----------------------------------------------------
-- Модуль Banks
-- Содержимое :
-- 1. Sequence BankID_Seq
-- 2. Table Banks
----------------------------------------------------
PROMPT Creating sequence BankID_Seq...
-- Последовательность уникальных идентификаторов для банков-участников
CREATE SEQUENCE BankID_Seq
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
MINVALUE 1
NOCACHE
CYCLE;
PROMPT Creating table Banks...
-- Таблица банков, зарегистрированных в клиринговой палате
CREATE TABLE Banks
(
BankID Number(8) -- Индентификационный № банка
CONSTRAINT bankno_pk PRIMARY KEY,
BankName VARCHAR2(100) NOT NULL -- Наименование банка
CONSTRAINT bankname UNIQUE,
UserName VARCHAR(20) NOT NULL -- Имя пользователя для входа
CONSTRAINT username UNIQUE
);
-----------------------------------------------
-- Модуль BankState
-- Таблица состояния банков-участников в текущем сеансе
-----------------------------------------------
PROMPT Creating table BankState...
CREATE TABLE BankState
(
BankID NUMBER(8) -- Идентификатор банка
CONSTRAINT sessionbankid_fk REFERENCES Banks ON DELETE CASCADE,
BankStatus NUMBER(3) NOT NULL -- Статус банка в текущем сеансе
);
-----------------------------------------------
-- Пакет ClientUtils
-- Интерфейс модуля "АРМ оператора банка"
-----------------------------------------------
PROMPT Creating package ClientUtils...
CREATE OR REPLACE PACKAGE ClientUtils
AS
-- Возвращает флаг состояния текущей сессии
FUNCTION GetSessionStatus RETURN INT;
-- Процедура начала клирингового сеанса для банка-участника
FUNCTION StartBankSession(aBankID IN INT) RETURN INT;
-- Процедура завершения клирингового сеанса для банка-участника
PROCEDURE StopBankSession(aBankID IN INT);
-- Возвращает уникальный номер вызвавшего банка
FUNCTION GetOurID RETURN INT;
-- Возвращает окончательног сальдо банка
FUNCTION GetFinalSaldo(aBankID IN INT) RETURN INT;
-- Процедура отсылки в клиринговую палату платежа в "электронном" виде
PROCEDURE SendMessage(aSourceBankID IN INT,
aDebitBankID IN INT,
aCreditBankID IN INT,
aAmount IN INT);
END ClientUtils;
/
SHOW ERROR;
-----------------------------------------------
-- Пакет процедур для работы банков-клиентов клиринговой палаты
-----------------------------------------------
PROMPT Creating package body ClientUtils...
CREATE OR REPLACE PACKAGE BODY ClientUtils
AS
-- Функция возвращает флаг состояния текущей сессии
FUNCTION GetSessionStatus RETURN INT
IS
BEGIN
RETURN ServerUtils.SessionState;
END GetSessionStatus;
-- Процедура подключения банка к очередной сессии клиринговой палаты
-- Выполняется каждый рабочий день в определенное время после выполнения
-- на сервере КП процедуры инициализации клирингового сеанса
FUNCTION StartBankSession(aBankID IN INT) RETURN INT
IS
BEGIN
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)
IS
BEGIN
UPDATE BankState
SET BankStatus = GlobalConst.cBankStopWork
WHERE BankId = aBankID;
END StopBankSession;
-- Функция возвращает уникальный номер вызывающего банка
FUNCTION GetOurID RETURN INT
IS
Res INT;
BEGIN
SELECT BankID INTO Res FROM Banks
WHERE UserName = USER;
END GetOurID;
-- Функция возвращает чистую позицию банка по окончанию сеанса
FUNCTION GetFinalSaldo(aBankID IN INT) RETURN INT
IS
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)
IS
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;
/
SHOW ERROR;
-----------------------------------------------
-- Пакет CommonUtils
-- Интерфейс общих подпрограмм
-----------------------------------------------
PROMPT Creating package CommonUtils...
CREATE OR REPLACE PACKAGE CommonUtils
AS
-- Возвращает уникальный номер банка по его имени
FUNCTION GetBankID(aBankName IN VARCHAR2) RETURN INT;
-- Возвращает текущее дебетовое сальдо
FUNCTION GetCurrentDebitSaldo(aBankID IN INT) RETURN INT;
-- Возвращает текущее кредитовое сальдо
FUNCTION GetCurrentCreditSaldo(aBankID IN INT) RETURN INT;
END CommonUtils;
/
SHOW ERROR;
-----------------------------------------------
-- Процедуры и функции общего пользования
-----------------------------------------------
PROMPT Creating package CommonUtils...
CREATE OR REPLACE PACKAGE BODY CommonUtils
AS
-- Возвращает уникальный идентификатор банка-участника по его имени
FUNCTION GetBankID(aBankName IN VARCHAR2) RETURN INT
IS
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
IS
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
IS
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;
/
SHOW ERROR;
--------------------------------------------------------
-- Модуль содержит глобальные константы
--------------------------------------------------------
PROMPT Creating package GlobalConst
CREATE OR REPLACE PACKAGE GlobalConst
AS
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;
/
SHOW ERROR;
------------------------------------------------------
-- Модуль инициализации системы в СУБД Oracle 7.3.3
------------------------------------------------------
CONNECT INTERNAL
SPOOL createdb.log
SET ECHO ON
CREATE TABLESPACE "CLEARING" DATAFILE 'C:\ORAWIN95\DATABASE\clearing.dbf'
SIZE 5M REUSE DEFAULT STORAGE (INITIAL 10K NEXT 10K MINEXTENTS 1
MAXEXTENTS 120 PCTINCREASE 0);
CREATE USER "ALEX" IDENTIFIED BY "ALEX"
DEFAULT TABLESPACE "CLEARING";
GRANT "DBA" TO "ALEX" WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE to "ALEX" WITH ADMIN OPTION;
GRANT SELECT ANY TABLE to "ALEX" WITH ADMIN OPTION;
GRANT GRANT ANY ROLE to "ALEX" WITH ADMIN OPTION;
GRANT CREATE ANY SYNONYM to "ALEX" WITH ADMIN OPTION;
GRANT DROP ANY SYNONYM to "ALEX" WITH ADMIN OPTION;
GRANT EXECUTE ANY PROCEDURE to "ALEX";
GRANT CREATE USER to "ALEX";
GRANT ALTER USER to "ALEX";
GRANT DROP USER to "ALEX";
GRANT GRANT ANY PRIVILEGE to "ALEX";
SPOOL OFF
EXIT
--------------------------------------------------
-- Начальное создание объектов системы
--------------------------------------------------
PROMPT Creating databases and sequences...
@@consts.pkg
@@banks
@@messages
@@status
@@statinit
@@bnkstate
@@results
@@tmpres
@@statist
PROMPT Creating packages...
@@srvrutil.pkg
@@srvrutil.bdy
@@clntutil.pkg
@@clntutil.bdy
@@commutil.pkg
@@commutil.bdy
-------------------------------------------------------------
-- Таблица и последовательность для обработки сообщений
-------------------------------------------------------------
PROMPT Creating sequence Msg_Seq...
CREATE SEQUENCE Msg_Seq
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
MINVALUE 1
NOCACHE
CYCLE;
PROMPT Creating table Messages...
CREATE TABLE Messages
(
MessageID NUMBER(8) -- Номер сообщения
CONSTRAINT message_pk PRIMARY KEY,
SourceBankID NUMBER(8) -- Банк-источник сообщения
CONSTRAINT sourcebank_fk REFERENCES Banks ON DELETE CASCADE,
DebitBankID NUMBER(8) -- Банк-получатель
CONSTRAINT debitbank_fk REFERENCES Banks ON DELETE CASCADE,
CreditBankID NUMBER(8) -- Банк-плательщик
CONSTRAINT creditbank_fk REFERENCES Banks ON DELETE CASCADE,
Amount INT NOT NULL, -- Сумма
MsgStatus INT NOT NULL -- Статус сообщения
);
--------------------------------------------------------------
-- Таблица окончательных результатов клирингового сеанса
--------------------------------------------------------------
PROMPT Creating table Results...
CREATE TABLE RESULTS
(
BankID NUMBER(8)
CONSTRAINT resultbankid_fk REFERENCES Banks ON DELETE CASCADE,
DebitPos INT,
CreditPos INT
);
-------------------------------------------------------
-- Интерфейс модуля "АРМ оператора клиринговой палаты"
-------------------------------------------------------
PROMPT Creating package ServerUtils...
CREATE OR REPLACE PACKAGE ServerUtils
AS
SessionState INT DEFAULT GlobalConst.cSessionUnActive;
PROCEDURE StartClearingSession;
PROCEDURE StopClearingSession;
FUNCTION GetActiveBanksCountInSession RETURN INT;
-- Процедура регистрации банка-участника клиринговой системы
FUNCTION RegisterBank(aBankName IN VARCHAR2,
aUserName IN VARCHAR2,
aPassword IN VARCHAR2) RETURN INT;
PROCEDURE UnRegisterBank(aBankName IN VARCHAR2);
-- Процедура выхода банка из клиринговой системы
PROCEDURE UnRegisterBank(aBankID IN INT);
FUNCTION CheckMessage(aMessageID IN INT) RETURN INT;
PROCEDURE ConfirmMessage(aMessageID IN INT);
END ServerUtils;
/
SHOW ERROR;
-----------------------------------------------
-- Процедуры и функции сервера КП
-----------------------------------------------
PROMPT Creating package body ServerUtils...
CREATE OR REPLACE PACKAGE BODY ServerUtils
AS
-- Процедура инициализации клирингового сенса в клиринговой палате
-- Выполняется каждый день в определенное время
PROCEDURE StartClearingSession
IS
BEGIN
DELETE FROM Messages;
DELETE FROM BankState;
DELETE FROM Results;
DELETE FROM TmpRes;
FOR x IN
(
SELECT BankID
FROM Banks
)
LOOP
INSERT INTO BankState (BankID, BankStatus)
VALUES (x.BankID, GlobalConst.cBankNotWork);
END LOOP;
SessionState := GlobalConst.cSessionActive;
END StartClearingSession;
-- Процедура завершения клирингового сеанса
-- Выполняется каждый день
PROCEDURE StopClearingSession
IS
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
)
LOOP
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;
INSERT INTO Statistics(ItemNo, WorkDay, BankID, DebitPos, CreditPos)
SELECT Stat_Seq.NextVal, SYSDATE, BankID, DebitPos, CreditPos
FROM Results;
DELETE FROM Messages;
DELETE FROM BankState;
DELETE FROM Results;
DELETE FROM TmpRes;
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)
IS
BEGIN
DELETE FROM Banks
WHERE BankID = aBankID;
END UnRegisterBank;
-- Удаляет банк из числа участников по его имени
PROCEDURE UnRegisterBank(aBankName IN VARCHAR2)
IS
BEGIN
DELETE FROM Banks
WHERE BankName = aBankName;
END UnRegisterBank;
-- Проверяет допустимость поступившего платежного документа
FUNCTION CheckMessage(aMessageID IN INT) RETURN INT
IS
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)
IS
aMsgStatusINT;
aTmpIDINT;
aAmount INT;
aDebitBankINT;
aCreditBankINT;
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;
/
SHOW ERROR;
---------------------------------------------------------
-- Таблица и последовательность для ведения статистики
---------------------------------------------------------
PROMPT Create table Statistics...
PROMPT Creating sequence Stat_Seq...
CREATE SEQUENCE Stat_Seq
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
MINVALUE 1
NOCACHE
CYCLE;
CREATE TABLE Statistics
(
ItemNo NUMBER(8) -- Номер элемента выборки
CONSTRAINT itemno_pk PRIMARY KEY,
WorkDay DATE, -- Дата и время платежа
BankID NUMBER(8) -- Номер банка
DebitPos INT, -- Дебетовая позиция
CreditPos INT -- Кредитовая позиция
);
-----------------------------------------------
-- Заполнение таблицы классификаторов
-----------------------------------------------
PROMPT Inserting data into table Status ...
BEGIN
DELETE FROM Status WHERE StatusClass = 1;
INSERT INTO Status VALUES (1, GlobalConst.cStatusClass,
'Статус банка в текущем сеансе');
INSERT INTO Status VALUES (1, GlobalConst.cBankWork,
'Банк участвует в текущем сеансе');
INSERT INTO Status VALUES (1, GlobalConst.cBankStopWork,
'Банк закончил текущий сенс');
INSERT INTO Status VALUES (1, GlobalConst.cBankNotWork,
'Банк не участвует в текущем сенсе');
COMMIT;
DELETE FROM Status WHERE StatusClass = 2;
INSERT INTO Status VALUES (2, GlobalConst.cStatusClass,
'Статус сообщения о платеже');
INSERT INTO Status VALUES (2, GlobalConst.cMsgNotProcessed,
'Сообщение не обработано');
INSERT INTO Status VALUES (2, GlobalConst.cMsgSourceError,
'Банк-источник не работает');
INSERT INTO Status VALUES (2, GlobalConst.cMsgDebitError,
'Банк по дебету счета не работает');
INSERT INTO Status VALUES (2, GlobalConst.cMsgCreditError,
'Банк по кредиту счета не работает');
INSERT INTO Status VALUES (2, GlobalConst.cMsgProcessed,
'Сообщение обработано и требует документального подтверждения');
INSERT INTO Status VALUES (2, GlobalConst.cMsgAccepted,
'Сообщение обработано и принято в систему взаимозачета');
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
(
BankID NUMBER(8)
CONSTRAINT tmpresbankid_fk REFERENCES Banks ON DELETE CASCADE,
DebitPos INT,
CreditPos INT
);
---------------------------------------------------
-- Удаление объектов системы
---------------------------------------------------
PROMPT Deleting databases...
SET ECHO ON;
DROP SEQUENCE Stat_Seq;
DROP TABLE Statistics;
DROP TABLE BankState;
DROP TABLE Status;
DROP SEQUENCE Msg_Seq;
DROP TABLE Messages;
DROP TABLE Results;
DROP TABLE TmpRes;
DROP SEQUENCE BankID_Seq;
DROP TABLE Banks;
PROMPT Deleting packages...
DROP PACKAGE BODY ServerUtils;
DROP PACKAGE ServerUtils;
DROP PACKAGE BODY ClientUtils;
DROP PACKAGE ClientUtils;
DROP PACKAGE BODY CommonUtils;
DROP PACKAGE CommonUtils;
SET ECHO OFF;
----------------------------------------------------------------