Тел.факс: +7(831)437-66-01
Факторинг  Анализ финансовых западных рынков 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [ 84 ] 85 86 87 88 89 90 91 92

Приложение 2

Программы на языке GAUSS

в книге Хаос и порядок на рынках капитала я привел несколько профамм на языке BASIC, так что читатели могли экспериментировать с вычислением корреляционных размерностей и показателей Ляпунова. Я с удивлением обнаружил, что некоторые читатели предполагали, что я провел большую часть моего исследования с использованием BASIC, и, по некоторым причинам, это понизило его достоверность. Хотя я и не думаю, что есть что-то плохое в использовании BASIC, я, тем не менее, использую и другие языки для более сложных манипуляций с данными. Мой текущий выбор - язык GAUSS, созданный компанией Aptech Systems в Сиэтле, штат Вашингтон. GAUSS - язык профаммирования высокого уровня, который я нахожу очень эффективным для работы с большими файлами данных. В работе Хаос и порядок на рынках капитша я не привел профамму для вычисления нормированного размаха, поскольку я думал, что версия BASIC будет очень эффективной, и я был неуверен, насколько широко использовался язык GAUSS среди предполагаемой аудитории той книги. По замыслу эта книга является более технической, и кажется разумным привести здесь мои профаммы на языке GAUSS.

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



ВЫЧИСЛЕНИЕ НОРМИРОВАННОГО РАЗМАХА

Программа К/З-анализа может либо считывать информацию из файла данных на языке GAUSS, либо импортировать файл ASCII. Она разбивает набор данных на четные приращения, которые используют и начальные, и конечные точки, как описано в Главе 4. Следовательно, вы должны выбрать такие длины данных, которые имеют больше всего делителей. Если Вы вводите 499 наблюдений, вы не получите результат. Профамма в ее те1ацей форме берет сырой файл данных (например, цен) и сначала вычисляет логарифмические разности. Затем она проводит AR(1) анализ и берет разность. Ряд данных АК(1)-разностей передается далее в раздел R/S-анализа профаммы. Таким образом, для перехода в раздел R/S-анализа входной файл должен иметь на два наблюдения больше, чем вы хотите. Если вы хотите провести анализ для i = 500 наблюдений, вы должны ввести 502 цены.

Профамма выюдит log(R/S) и log(i) для AR(l)-paзнocтeй и размещает их в файле ASCII, который называется dlyarlasc. Файл ASCII можно переименовать и использовать в качестве входных данных для любого пакета, который вы используете для фафического представления и регрессии. V-статистика рассчитывается из этого выходного файла. Как я уже говорил, я предпочитаю делать это в крупноформатной электронной таблице.

Входной файл может бьпъ либо набором данных на языке GAUSS, либо файлом ASCII. Набор данных на языке GAUSS, который используется здесь, представляет собой длинный ряд ежедневного индекса Доу-Джонса для акций промышленных компаний, использовавшийся на протяжении всей книги. Для более коротких файлов из других источников я исполью формат ASCII. Входной файл ASCII называется prices.pm.

©This opening section (which has been REMd out) reads a GAUSS dataset.@

ex = djal.dat ;

p = seekr (ex,l) ;

sret = readr (ex, 27002) ;

datr=sret [.,1] ;@

©This section reads an ASCII file as input© load sret [] = prices.prn; datx = sret [.,1]; datr=datx;

©calculate number of observations to the lower 100 + 2@ obv= (int( (rows(datr)-l)/100)*100)+2; @Calculate the log returns© datn= (ln(datr [2:Qbv]./datr[l:Qbv-l])) ctv = obv-1 ;



@Таке AR(1) residuals©

yi=datn [2 : obv] ; xi=datn [ 1; obv-1 ] / xi2=xi2;

ybar=meanc (yi) ; xbar=meanc (xi) ;

xy=yi.*xi / sxx = obv*sumc (xi2) - (suinc(xi))2 ;

sxy=obv* (suinc(xy)) -sumc (xi) *suitk:: (yi) ;

slope = sxy/sxx; const=ybar-slope*xbar;

datx = datn [2:obv] - (const+slope *datn [l:obv-l]);

clear datn; obv = rows (datx);

©Calculate R/S@

1=9; ©Starting value of тлпЬег of observations for R/S calculation©

do while i<obv-l;

i=i+l; n= floor (obv/i); num= (obv/i);

if n<num; goto repeat: endif; ©This sect ion checks \,7hether we have an even increment of time. If not, we skip to the next i.©

xl = reshape (datx,n,i) ; ©time series is reforraazted into n X i matrix, to calculate R/S for periods of length i.©

mu = meanc (xl) ; xl = xl-mu; ©sample mean is

calculated and subtracted©

sig = stdc (xl); ©sample standard deviations©

sum=cumsumc (xl); ©cumulative deviations fiom mean©

max=maxc (sum) ; min = mine (sum) ; ©maximum and minimum

deviations fronti mean©

r=max-min; ©range calculation©

rs = r./sig; ©rescaled range©

a = log (meanc (rs)) ; b=log(i); ©log of the average R/S value,

and number of obstjrvations, i©

©Print to File© printdos \27[=6h ; с = a - b;

output file = dlyarl.asc on; print с ;

repeat:endo;



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [ 84 ] 85 86 87 88 89 90 91 92