четверг, 6 ноября 2008 г.

Результаты тестирования

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


В принципе результаты можно считать положительными. На отборе рост и на тесте тоже рост и удерживание на уровне. Но стабильности в модели нет.

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

Теперь попробуем дать ей две эпохи нижнего промежуточного обучения. Эксперимент запущен. Ждем результатов. Результаты скорее всего будут завтра.

Ждем.

Методы для генетики

После расчёта качества на популяции производим её трансформацию. Здесь в матрице популяции (pop) отдельные геномы - это строки. Отдельные гены - это числа в диапазоне от 0 до 1. Для трансформации популяции даем качество для каждого генома, коэффициент мутации (mu) и частоту шока (flash).

Трансформация популяции

function [pop,bi] = trans_pop(pop,kach,mu,flash)
[s,idx] = sort(kach) ;

gi = idx(1:($/2)) ;
bi = idx(($/2+1):$) ;

gi = gi(randperm(length(gi))) ;
bi = bi(randperm(length(bi))) ;

for i = 1:2:length(gi)
[pop(bi(i),:),pop(bi(i+1),:)] = xver(pop(gi(i),:),pop(gi(i+1),:),mu,flash) ;
end
endfunction


Скрещивание

function [gb1,gb2] = xver(gg1,gg2,mu,flash)
gb1 = gg2 ;
gb2 = gg1 ;

for k = 1:length(gg1)
if rand(1,1,"normal") > 0
gb1(k) = gg1(k) ;
gb2(k) = gg2(k) ;
end
end
gb1 = mutate(gb1,mu,flash) ;
gb2 = mutate(gb2,mu,flash) ;
endfunction


Мутация генома

function genom = mutate(genom,mu,flash)
for k = 1:length(genom)
my_mu = mu ;
if rand(1,1,"uniform") < flash
my_mu = my_mu * 10 ;
end
genom(k) = genom(k) + (rand(1,1,"uniform")*2-1)*my_mu ;
if genom(k) > 1
genom(k) = 1 ;
end
if genom(k) < 0
genom(k) = 0 ;
end
end

endfunction

Скрипт для компиляции C кода из Scilab.

[comp.sci]
mode(-1) ;
close
clear

function ulink_str(str)
while 1
[c,n] = c_link(str) ;
if c
ulink(n) ;
else
break ;
end
end
endfunction

function ul
ulink_str('calc_rek_zad') ;
ulink_str('calc_rek_zad_vib') ;
endfunction

ul ;

my_dir = pwd() + "\" ;
comp_sub_dir = "lib\" ;
f_name = "my_comp" ;
names = ["calc_rek_zad","calc_rek_zad_vib"] ;

// -----------------------------------------

c_name = f_name + ".c" ;

try
cd(my_dir + comp_sub_dir) ;

ddd = ls() ;
for k = 1:size(ddd,1)
if ~(ddd(k) == c_name)
mdelete(ddd(k)) ;
disp(ddd(k)) ;
end
end

res = ilib_for_link(names,f_name + ".o",[],"c") ;
disp(res) ;
end

cd( my_dir ) ;

В дочернем каталоге LIB держим библиотеку my_comp.c. В Scilab-е все время находимся в родительском каталоге. Правим код C в библиотеке и после правки запускаем скрипт перекомпиляции. Он сначала вычищает все подключенные рутины. Затем вычищает все в дочернем каталоге LIB кроме исходников на C. Затем запускает компиляцию.

Этот скрипт все делает. А то раньше пока все отключишь пальцы болеть начинают.

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

Получены первые результаты по новой модели

[081031_sim_all_test]

Получены первые результаты по тестированию новой модели.
Прогнозируем направление изменения курса валютной пары eurusd со скважностью 15 минут. Отбираем модели на диапазоне в 300 отсчетов и затем лучшую гоним на следующих 50-ти. Смотрим сколько знаков угадывает.


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

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

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

В результате компиляции большей части кода удалось получить хорошую производительность. Вчера за пару часов она успела пройти 9 эпох.

Думаю хватит порядка 50-100 верхних эпох чтобы получить результаты которые можно взять за основу для выводов. Так что за пару-тройку дней управимся.

пятница, 31 октября 2008 г.

Экспоненциальное сглаживание в Scilab

function res = sgl(x,alpha)
alpha1 = 1-alpha ;
res = x(:,ones(1,length(alpha))) ;
for k=2:size(x,1)
res(k,:) = res(k,:) .* alpha + res(k-1,:) .* alpha1 ;
end
endfunction

Компиляция библиотеки в Scilab

clear ;

genlib("my_lib","my_lib/") ;

lib("my_lib/") ;

exit ;

Запуск скриптов Silab из командной строки

Создаем пакетник (если в венике).

set PATH=%PATH%;C:\Program Files\scilab-4.1.2\bin\

Scilex.exe - nogui -nwni -nw -nb -f comp.sci

И все работает.

четверг, 30 октября 2008 г.

Первые эксперименты по Forex

Проведён первый эксперимент с котировками Forex.
Ниже график с результатами. На нем представлены относительные изменения со скважностью 15 минут за последние 5 дней. Данных очень много. Кроме того на график наложен результат экспоненциального сглаживания с коэффициентом 0.1.

вторник, 28 октября 2008 г.

Реальное моделирование.

До сих пор моделирование игры шло без учёта вероятности реализации по курсу закрытия предыдущего дня. Но в текущем дне окно максимума - минимума может уйти за пределы курса закрытия предыдущего дня. И тогда мы не реализуемся. Для этого в модель добавлен соответствующий анализ.

Кроме того добавлена комиссия за совершение сделки.

Теперь отчёты будут идти с учётом этих изменений.

Увеличение мутации и шока

Увеличение мутации и шока усилило модель.



понедельник, 27 октября 2008 г.

Почему компании не публикуют информацию о себе?

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

Зачем вовсю использовать Глонас

Зачем вовсю использовать Глонас. Это-же дорого в плане приобретения оборудования. Они уже начали ставить приёмники на автобусы. Приёмник только принимает координаты. Для отправки их в центр диспетчеру необходим передатчик. Наверняка это обычный сотовый телефон. Намного дешевле было-бы использовать определение координат как услугу сотовой компании. А вот они уже для своих целей пусть используют такие мощные методы как GPS и Глонас.

Примеры графиков из экспериментов по 23 модели


Эволюция коэффициентов модели по дням.



Симуляция - моделирование работы по моделям.

Снимок с экрана - процесс расчета 23 модели в Scilab-е.

Завершена сборка 23 модели

В пятницу завершил сборку 23 тестовой модели. Провел несколько расчётов. Результаты обнадёживают.