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

СПИСОК ЛИТЕРАТУРЫ

1. Танаев B.C., Гордон B.C., Шафранекий Я.М. Теория расписаний. Одностадийные системы. М.: Наука, 1984.

2. Federgruen A., Groenevel Н. Preemptive scheduling of uniform machines by ordinary network flow technique // Management Science. 1986. 32. N 3. P. 341-349.

3. Gonzales Т., Sahni S. Preemptive scheduling of uniform processor systems // J. Ass. Comput. Mach. 1978. 25. N 1. P. 92-101.

4. Давыдов Э.Г. Исследование операций. M.: Высшая школа, 1990.

5. Филлипс Д., Гарсиа-Диас А. Методы анализа сетей. М.: Мир, 1984.

Поступила в редакцию 14.01.09

УДК 517.518.85

В.А. Лапшин1

ОПРЕДЕЛЕНИЕ СРОЧНОЙ СТРУКТУРЫ ПРОЦЕНТНЫХ СТАВОК

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

Ключевые слова: кривая доходности, экспоненциально-синусоидальные сплайны, разрывная замена времени, принцип максимума Понтрягина.

1. Введение. Срочная структура процентных ставок (бескупонная кривая доходности), лежащая в основе теории оценки активов с фиксированным доходом и являющаяся одним из наиболее дискуссионных вопросов проведения эффективной долговой и денежной политики, составляет предмет интенсивных зарубежных исследований уже более 30 лет. В России широко используется модифицированная кривая доходности к погашению, где вместо срока до погашения используют дюрацию, отвечающую плоской срочной структуре процентных ставок, а общепризнанной в мире модели построения кривой бескупонной доходности до сих пор не существует [1]. Тем не менее для ряда приложений необходима именно бескупонная кривая доходности. Например, ее необходимо использовать для оценки инвестиционных проектов, для оценки приведенной стоимости потока платежей, для задач ценообразования некоторых финансовых инструментов, таких, как облигации, векселя, процентные свопы и др.

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

Рассмотрим бескупонную облигацию с единовременной выплатой основного долга со временем до погашения Т и номиналом 1. Обозначим ее цену в текущий момент времени d(T). Эта зависимость называется функцией дисконтирования.

Задача определения срочной структуры процентных ставок непосредственно связана с задачей нахождения функции дисконтирования. Предполагается, что стоимость любой купонной облигации равна стоимости портфеля бескупонных облигаций с соответствующими сроками погашения. Тогда зависимость цены Р облигации от сроков г = 0,..., п, и объемов выплат Fj, г = 0,..., п, имеет вид

1 Факультет ВМиК МГУ, асп., e-mail: victor.lapshinQgmail.com.

п

Р = d(U)Fi, где d(t) — функция дисконтирования. И пусть на рынке торгуются N инструментов г=0

с ценами /'/,.. к = 1,... ,N, и объемами выплат /*",./,.. % = 0,... ,п, к = 1,... ,N, в моменты времени U, г = 0,... ,п, причем моменты ti выбираются общими для всех инструментов. При этом требуется, чтобы цены инструментов, предсказанные по найденной функции дисконтирования в соответствии с формулой цены, были приблизительно равны текущим рыночным ценам. Кроме того, требуется, чтобы эта функция была достаточно гладкой. Таким образом, приходим к задаче: найти функцию дисконтирования d(t), t ^ 0, удовлетворяющую следующим условиям:

1) d(t) не возрастает на всей области определения;

2) d{t) > 0, d(0) = 1;

п

3) d(ti)Fitk = Рк для всех k = l,...,N.

г=О

Связь между кривой доходности и функцией дисконтирования определяется способом начисления процентов; наиболее удобным является непрерывное начисление процентов. В этом случае кривая доходности r(t) и функция дисконтирования d(t) связаны соотношением d(t) = ехр(—r(i)i). Соответ-

t

ственно мгновенные форвардные процентные ставки определяются соотношением r(t) = f /(г) dr.

о

