If a C programmer asks "do you want to see something cool?", run away.
--John Van Enk

Saturday, September 29, 2007

Chaos, Forex & Data Mining System

И будущего, конечно, не знаютъ ни Ангелы Божии, ни демоны;
однако они предсказываютъ
Св. Иоанн Дамаскин, Точное изложение православной веры

Я человек, и ничто человеческое ... как говориться в известном романе (кажись). Поэтому в голову периодически закрадываются коварные мысли (правильные) о том, что пора бы уже заняться тем, что не только интересно, но и прибыльно. Чертовски прибыльно. То интернет-бомжи ум будоражат, то Forex, то еще что нибудь. Так вот по поводу Forex'a...

Ясно, как день, что я так и не стал брокером трейдером, так как не мог гарантировать (самому себе), что прибыль превысит убыток. Но вот, что интересно, копаясь в различных материалах по делу и не, набрел на несколько интересных особенностей, о которых и хочу немного поразмышлять в этом посте.
  1. Согласно Александру Элдеру, известному специалисту по техническому анализу (в прошлом - психотерапевту), поведение рыночного сообщества имеет много аналогий с поведением толпы, характеризующимся особыми законами массовой психологии. Влияние толпы упрощает мышление, нивелирует индивидуальные особенности и рождает формы коллективного, стадного поведения, более примитивного, чем индивидуальное. В частности, стадные инстинкты повышают роль лидера, вожака, чью роль играет ценовая кривая, фокусируя на себе коллективное сознание рынка. Следовательно, тот, кто сможет стать над толпой, достигнет на этом поприще большего успеха. Для этого предлагается выработать систему игры, апробированную на прошлом поведении временного ряда и четко следовать этой системе, не поддаваясь влиянию эмоций. Иными словами, предсказания должны быть основаны на алгоритме, т.е. их можно и даже нужно перепоручить машине (LeBeau, 1992)
  2. Согласно теории "эффективного" рынка, изложенной в диссертации L. Bachelier в 1900 г., инвестор может надеяться лишь на среднюю доходность рынка, оцениваемую при помощи индексов, таких как Dow Jones, S&P500 для Нью-Йоркской биржи. Любой же спекулятивный доход носит случайный характер. Естественно, сами участники рынка не разделяют эту теорию, которые верят что поведение финансового временного ряда полно скрытых закономерностей (которые к стати и пытался выявить основатель технического анализа, являющегося сейчас почти основным инструментом, Эллиот). Однако в 80-х годах эта точка зрения нашла поддержку в теории динамического хаоса, согласно которой, хаотические ряды лишь только выглядят случайными, но как детерминированный динамический процесс, вполне допускают краткосрочное прогнозирование. Область возможных предсказаний ограничена горизонтом прогнозирования, но этого может оказаться достаточно для получения реального дохода от предсказаний. Нужны лишь достаточно хорошие (чем лучше, тем больше) математические методы извлечения закономерностей из зашумленных хаотических рядов. Опять алгоритм!!!
  3. Частичная предсказуемость рынка обусловлена относительно примитивным коллективным поведением игроков, которые образуют единую хаотическую динамическую систему с относительно небольшим числом степеней свободы
То есть, хотя бы чисто теоретически, можно разработать систему, которая, будет предсказывать временной ряд и приносить тем самым прибыль. Хорошо бы также, если она умела бы находить оптимальные индикаторы и оптимальную стратегию, по найденным индикаторам. А для этого можно применять мои любимые нейронные сети (ох уж написание выпускной работы бакалавра запомнится мне надолго, а может и пригодится?).

Я много раз представлял себе как должна выглядеть такая система в железе и более всего склоняюсь к мысли, что это должен быть soft-realtime кластер, так как обучение сети, а особенно если она большая по размеру и алгоритм обучения сложен, это та еще вычислительная задачка. Помню, когда я учил свой программный нейроконтроллер, то процессор (Сel D 2.53 GHz) грузился на 100% в течении нескольких часов. Хотя, кто его знает? Это такая область, где сказать что-то со 100% уверенностью очень трудно. К тому же сеть в процессе должна дообучаться, хотя что я все о сети? Это совсем не обязательно должна быть нейронная сеть, черт возьми!
Короче - система должна быть способна учиться и дообучаться на некоторых данных, должен существовать способ выделения этих данных, нужно предусмотреть способ контроля степени обученности системы, так как "слишком умная" система может оказаться "полной дурой" на практике.

На сегодня пока все. Пойду еще подумаю чего нить интересного ;-)