Предсказание рынка на основе макроэкономических показателей - страница 9

 
transcendreamer:


я все-таки не соглашусь - регрессия прекрасно работает с любыми данными, не обязательно что лучше других методов, но все таки достаточно хорошо особенно если учесть крайнюю нетребовательность к вычислительным ресурсам  


 Регрессия НЕ работает с любыми данными. Особенно это относится к линейной регрессии, которая упомянута в начале этой ветки.

Проблема применения линейной регрессии может быть разделена на два уровня.

1. Первичная оценка коэффициентов регрессии. Именно ОЦЕНКА. Если мы записываем у=а+вх, то здесь уже не точность, так как регрессия - это не уравнение и правильная запись   у ~ а+вх, где знак тильды подчеркивает, что коэффициенты не являются константами, а являются оценками случайных величин с некоторой точностью, а посему складывать их, как Вы предлагаете в своем посте, нельзя. 

В соответствии с этим при использовании любого пакета по подгонке регрессии каждому коэффициенты сопоставляются некий набор цифр, который характеризует указанную величину коэффициента как случайную величину. Суммарный результат выводится в крайне правой колонки в виде звездочек. Три звездочки означает, что Вы можете воспринимать величину коэффициента как константу, а точнее как оценку случайной величины с небольшой ошибкой и имеющую небольшой разброс. Если звездочек нет, то приведенная величина вообще является пустым местом и в никаком виде использоваться не может.

Но это не все неприятности. И главные неприятности состоят в следующем.

2. Линейная регрессия применима ТОЛЬКО к стационарным данных, т.е. имеющих примерно постоянное мо и постоянную дисперсию. Упомянутое Вами преобразование, приводящие к удалению тренда - это и есть попытка привести к стационарному виду. Все это обощено в виде моделей ARIMA, но есть такие финансовые ряды, а их большинство, когда модели ARIMA не решают проблем.

Если не различать все эти тонкости, то результаты, получаемые с помощью линейной регрессии - пустая игра в цифирь.  

 
faa1947:

 Регрессия НЕ работает с любыми данными. Особенно это относится к линейной регрессии, которая упомянута в начале этой ветки.

Проблема применения линейной регрессии может быть разделена на два уровня.

1. Первичная оценка коэффициентов регрессии. Именно ОЦЕНКА. Если мы записываем у=а+вх, то здесь уже не точность, так как регрессия - это не уравнение и правильная запись   у ~ а+вх, где знак тильды подчеркивает, что коэффициенты не являются константами, а являются оценками случайных величин с некоторой точностью, а посему складывать их, как Вы предлагаете в своем посте, нельзя. 

В соответствии с этим при использовании любого пакета по подгонке регрессии каждому коэффициенты сопоставляются некий набор цифр, который характеризует указанную величину коэффициента как случайную величину. Суммарный результат выводится в крайне правой колонки в виде звездочек. Три звездочки означает, что Вы можете воспринимать величину коэффициента как константу, а точнее как оценку случайной величины с небольшой ошибкой и имеющую небольшой разброс. Если звездочек нет, то приведенная величина вообще является пустым местом и в никаком виде использоваться не может.

Но это не все неприятности. И главные неприятности состоят в следующем.

2. Линейная регрессия применима ТОЛЬКО к стационарным данных, т.е. имеющих примерно постоянное мо и постоянную дисперсию. Упомянутое Вами преобразование, приводящие к удалению тренда - это и есть попытка привести к стационарному виду. Все это обощено в виде моделей ARIMA, но есть такие финансовые ряды, а их большинство, когда модели ARIMA не решают проблем.

Если не различать все эти тонкости, то результаты, получаемые с помощью линейной регрессии - пустая игра в цифирь.  

у меня нормально работает ))) и как раз линейная регрессия

суммирование коэффициентов это грубый метод, согласен

анализ значимостей коэффициентов и анализ отклонений я пытался делать но на практике от него мало пользы как мне кажется 

намного проще и удобнее посмотреть как ведет себя итоговая кривая и насколько хорошо она примыкают теоретические значения к исходным данным визуально на графике