В такой постановке эта задача является некорректно поставленной. В самом деле: из приведенных условий можно определить только значения функции дисконтирования в точках разбиения, т. е. определить d(ti), причем единственным образом это можно сделать лишь в случае, когда система в условии 3 является определенной, что априори можно гарантировать только в тривиальном случае, когда ни одна облигация не имеет купонных выплат (времена погашения облигаций обычно не совпадают). Иначе требуется специальным образом сформированная выборка облигаций, что сильно ограничивает общность метода. Таким образом, в общем случае однозначному определению не поддаются даже d(ti), не говоря уже о значениях d(t) в промежуточных точках. Кроме того, нетрудно убедиться в неустойчивости задачи даже в фиксированных точках. Принципы решения некорректно поставленных задач описаны в [19]. В соответствии с принципами, описанными там, а также с учетом того, что гладкость срочной структуры процентных ставок — экономически разумное требование [2, 10, 11, 12, 15], для регуляризации в дальнейшем мы наложим на структуру процентных ставок условие максимальной гладкости.

2. Обзор существующих методов. Подходы, традиционно используемые для определения срочной структуры процентных ставок (нахождения функции дисконтирования), можно разделить на три группы: "наивные", или инженерные методы; параметрическое оценивание и интерполяционные методы.

К "наивным" методам относятся, например, использование доходности похожей облигации, использование кривой доходности к погашению, метод пошагового определения процентных ставок (bootstrapping) [2], метод ядер [3].

Параметрический подход был впервые описан в работе [4]. По сей день широкое распространение имеют методы Нельсона-Зигеля [5], Свенсона [6]. Модели с произвольно задаваемым количеством параметров были предложены в [7] (экспоненциальные функции), [8] (экспоненциально-полиномиальные). На российском рынке также используется G-кривая, в плане параметризации являющаяся вариацией метода Нельсона-Зигеля [9].

Среди интерполяционных методов можно выделить сплайновый подход, который был впервые предложен в работе [10]. В [10] использовались квадратичные, в [11] и [12] — кубические сплайны. В [13] впервые были использованы В-сплайны, а в [14] — экспоненциальные. В работах [15] и [16] была подмечена важность гладкости решения и соответственно были использованы сглаживающие сплайны. Потом в [17] гладкость была поставлена в зависимость от срочности (от участка кривой). Путем комбинации экспоненциальных сплайнов и требования гладкости для регуляризации задачи в [18] были получены2 экспоненциально-синусоидальные сплайны.

Параметрические методы имеют ряд недостатков: экономически противоречивые результаты (использование параметрических методов, в частности широко известных методов Нельсона-Зигеля и

2 Этот результат де-факто был получен Смирновым и Захаровым в 2003 г. и представлен в виде доклада на заседании Европейской комиссии по облигациям (ЕРРАБ-ЕВС).

Свенсона, иногда приводит к результатам, абсурдным с экономической точки зрения); некорректные результаты в случае отсутствия сделок по бумагам с малыми или большими сроками до погашения; численная неустойчивость результата (часто отбрасывание одной бумаги существенно меняет форму кривой, особенно на коротком ее конце, около t = 0).

К недостаткам сплайновых (и непараметрических в целом) методов можно отнести высокую сложность получаемых моделей и связанную с ней трудоемкость оценки параметров модели. Также зачастую результат трудно интерпретируется с экономической точки зрения.

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

3. Новый подход к задаче. Используя идею, предложенную в статье [16], сделаем замену переменных: d(t) = exp(—z(t)). Теперь рассмотрим систему

ii = f{x), l^i = и.

Здесь u(t) — новая неизвестная функция, а / — некоторая заданная функция. Для обеспечения условий 1 и 2 потребуем, чтобы /(ж) ^ 0 и z(0) = 0. Для обеспечения условия 3 потребуем, чтобы решение доставляло минимум функционалу

N / п % 2

fc=l 4=0 '

Для регуляризации в соответствии с [19] мы добавим в этот функционал слагаемое, отвечающее за

2 т

"гладкость" получаемого решения: f u2(r)dr, где а — параметр регуляризации, регулирующий

о

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

