Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 212

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
R - потрясающая система, которая лично мне открыла глаза на то, как далеки мы были в MetaTrader/MQL от реальных потребностей "сделать сложные вычисления просто и прям сейчас".
У нас (С++ девелоперов) в крови подход "все можете сделать сами, а мы даем низкоуровневую базу и скорость вычислений". Мы фанатично относимся к производительности и у нас получается - MQL5 на 64 битах великолепен.
Когда я сам лично засел за R, то понял - нужно как можно больше мощных функций в одну строку и вообще дать возможность заниматься исследованиями.
Поэтому мы сделали резкий поворот и начали апгрейд MetaTrader 5:
Конечно, мы в начале пути, но уже понятен правильный вектор приложения сил.
Мотивация Ваша – великолепна! Если всё именно так как Вы говорите, то быстро обкусаете до костей нинджу c мультичартом)))
Однако, ИМХО, тут придется создавать нечто кардинально новое, то есть помимо того что Вам написал ув. мистер Решетов, нужна именно исследовательская студия, для работы с произвольными датасетами, не только с загружаемыми из рынка, так как многие вещи нужно пробовать на совсем тривиальных, синтетических примерах чтобы понять что происходит, ну Вы меня должны понять как программист программиста)) Графики отрисовать разные, скатеры, хитмапы, распределения и тп. В общем это было бы ооооочень круто, если прямо из метаэдитра было доступно такой набор инструментов, но откровенно говоря даже не надеюсь…
Но вообще конечно тренд Ваших мыслей мне нравится))
Это был вежливый ответ без деталей и проверки. И ответ не совпал с Wolfram Alpha и Matlab, что является проблемой.
Уходить в сторону не надо - корневой вопрос был четко обозначен.
Что значит, его ответ не совпал с Wolfram? Не совпал в том, что ответ человека был не "ноль"? Человек ответил, что не считает, что в нулевой точке, где интеграл = 0, плотность должна обязательно быть нулевой (я так поставил ему вопрос). Он прямо так и сказал. И добавил, что значение плотности в любой точке не релевантно (я читаю "нерелевантно" как не относящееся к рассматриваемому вопросу). Это вполне четкое математическое заявление.
В обсуждаемом вопросе важна математика.
Имеем интеграл такой-то функции (функции плотности вероятности гамма распределения). Все уже привыкли, что можно подсунуть в Wolfram уравнение с параметрами: указать область интегрирования и параметры функции, и он сам проинтегрирует и выдаст ответ. А вы задумались, что если бы вы сами сели, посчитали этот интеграл на заданной области, то получили бы 0 в нуле, и 1 на всей области, и какое-то значение [0,1] на какой-то подобласти. Просто решив уравнение!
То, что предел у функции плотности вероятности гамма распределения в крайней точке уходит куда-то в положительную область, это свойство этой функции. Не имеет отношение к тому, что получится интегрированием этой функции. Об этом человек и написал.
Я не уклоняюсь от корневых вопросов. Я еще раз повторю, что Наша точка зрения была подтверждена не зависящим от нас лицом - какая плотность в нуле не важно (не релевантно).
Мотивация Ваша – великолепна! Если всё именно так как Вы говорите, то быстро обкусаете до костей нинджу c мультичартом)))
Однако, ИМХО, тут придется создавать нечто кардинально новое, то есть помимо того что Вам написал ув. мистер Решетов, нужна именно исследовательская студия, для работы с произвольными датасетами, не только с загружаемыми из рынка, так как многие вещи нужно пробовать на совсем тривиальных, синтетических примерах чтобы понять что происходит, ну Вы меня должны понять как программист программиста)) Графики отрисовать разные, скатеры, хитмапы, распределения и тп. В общем это было бы ооооочень круто, если прямо из метаэдитра было доступно такой набор инструментов, но откровенно говоря даже не надеюсь…
Но вообще конечно тренд Ваших мыслей мне нравится))
Вы этот "выстрел" Решетова имеете в виду??
"Гнильё какое-то этот R - велосипед с квадратными колёсами. Что говорить о каких-то его пакетах, когда сама основа, т.е. ЯП в R кривой и нуждается в серьёзной доработке "драчевым напильником"? Какой может быть авторитет у тех, кто даже не удосужился за столько лет проверить корректность базовых функций в R? Какая может быть "сила" в слабом месте R - некорректности расчётов через него?
Хорошо, что MetaQuotes открыли глаза некоторым пользователям на то, что на самом деле представляет этот самый R, на фактах и тестах с открытыми исходниками, чтобы каждый мог самостоятельно перепроверить и убедиться, а не голословно. Не всем конечно открыли, т.к. отдельные религиозные фанатики из деструктивной секты R будут продолжать слепо верить в "непогрешимость" расчётов в их кривом языке и пакетах, вместо того, чтобы обратиться к представленным тестам и перепроверить их самостоятельно, а не фанатично гнать пургу, выгораживая кривизну R в качестве "общепринятого стандарта".
Теперь вполне очевидно, что лучше пользоваться функционалом MQL для создания торговых стратегий, поскольку результат будет более корректным, а пытаться делать это через кривой и косой R.
За конструктивный подход, тесты и их исходники, а также за выявление "голого короля - R", разработчикам MetaQuotes надо сказать отдельное спасибо! "
Вы этот "выстрел" Решетова имеете в виду??
нет, вот это сообщение:
R, как и многие другие ЯП, пока более удобен для машинного обучения по сравнению с MQL за счёт того, что в нём заведомо предусмотрен функционал для обработки данных в виде массивов. Дело в том, что выборка для машинного обучения - это чаще всего двумерный массив данных, а соответственно необходим функционал для работы с массивами:
А пока в MQL не будет реализован вышеуказанный функционал необходимый для обработки выборок в виде массивов, то значительная часть разработчиков алгоритмов машинного обучения предпочтёт другие ЯП, в которых всё это уже давно имеется в наличии. Или будет пользоваться неприхотливым MLP (алгоритмом 60-х годов прошлого века) из библиотеки AlgLib, в котором, если мне не изменяет память, для удобства двумерные массивы представлены в виде одномерных.
Конечно же функции плотностей случайных распределений - это тоже необходимый функционал. Но такие функции не всегда необходимы в задачах машинного обучения, а в некоторых и вообще не применяются. А вот операции с выборками, как с многомерными массивами - это то, без чего реализация алгоритмов машинного обучения не обходится ни для одной задачи, если конечно же это не задача обучить сетку вызубрить заведомо нормированные данные из тривиального ХОR.
Вы этот "выстрел" Решетова имеете в виду??
"Гнильё какое-то этот R - велосипед с квадратными колёсами. Что говорить о каких-то его пакетах, когда сама основа, т.е. ЯП в R кривой и нуждается в серьёзной доработке "драчевым напильником"? Какой может быть авторитет у тех, кто даже не удосужился за столько лет проверить корректность базовых функций в R? Какая может быть "сила" в слабом месте R - некорректности расчётов через него?
Хорошо, что MetaQuotes открыли глаза некоторым пользователям на то, что на самом деле представляет этот самый R, на фактах и тестах с открытыми исходниками, чтобы каждый мог самостоятельно перепроверить и убедиться, а не голословно. Не всем конечно открыли, т.к. отдельные религиозные фанатики из деструктивной секты R будут продолжать слепо верить в "непогрешимость" расчётов в их кривом языке и пакетах, вместо того, чтобы обратиться к представленным тестам и перепроверить их самостоятельно, а не фанатично гнать пургу, выгораживая кривизну R в качестве "общепринятого стандарта".
Теперь вполне очевидно, что лучше пользоваться функционалом MQL для создания торговых стратегий, поскольку результат будет более корректным, а пытаться делать это через кривой и косой R.
За конструктивный подход, тесты и их исходники, а также за выявление "голого короля - R", разработчикам MetaQuotes надо сказать отдельное спасибо! "
А Вы уже удалили свой пост про "норковый MQL"? Трёте свои посты так же, как радовские деятели трут свои фейсбуки после избрания Трампа.
Вот вам для развлечения пример с гамма распределением в Wolfram Alpha.
Ему задана функция, немного упрощенная функция плотности гамма распределения.
Суть - в знаменателе x. Предел справа, как вы можете видеть, при x->0 Wolfram оценивает правильно: inf.
То есть в пределе справа плотность в нулевой точке в бесконечности (это в точности ответ dgamma).
Проинтегрируем эту функцию на большом саппорте:
Интеграл равен 1 (округленно, конечно, потом что взят не полный саппорт).
Вывод, несмотря на то, что в крайней точке функция уходит в бесконечность, интеграл этой функции прекрасно считается как надо.
Вот вам для развлечения пример с гамма распределением в Wolfram Alpha.
Вывод, несмотря на то, что в крайней точке функция уходит в бесконечность, интеграл этой функции прекрасно считается как надо.
Спасибо за пример, вы правы. Этот интеграл сходится.
Предельные значения в точке x=0 также можно использовать для определения плотности и это не приведет к расходимостям.
Спасибо за пример, вы правы. Этот интеграл сходится.
Предельные значения в точке x=0 также можно использовать для определения плотности и это не приведет к расходимостям.
Спасибо! Уважаю.
Пример по R с пакетами для быстрой обработки.
library(data.table)
library(ggplot2)
start <- Sys.time()
set.seed(1)
dummy_coef <- 1:9
x <- as.data.table(matrix(rnorm(9000000, 0, 1), ncol = 9))
x[, (paste0('coef', c(1:9))):= lapply(1:9, function(x) rnorm(.N, x, 1))]
print(colMeans(x[, c(10:18), with = F]))
x[, output:= Reduce(`+`, Map(function(x, y) (x * y), .SD[, (1:9), with = FALSE], .SD[, (10:18), with = FALSE])), .SDcols = c(1:18)]
x[, sampling:= sample(1000, nrow(x), replace = T)]
lm_models <- x[,
{
lm(data = .SD[, c(1:9, 19), with = F], formula = output ~ . -1)$coefficients
},
by = sampling]
lm_models[, coefs:= rep(1:9, times = 1000)]
avg_coefs <- lm_models[, mean(V1), by = coefs]
plot(dummy_coef, avg_coefs$V1)
lm_models[,
print(shapiro.test(V1)$p.value)
, by = coefs]
ggplot(data = lm_models, aes(x = V1)) +
geom_histogram(binwidth = 0.05) +
facet_wrap(~ coefs, ncol = 3)
Sys.time() - start
Время работы: 5 сек. Построено 1000 линейных моделей. Каждая на 1000 наблюдениях.
[1] 0.8908975
[1] 0.9146406
[1] 0.3111422
[1] 0.02741917
[1] 0.9824953
[1] 0.3194611
[1] 0.606778
[1] 0.08360257
[1] 0.4843107
Все коэффициенты распределены нормально.
И ggplot-ик для визуализации.
И еще примерчик. Тоже соотносится с ворочанием большими выборками на предмет симуляции статистики.
########## simulate diffference between mean density with different sample size
library(data.table)
library(ggplot2)
rm(list=ls());gc()
start <- Sys.time()
x <- rnorm(10000000, 0, 1)
y <- rnorm(10000000, 0, 1)
dat <- as.data.table(cbind(x, y))
dat[, (paste0('sampling_', c(100, 1000, 10000))):= lapply(c(100, 1000, 10000), function(x) sample(x, nrow(dat), replace = T))]
dat_melted <- melt(dat, measure.vars = paste0('sampling_', c(100, 1000, 10000)))
critical_t <- dat_melted[,
{
mean(x) - mean(y)
}
, by = .(variable, value)]
ggplot(critical_t, aes(x = V1, group = variable, fill = variable)) +
stat_density(alpha = 0.5)
Sys.time() - start
gc()
Время работы 3.4 секунды.
Создаются нормально распределенные с центром в нуле выборки:
1000 по 10 000 пар значений
10 000 по 1000 пар значений
100 000 по 100 пар значений
Считается разница между средними (МО == 0) для каждой выборки.
Выводятся плотности распределения выборочных средних для выборок разного размера.
Только тут sampling_100 означает, что нужно 10 000 000 / 100, чтобы получить размер выборки. То есть для выборок меньшего размера стандартная ошибка больше...