поэтому я беру вектор решений как есть и для большинства случаев этого достаточно

если полученный график хорошо ложится на данные то все в порядке 

я пробовал найти другие, более лучшие решения, другими методами - результат не сильно отличается от того что дает регрессия 

при этом я замечал что некоторые коэффициенты могут плавать в определенных границах и это не сильно влияет на итоговую кривую

но это и не страшно, все равно эти коэффициенты нестабильны, он будут постепенно меняться во времени, какой смысл их оценивать

насчет стационарности - конечно её нет на рынке, ну что ж делать тогда? 

наверное это не академично так делать как я делаю

но что тогда взять на замену?

 
transcendreamer:

.....

но что тогда взять на замену?

Вы ограничили себя линейной регрессией, но ведь можно поставить вопрос так: подобрать наиболее подходящий тип регрессий в зависимости от имеющихся задач. Прим можно все превеликое множество регрессий (не только линейных) считать кучей черных ящищков и сосредоточится на содержательных проблемах по оценке получаемых результатов. 

Что выскочить из линейной регрессии как из коротких штанишек на надо потратиться в смысле времени. 

Далее определиться с типом того, что вы предсказываете, а именно: собираетесь предсказывать величину, например цену валютной пары, или предсказывать направление движения цены, некую качественную характеристику "лонг-шорт" или другие приказы терминала. 

А теперь надо решиться на некие временные затраты.

На первом этапе в качестве двери в мир более 100 моделей всем рекомендую Rattle. Судя по уровню Ваших рассуждений о линейной регрессии - это день-два вашего времени. В результате Вы получите 6 типов моделей, одна из них почти Ваша любимая, только называется "обобщенная линейная", а вот остальные гораздо более интересные, с помощью которых можно реально делать модели предсказания.

 
faa1947:

Вы ограничили себя линейной регрессией, но ведь можно поставить вопрос так: подобрать наиболее подходящий тип регрессий в зависимости от имеющихся задач. Прим можно все превеликое множество регрессий (не только линейных) считать кучей черных ящищков и сосредоточится на содержательных проблемах по оценке получаемых результатов. 

Что выскочить из линейной регрессии как из коротких штанишек на надо потратиться в смысле времени. 

Далее определиться с типом того, что вы предсказываете, а именно: собираетесь предсказывать величину, например цену валютной пары, или предсказывать направление движения цены, некую качественную характеристику "лонг-шорт" или другие приказы терминала. 

А теперь надо решиться на некие временные затраты.

На первом этапе в качестве двери в мир более 100 моделей всем рекомендую Rattle. Судя по уровню Ваших рассуждений о линейной регрессии - это день-два вашего времени. В результате Вы получите 6 типов моделей, одна из них почти Ваша любимая, только называется "обобщенная линейная", а вот остальные гораздо более интересные, с помощью которых можно реально делать модели предсказания.

к сожалению как я уже говорил другие оптимизаторы не показали существенно лучших результатов по сравнению с лин.регрессией

возможно в некоторых научно прикладных задачах они дают преимущество но для трейдинга точный прогноз это иллюзия

та же GLM придумана была для страховщиков если не ошибаюсь, SVM и ADA слишком узко заточены, логистическая регрессия по понятным причинам не годится

нейросети и рандомные леса универсальны и более выгодны тем что обходят проблему нулевых корней и можно задать любую целевую функцию

но там действительно голову сломать можно во всяком случае для меня для гуманитария

для меня было открытием - метод главных компонент но не получилось применить его к своей задаче (портфели)

рандомные леса определенно стоят внимания, я планирую их более внимательно опробовать через некоторое время, но правда не рассчитываю что будет большой эффект

жаль что в rattle нет ГА, или я не нашел

 

"Убогой" линейную регрессию я бы не назвал. И предполагать что я не опробовал кучу других моделей тоже не нужно.

Всем известно что любая нелинейная модель y = f(x1,x2,...) может быть разложеня в ряд Тейлора:

y = a0 + a11*df/dx1*x1 + a12*df/dx2*x2 + ... + a21*d^2f/dx1^2*x1^2 + a22*d^2f/dx2^2*x2^2 + b11*d^2f/dx1/dx2*x1*x2 + ...

Те кто хорошо разбирается в математике знает что это является разложением функции f(x1,x2,...) на полиномные (более точно мономные) базисы x, x^2, x^3 и т.д. Линейная регрессия сохраняет только линейные члены этого разложения, поэтому явялется приближением первого порядка. Нелинейные базисы можно выбрать из разных известных полиномов, например Чебышева, Хермита, Лежендре и пр. Но правильным методом выбора полиномов является QR decomposition или в более общем случае выбор ортогональных полиномов принимая во внимание статистичекие свойства входов x1, x2, ... Нейронные сети пытаются делать такое же разложение но на exp функции входов согласно теореме Колмогорова. Это довольно неудобное разложение так как экспоненциальные функции входов не ортогональны друг другу, что ведёт к куче численных проблем и вариантов решения. В любом случае, все эти разложения нашей нелинейной функции будут иметь линейную модель как аппроксимацию первого порядка. Так что если линейная аппроксимация (регрессия) не даёт нам ожидаемого результата, то идти к более высоким степеням нелинейности смысла нет. Даже линейная регрессия может решаться разными методами (СКО, МНМ, и другими произвольными функциями ошибок), которые я все перепробовал.

Кстати, все эконометрические ARMA, ARIMA и прочие модели являются индивидуальными случаями вышеуказанной модели y[n] = f(x1[n-d1],x2[n-d2],...), в которой часть входов являются задержанными выходами, т.е. y[n-1], y[n-2], отсюда и название "авторегриссионые" модели. Хотя решать авторегриссионые модели методом СКО или МНМ вредно для здоровья т.к. полученные коэфициенты ведут к осцилирующим моделям. Нужны методы Бурга, Modified Covariance и пр. Но я эту "авторегриссионую" главу прошёл давно и возвращаться мне не хочется. Хотя моя модель рынка допускает выбор задержанного выхода как одного из входов. Но пока она ни разу не выбрала такого "авторегриссионного" входа, что означает что экономические показатели более пригодны для предсказания цены чем сама цена в прошлом (что составляет основу подавляющего большинства трейдеровских методов на основе тех анализа)

 
faa1947:

У меня предложение.

Скиньте цсв.файл с наименованием колонок. Укажите, какую (какие) колонки следует использовать в качестве целевых переменных. Естественно, что строка таблицы должна относиться к одному моменту времени.

Я загоню в Rattle и с Вашего разрешения выложу здесь результат по 6 очень приличным моделям.  


Предложение принимаю. Укажите допустимый формат файла данных. mat подойдёт? Уж больно много данных, CSV зажрёт весь диск. MAT only 6MB.

Но у меня условие: прогнозы делаются на участке от 2000 до 2015 года, но только на основе данных имеющихся в наличии до прогнозируемой даты. То есть, если делаете прогноз на Q1 2000, то оперируете данными до Q1 2000. Выбор предсказателей по всем достумным данным, включая 2015 год, а потом их использование для предсказания Q1 2000 года, даже если коэффициенты модели рассчитываются по данным до Q1 2000, это заглядывание вперёд. У меня была такая ошибка в прошлом и модель у меня имела ошеломляющую точность предсказаний. Короче, моё условие это: предсказатели выбираются и сама предсказывающая модель расчитывается по данным ДО предсказываемой даты.

 
gpwr:

Предложение принимаю. Укажите допустимый формат файла данных. mat подойдёт? Уж больно много данных, CSV зажрёт весь диск. MAT only 6MB.


 

Первая проблема файл. Надо думать. Я уверен, что МАТ берет R - R и  MATLAB  очень дружат, но я этого не умею делать. Как подготовлюсь - отпишу. 

 
gpwr:

"Убогой" линейную регрессию я бы не назвал. 



"Убогая" для нестационарных данных. 

И если кратко мои посты: инструмент должен соответствовать проблеме.