{£ = /(ж), X = и,

, Т N / п \ 2

J{u) = %- / и2{т) dT + | £ wЛ £ e-*MFitk min.

0 fc=l \г=0 /

ti^-t

Введем новые переменные: yk(t) = £ Fijke~zS(ti\ к = 1 Тогда задачу можно записать в

г=0

виде

'z = f(x), z( 0) = 0, X = и, ж(0) = Xq,

п

< Ук=т, Fiike~zS(t - и), ук(0) = 0,

г=0

2 Т N J(xQ,u) = %-/ и2(т) dr + ^ J2 wk(yk(T) - Рк)2 min, О к= 1

где 6(х) — дельта-функция Дирака, сосредоточенная в нуле. Для применения принципа максимума Понтрягина мы воспользуемся "разрывной" заменой времени. Введем функцию v(t), останавливаю-

щую время, и запишем функционал как еще одну фазовую переменную:

(¿ = /(а;М*), *(0) = 0,

X = ж(0) = Жо,

п

Ук = Е Fi,ke-Z(l - ук{0) = -Рк,

г=0

2 N п

Х0 = \u2v{t) + Yi wk(yk - Рк) Е Fiike~z(l - Vi(t)),

fc=l г=0

Здесь

J(x0,u) = xq(T) min.

,(i) = .min „(*), = № ^ + i;ii + i + l],i = 0,...,n,

г=о,...,п i, иначе.

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

Гамильтониан системы

„2

N

H(z,x,y,ip,u,t) = -Ц-u2v{t) - ^2'wk(yk - Pk)^Fiike Z(1 - +

2

fc=l i=0

N n

iizf{x)v{t) + ijxuu(t) + £ -

k=1 ¿=0

Здесь ф = {фо,,фг-,Фх-,Фк) (мы сразу положили фа = —1).

В соответствии с принципом максимума для оптимальной пары ((г, х, у), и*) существуют функции Фг,Фх,Фк, такие, что

х, у, ф, и*, I) = тах х, у, ф, и,

и

N п N п

Фг = ~ ^ У}к^Ук ~ Рк) Е ~ "*(*)) ~ "*(*))'

к=1 г=0 к=1 г=0

Фх = -фх!'{х)и{г),

Фк = ™кУк-

Условия трансверсальности дадут

Ы?) = Ы о) = Фх(т) = фк(т) = о.

С учетом этого найдем и при г/(£) = 1: и = . Очевидно, значение и при г/(£) = 0 ни на что не влияет.

Кроме того, попытаемся найти ф. Введем новую переменную дк = ук(Т):

Фк = WkiVk ~ Як),

N

Фг = ^^2wk(qk - Z(1 -Vi(t)).

k=1 i=0

Учитывая структуру а также то, что z,x = const при v(t) = О,

N ti+i>t

= £>k(<fc "-Pfc) J] Fitke~zM.

k=1 г

Видно, что фг — кусочно-постоянная функция. Пусть фг = с\ на [¿¿_ 1 + i, ti + г), где

N п

с* = Тпк(дк - Рк)УРа,ке-<*'+8К

к=1 5=г

Решая систему, находим

с

ж =--г € [¿¿-1 + г, и + г).

аг

Здесь все упирается в вид функции /(ж), про которую мы предположили только неотрицательность. Для дальнейшего изложения будет разумно положить /(ж) = ж2, как это было сделано в [1В]3, тогда имеем

ж =--

а1

2с-

(ж - Хх)Ш) = О, А =--ж(0) = ж(Т) = 0,

а1

ж = 0 при = 0.

Решая это уравнение, получим

Х=р^1фх1

где т = !/(<), г(0) = О,

бЬ х/ЛГТ \ \ П

зЬч/АТ^-¿¿-О' г '

т

Лг; = 0.

¿¿-¿¿-1' г

Заметим, что если существует оптимальное решение, то существует также оптимальное решение, которое удовлетворяет условию ж ^ 0. В самом деле, рассмотрим точку 21, в которой ж = 0, а и < 0. Если таких точек нет, то ж ^ 0 везде, так как ж(0) ^ 0. Начиная с этой точки (£ > положим и1 = —и, ж1 = —ж. Значения г и ]' и2 с1т останутся такими же в силу того, что туда входят только квадраты величин ж, и. После этого берем следующую точку I2, в которой ж = 0, и < 0. В результате получим ж*, и*, такие, что ж* > 0.

2

Указанное свойство влечет А г ^ — (см. выражение (3)).

Запишем теперь условие непрерывной дифференцируемости х(1) (этот факт следует из того, что ж кусочно-непрерывна):

^Рг-хФ'х^) + Ргф'х^ - 1) = —(**+1 ~ *г) + Рг+\Ф'х1+1 (0).

Это условие, а также условия ж(0) = ж(Т) = 0 можно записать как В\р = Вср = 0, так как А* и Сг связаны взаимно однозначным соотношением. Но матрица Вс квадратная, а у уравнения Вср = 0 существует нетривиальное решение. Следовательно, Вс имеет неполный ранг и можно положить одну переменную (ро) свободной, а остальные выразить через нее. Уравнение примет вид Аср = /сРа, а переменные р будут выражаться так: р = роА~1 /с, где матрица Ас треугольная с ненулевыми элементами на диагонали.

