Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 214
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ПС. И распараллеливайте вычисления lm(). Это как раз тот случай когда нужно
Спасибо.
Я видел как параллелится оперция в цикле через foreach %dopar%. А как это прицепить к скрытому циклу в DT не знаю. И не знаю, получится ли быстрее.
Спасибо.
Я видел как параллелится оперция в цикле через foreach %dopar%. А как это прицепить к скрытому циклу в DT не знаю. И не знаю, получится ли быстрее.
Я имел в виду эту часть кода
{
lapply(c(1:20), function(x) summary(lm(data = .SD[, c(1:x, 21), with = F], formula = V21 ~ . -1))$'fstatistic'[[1]])
}
, by = sampling
]
Вместо lapply - foreach()
С графиками которые строятся несколько десятков секунд что то не так.
Посмотрите этот пакет ("nhstplot"). Рисует быстро и по моему неплохо.
С графиками которые строятся несколько десятков секунд что то не так.
Посмотрите этот пакет ("nhstplot"). Рисует быстро и по моему неплохо.
Ааа. Я попробую, спасибо. Получается, цикл по lapply будет заменен параллельным циклом. А это все крутится в цикле DT, где 1000 итераций.
А есть еще способ эти 1000 итераций пропустить через foreach.
Я конечно посмотрю. Но, где полупрозрачность здесь, где сотни наложенных объектов? Протестируйте в тяжелых условиях и тогда поймем, быстрее или нет он.
Быстрое рисование полупрозрачностей можно добиться видеокартой с OpenGL. В R есть библиотека rgl для этого, она больше под 3d заточена, но если получится сделать ортогональную проекцию, и рисование линий, то будет как раз то что надо. У меня так сходу не вышло разобраться, нужно читать документацию.
Дописал:
Нарисовать полупрозрачные линии оказалось довольно просто, нужна только таблица с координатами X и Y. Можно ещё и третью колонку Z добавить для трёхмерности.
for(i in 1:1000){
lines3d(cbind(1:1000, cumsum(rnorm(1000))), col="blue", alpha=0.1)
}
Но это оказалось всё равно медленно. Судя про processexplorer - видюха используется всего на 5%, а один логический процессор на всех 100%. Мне кажется R слишком медленно подаёт данные в OpenGL, гораздо медленнее чем оно может принимать. Как-то так себе вышло.
Чисто ради позалипать :) выполните это, разверните окно на весь экран, и покрутите "фигуру" левой кнопкой мышки.
for(i in 1:100){
lines3d(cbind(cumsum(rnorm(100)), cumsum(rnorm(100)), cumsum(rnorm(100))), alpha=0.2)
}
наконец то сделал первую пробу пера идеи с кластерами которую озвучивал ранее, проба тестовая, просто чтобы посмотреть что да как, предикторы простые
скользящие ряды по 5 значений OHLC + volume + volatil итого 6 предикторов по 5 значений в каждом
обучающей истории 100 000 баров
каждый предиктор нормировался естесно ) и потом кластеризировался на 100 кластеров извините за туфтологию
целевую создал на скорую руку можно сказать от балды(пока только сел), просто взял разворот в таком виде : целевая это экстремум который выше 4-ех предыдущих свечей и выше 10-ти следующих свечей после него.
начал искать повторяющиеся паттерны...
лучшее что удалось найти с такими никакими предикторами это такой паттерн
91 6 30 41 91 100 0.4 9
в (open high low close volum volat) находятся номера кластеров которые характеризуют данный паттерн
target_avg - это с какой вероятностью мой разворот срабатывал в этом паттерне, найти паттерны на этих предикторах с вероятностью срабатывания 80-90% мне не удалось
target_count - это сколько раз этот паттерн попадался на данной истории, найти какие то значимые паттерны которые бы попадались 30-50 раз мне тоже не удалось на этих предикторах
Итого лучшее что я нашел на этих предикторах это паттерн в котором разворот(целевая) срабатывает в 40% случаев и наблюдений таких(кол. паттернов) всего 9 штук
Вот это и есть тот возможно единственный кусочек полезной информации, тот самый заветный "НЕ ШУМ" который можно выжать из этого набора предикторов и объясняет он всего лишь одну причину разворота, да и то на 40%, а причины у разных разворотов разные и их точно не 10 и не 30 имхо..
А теперь подумайте как алгоритм МО может объяснить все движения на рынке с такими предикторами??? это же невозможно,ведь предикторы могут объяснить всего 2% а все остальное шум...
плюс нет контроля статистической повторяемости те МО может принимать решение по всего одному наблюдению или двум, и так и есть по сути причем в подавляющем большинстве случаев под 95% случаев
ну да ладно я отвлекся... продолжим по паттерну , оценив качество входов на новой выборке скажу так, это далеко не мерседесс но если randomforest это убитый запорожец то этот подход девятка только с завода
Качество входов намного лучше, четче, ошибок меньше...
еще казус был такой, полный паттерн это
91 6 30 41 91 100
когда запустил разпознавание на новых данных в 50 000 свечей, то алгорим не нашел ни одного такого паттерна, те он просто не появился ))
пришлось урезать паттерн, оставил только цены
91 6 30 41 91 100
тогда уже нашлось около 20-ти таких паттернов
вот входы по паттерну, ничего не выбирал "аля лучшые входы " просто зафотал как есть в той последовательности в которой шли сделки, сделки не все конечно просто несколько первых, для того чтобы можно было оценить
еквити приятное, хоть и риск стоит больше чем предполагалось
напомню, это всего один паттерн, и только шорт
если кому то нужен код , то выложу, хотя сомневаюсь, все и так предельно понятно214 страниц - это оч много для изучения/освоения. При этом каждый о своем и не всегда понятном.)
А можно как то в одном посте, пусть даже не оч коротком, резюмировать эти все страницы? Типа: поставленная цель, методы решения, результаты, выводы.
Сразу скажу, что моя модель рынка - это случайный процесс (броуновское движение), точнее сумма нескольких (м.б. многих) таких движений охваченных обратной связью. И что либо прогнозировать или искать какие либо закономерности кроме статистических - абсолютно бесплодное занятие. Т.е., какие либо значимые предикторы просто не существуют, по крайней мере для спекулятивных целей.