Для регрессий - нестационарность финансовых рядов является базовой проблемой. Поэтому при выборе инструментария необходимо смотреть как выбранный инструмент решает проблему нестационарности. Упомянутая мною ARIMA в определенной степени решает проблему нестационрности, а вот чтобы ряда Тейлора решали проблему нестационарности - не слышал. В рамках регрессий ARIMA не единственный инструмент, хотя и применяемый до сих пор в правительственных структурах США,  и не самый продвинутый. Из широко известных упомяну ARCH с кучей модификаций.

Результатом нестационарности является сверхподгонка модели. Проявляется в том, что можно построить модель с необыкновенной точностью, но она не работает вне выборки обучения, причем подло: то работает, то не работает. Ваши слова о превосходстве простых моделей перед сложными - общеизвестный факт и в основе лежит, что сложная модель гораздо проще сверхподогнать, чем простую.  

 
gpwr:

"Убогой" линейную регрессию я бы не назвал. И предполагать что я не опробовал кучу других моделей тоже не нужно.

Всем известно что любая нелинейная модель y = f(x1,x2,...) может быть разложеня в ряд Тейлора:

y = a0 + a11*df/dx1*x1 + a12*df/dx2*x2 + ... + a21*d^2f/dx1^2*x1^2 + a22*d^2f/dx2^2*x2^2 + b11*d^2f/dx1/dx2*x1*x2 + ...

Те кто хорошо разбирается в математике знает что это является разложением функции f(x1,x2,...) на полиномные (более точно мономные) базисы x, x^2, x^3 и т.д. Линейная регрессия сохраняет только линейные члены этого разложения, поэтому явялется приближением первого порядка. Нелинейные базисы можно выбрать из разных известных полиномов, например Чебышева, Хермита, Лежендре и пр. Но правильным методом выбора полиномов является QR decomposition или в более общем случае выбор ортогональных полиномов принимая во внимание статистичекие свойства входов x1, x2, ... Нейронные сети пытаются делать такое же разложение но на exp функции входов согласно теореме Колмогорова. Это довольно неудобное разложение так как экспоненциальные функции входов не ортогональны друг другу, что ведёт к куче численных проблем и вариантов решения. В любом случае, все эти разложения нашей нелинейной функции будут иметь линейную модель как аппроксимацию первого порядка. Так что если линейная аппроксимация (регрессия) не даёт нам ожидаемого результата, то идти к более высоким степеням нелинейности смысла нет. Даже линейная регрессия может решаться разными методами (СКО, МНМ, и другими произвольными функциями ошибок), которые я все перепробовал.

Кстати, все эконометрические ARMA, ARIMA и прочие модели являются индивидуальными случаями вышеуказанной модели y[n] = f(x1[n-d1],x2[n-d2],...), в которой часть входов являются задержанными выходами, т.е. y[n-1], y[n-2], отсюда и название "авторегриссионые" модели. Хотя решать авторегриссионые модели методом СКО или МНМ вредно для здоровья т.к. полученные коэфициенты ведут к осцилирующим моделям. Нужны методы Бурга, Modified Covariance и пр. Но я эту "авторегриссионую" главу прошёл давно и возвращаться мне не хочется. Хотя моя модель рынка допускает выбор задержанного выхода как одного из входов. Но пока она ни разу не выбрала такого "авторегриссионного" входа, что означает что экономические показатели более пригодны для предсказания цены чем сама цена в прошлом (что составляет основу подавляющего большинства трейдеровских методов на основе тех анализа)

вот видимо я это имел в виду )))

например я строю регрессию на наборе данных получаю "так себе" модель и почти всегда другие методы тоже дают "так себе" модель

а если линейная регрессия дает "более менее" модель то замечаю что другие методы могут чуть-чуть её улучшить

 
Не мешало бы дать чёткое определение, или хотя бы уточнение, что понимается под "прогнозом", "предсказанием" и т.п.  Каков горизонт "прогноза"?  Без этого "прогнозы" теряют смысл. Поскольку, в зависимости от горизонта, один и тот же "прогноз" может оказаться верным для одного горизонта, и неверным для другого горизонта. Более того, такие участки могут чередоваться много раз.