Таким образом, мы получаем 2п + 1 уравнений и 2п + I неизвестную:

N п

Сг = Е ™к(Чк - Рк) Е ,

к= 1 5=г т

А СР = /сРО,

det Ас = 0.

Значение находится при известных р, с*, так как для к, известно выражение (1), (2).

Но практика показывает, что решение этой системы происходит довольно медленно. Гораздо лучше зарекомендовал себя следующий метод: требование удовлетворения уравнению (4) нужно вставить

3 Стоит, однако, заметить, что это не единственно возможный вариант. Так, например, заслуживает рассмотрения выбор f(x) = ех, также дающий аналитическое решение.

в функционал, который минимизируется в методе, описанном в [18]. Заметим, что в рамках подхода, использованного для получения указанного метода, уравнение (4) получить невозможно. В то же время экспериментально подтверждено, что указанная добавка существенно повышает скорость сходимости итерационного процесса.

4. Выбор начального приближения. Предложим также метод нахождения начального приближения для итерационных алгоритмов минимизации. Введем новый набор параметров di = d(ti), d = (d0, • • •; dn)T, и перенесем требование гладкости на функцию d(t). Получим задачу

'Fd = P,

/(d"(t))2 dt min, to

.(¿o = l, di ^ di+1 > 0,

где p — матрица потоков платежей, /<',./. — размер платежа по к-му инструменту в момент а Р = (Pi,...,Pk)T — вектор цен инструментов. Как и прежде, условие равенства Fd = Р заменим на условие минимума квадрата невязки ||Fd — Р\\2 —> min. Кроме того, заменим интеграл на интегральную сумму по решетке с узлами в ¿¿, а производную заменим на ее разностный аналог на той же сетке.

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

Таким образом, получим задачу

Г IIFd

РII2 ^ min,

D2d\\2 —> min,

{d0 = l, di Js di+1 > 0, которую можно переписать в виде задачи квадратичного программирования

Ad < Ъ.

Для ее решения существуют высокоэффективные алгоритмы.

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

Для перехода от переменных di к переменным Xj можно использовать следующий алгоритм.

1. Определим вспомогательные величины f]C из выражения

^ к=1 ' к

2. Зафиксируем произвольные р^ г = 0,..., п.

3. Определим Аг из равенств

гг ti

1к= I /(¿)2Л= I {р^гфхАи ^ ^ + Piфxi{t ^ и-г))2 dt.

4. Рассмотрим функционал

п-1

Про,    ,Рп) = + 0) - Г {и - О))2 + f(to + О)2 + f'(tn - О)2,

г= 1

где f(t) определена выражением (2), (3) с найденными Ai,..., An, и решим задачу

1(Ро,-  ,Рп) ^ min .

Р0, — ,Рп

Найденные значения р0,... ,рп и соответствующие им Ai,..., Ап и будут определять найденную приближенным методом функцию.

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

5. Основные результаты. В работе проведено еще одно исследование задачи определения временной структуры процентных ставок. Использованный подход является новым в части экономического обоснования сделанных предположений и наложенных априори условий. Предлагается новая формализация задачи, которая позволила глубже захватить внутреннюю структуру модели и получить более качественный результат по сравнению с предшествующими работами [16] и [18], развитием которых является данная статья. Тем не менее предложенная формализация вполне отвечает духу подхода [18] и сохраняет все его преимущества — экономическую обоснованность предположений и экономический смысл решения, в частности свойство невозрастания результирующей функции дисконтирования.

Полученный результат является замкнутым решением задачи. Это означает, что получено столько же уравнений, сколько неизвестных. Предыдущие результаты [16, 18] предполагали решение мини-мизационных подзадач, так как количество уравнений не было достаточным. На основе полученного решения построен и реализован численный алгоритм нахождения функции дисконтирования по реальным данным.

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

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

СПИСОК ЛИТЕРАТУРЫ

1. Балабушкин А., Гамбаров Г., Шевчук И. Оценка срочной структуры процентных ставок // Рынок ценных бумаг. 2004. № 13. С. 44-52.

