Size: a a a

Язык программирования Julia / Julia programming language

2020 January 24

VS

Vladimir Samoylov in Язык программирования Julia / Julia programming language
Речь идёт о данных вот такого рода
Пока Вы не определите формально что на таких данных есть группа , а что нет - задача неопределённая:)
источник

VS

Vladimir Samoylov in Язык программирования Julia / Julia programming language
Ключевой вопрос - что такое «сильно»:)
Поэтому при анализе процессных показателей используют скользящие средние разной длины и одна и та же последовательность может дать разное количество групп
источник

VS

Vladimir Samoylov in Язык программирования Julia / Julia programming language
Если данные имеют физическую природу (или финансовую) - то можно попробовать сделать спектральный анализ и выделить периоды основных колебаний процесса
На основе их и делать первый вариант скользящих окон для средних, относительно которых уже определять отклонения превыщающие статистические на предыдущем положении окна
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
Kirill Tsaregorodtsev
ну самое дурацкое, что я придумал: накапливать среднее и сравнивать его со следующим числом, если сильно скакнуло, то группа кончилась и начинаем следующую набирать
А, можно, кстати, только тогда скорее всего в группу войдут не все числа, так как размер её не ограничен.
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
Vladimir Samoylov
Если данные имеют физическую природу (или финансовую) - то можно попробовать сделать спектральный анализ и выделить периоды основных колебаний процесса
На основе их и делать первый вариант скользящих окон для средних, относительно которых уже определять отклонения превыщающие статистические на предыдущем положении окна
Ну по сути Вы практически описали мою задачу. У меня есть алгоритм для нахождения пиков и впадин на исторических данных и хотелось бы сгруппировать пики из одного массива, впадины из другого, чтобы выделить боковик на рынке.
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
То есть если у нас есть группы и пик и впадин, то на рынке боковик.
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
Если нет, то это либо флэт в виде треугольника, либо это тренд.
источник

VS

Vladimir Samoylov in Язык программирования Julia / Julia programming language
Я хочу сказать, что тренд недельный одновременно на месячном окне  уже никакой на тренд может быть,  а локальная флуктуация
То есть тут так вот сразу и не сказать,
Либо явно вводить недельные окно и месячное (к примеру) - у уже свёрткой на них выделять группы
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
Vladimir Samoylov
Я хочу сказать, что тренд недельный одновременно на месячном окне  уже никакой на тренд может быть,  а локальная флуктуация
То есть тут так вот сразу и не сказать,
Либо явно вводить недельные окно и месячное (к примеру) - у уже свёрткой на них выделять группы
Да, там будет явно задаваться таймфрейм.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Конечно, это не ответ на вопрос, но может имеет смысл посмотреть существующие решения?

https://github.com/JuliaQuant
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Я понимаю искушение изобрести что-нибудь простое, но трейдинг он в принципе сложный, люди не просто так работают и что-то придумывают.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Извиняюсь за оффтоп
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
Андрей Оськин
Извиняюсь за оффтоп
Спасибо за наводку - приду домой и посмотрю на либу.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ну, это не либа, это организация.

С практической точки зрения это значит что у них много разных пакетов посвящённых одной тематике.
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
https://julia.quantecon.org/index_toc.html

Тут тоже что-то может найтись
источник

ЛЛ

Логичный Лесник in Язык программирования Julia / Julia programming language
🔥
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Касаемо разбиения последовательности по фрагменты по условию. Например, у Ruby есть множество методов разбиения, включая разбивку со своей функцией разбиения по соседним элементам - https://ruby-doc.org/core-2.7.0/Enumerable.html#method-i-slice_when

Попытался найти эквивалент в Julia и не смог. partition() есть, но только на фиксированное количество. Функцию сравнения ему передать нельзя…. Решение мне удалось сделать, но какое-то оно громоздкое….
a = [1, 1.5, 2, 1, 6, 34, 35, 34.5]
b = reduce(a, init = [[]]) do acc, x
   subarr = last(acc)
   if iszero(length(subarr))
       push!(acc, [x])
   else
       if (x > last(subarr))
           push!(subarr, x)
       else
           push!(acc, [])
       end
   end
   acc
end |> x -> filter(i -> length(i) != 0, x)

# 2-element Array{Array{Any,1},1}:
# [1.0, 1.5, 2.0]  
# [6.0, 34.0, 35.0]
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
О, класс , пятничное упражнение для мозгов :-))
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Можно запилить что-нибудь полезное и сделать pr в itertools, они такое любят.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Если свой собственный итератор написать - это сойдёт за решение или обязательно нужно из стандартных функций собрать?
источник