2. Carleton W.T., Cooper I. A. Estimation and uses of the term structure of interest rates // J. Finance. 1976. 31. N 4. P. 1067-1083.

3. Tanggaard C. Kernel smoothing of discount functions // Working Paper. Aarhus School of Business. 1992. N 21. P. 1-10.

4. Cooper I. A. Asset values, interest rate changes and duration // J. Fin. Quant. Anal. 1977. N 12. P. 701-724.

5. Nelson C., Siegel A. Parsimonious modeling of yield curves // J. Bus. 1987. N 60. P. 473-489.

6. Svensson L. Estimating forward interest rates with extended Nelson & Siegel method // Sveriges Riskbank Quartely Review. 1995. N 3. P. 13-26.

7. Wiseman J. The exponential yield curve model // European Fixed Income Research. Technical Specification. JP Morgan, 1994.

8. Bjork Т., Christensen J. Interest rate dynamics and consistent forward rate curves // Working Paper Series in Economics and Finance. Stockholm: Stockholm School of Economics, 1997. P. 1-38.

9. Балабушкин А., Гамбаров Г., Никитин А., Шевчук И. Кривая бескупонной доходности на рынке ГКО-ОФЗ // Рынок ценных бумаг. 2006. № 3. С. 68-77.

10. McCulloch J. Measuring the term structure of interest rates // J. Bus. 1971. 44. N 1. P. 19-31.

11. McCulloch J. The tax adjusted yield curve // J. Finance. 1975. N 30. P. 811-829.

12. Shea G. Pitfalls in smoothing interest rate term structure data //J. Fin. Quant. Anal. 1984. 19. N 3. P. 253-269.

13. Steeley J. Estimating the gilt-edged term structure: Basis splines and confidence intervals //J. Bus. Fin. Acc. 1991. 18. N 4. P. 513-529.

14. Vasieek О., Fong G. Term structure modeling using exponential splines // J. Finance. 1982. 37. N 2. P. 339-348.

15. Fisher M., Nychka D., Zervos D. Fitting the term structure of interest rates with smoothing splines // Working Paper. Finance and Economics Discussion Series. Washington, DC: Federal Reserve Board, 1995. N 95-1.

16. Adams K., Van Deventer D. Fitting yield curves and forward rate curves with maximum smoothness // J. Fixed Income. 1994. 1. N 4. P. 52-62.

17. Waggoner D. Spline methods for extracting interest rate curves from coupon bond prices // Federal Reserve Bank of Atlanta Working Paper 97-10. 1997. P. 1-23.

18. Лапшин В. А. Об определении временной структуры процентных ставок // Сб. статей молодых ученых факультета ВМиК МГУ. Вып. 3. М.: МАКС Пресс, 2006. С. 92-98.

19. Тихонов А.Н., Арсенин В.Я. Методы решения некорректных задач. М.: Наука, 1979.

Поступила в редакцию 29.04.09

УДК 519.682,004.622

H.М. Ершов1

ЯЗЫК ОПИСАНИЯ СТРУКТУРИРОВАННЫХ ДАННЫХ TABULA

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

Ключевые слова: язык описания данных, иерархическая модель, упорядоченные деревья.

I. Введение. Язык Tabula предназначен для описания структурированных данных. Под данными понимается набор именованных записей, содержащих список значений — атрибутов. Под структурированностью — иерархическая (древовидная) упорядоченность записей. Областью применения языка Tabula является прежде всего подготовка пользователем входных данных для программ. Также этот язык может использоваться для обеспечения взаимодействия (по данным) разных программ.

Примерами простейших языков описания структурированных данных являются язык описания ini-файлов, используемый в ОС Windows, и сходный с ним язык описания входных данных (namelists) в языке Фортран [1]. В обоих случаях данные представляются множеством пар имя-значение, разбитыми на секции. Таким образом, используется двухуровневая иерархия. Записи нижнего уровня характеризуются уникальным (внутри секции) именем.

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

С целью преодоления указанных недостатков языка XML был разработан ряд языков, решающих тем или иным образом перечисленные проблемы. Большую часть в этом ряду занимают так называемые языки-адаптеры (PYX, SOX, SLiP, SXML и др.), которые полностью сохраняют семантику языка XML, но используют более простую (визуальную) структуру, основанную либо на табуляции, либо на

1 Факультет ВМиК МГУ, с.н.с., к.ф.-м.н., e-mail: ershovnmQgmail.com.