Using Java and Genetic Algorithms to Beat the Market / Использование Java и генетических алгоритмов для взрыва рынка

→45. Results – Conclusions
On average, I am making about 3% per simulated trade. The max gain was about 10%, the max loss was about 7%. The standard deviation was about 4.5%.
So, the generated models appear to have predictive power.
The validity of these results depends on my belief that my backtesting routine is both reasonable & bug-free.
No guarantee that the evolved models will continue to work when facing new, out-of-sample data. I'm still just betting. But, maybe, with an edge.
0 Результат - Выводы
В среднем, я делаю около 3% в моделируемой торговле. Максимальный процент составлял около 10%, максимальные потери составили около 7%.Стандартное отклонение было около 4,5%.
Таким образом, генерируются модели имею достаточную предсказательную силу.
Справедливость этих результатов зависит от моей веры в то, что моё обратное тестирование разумно и не содержит ошибок.
Нет гарантии, что полученные моделей будет продолжать работать, когда сталкиваются с новыми, вне выборки, данными. Я до сих пор только подкидываю монетку. Но, может быть, под углом.
→44. Results – Discussion of
These 2 demo runs took about 5 mins each. I cut corners with some of my settings (number of stocks examined; stagnation), in order to keep the run time short.
The graphs show that evolution is a choppy process, due in part to my use of aggressive crossover & mutation strategies as well my choice not to enable elitism (best members transcend their own generation).
0 Результаты – Обусуждение
Эти 2 демки выполнялись около 5 минут каждая. Я убрал некоторые из моих настроек (количество акций, застой), чтобы уменьшить время выполнения.
Графики показывают, что эволюция является изменчивым процессом, отчасти из-за моего использование агрессивных стратегий кроссовера и мутации и мой выбор не включать элитарность (лучшие представители должны превосходить своё поколение).
→43. Results – Out-of-sample trades
Run 1
Run 2
0 Результаты – Реальная информация
Запуск 1
Запуск 2
→42. Results – Talkin' 'bout an evolution...
Run 1
Best candidate score Vs. the number of generations
Run 2
Yes, the score is in $, but since this is in-sample data, please take it with a grain of salt.
0 Результаты – Поговорим об эволюции...
Запуск 1
Лучший счет / Число поколений
Запуск 2
Да, результат в $, но так как это примерная информация, отнесёмся к ней с недоверием.
→41. Results – About the demo you didn't get to see (sorry).
Pick 4 random stocks from the list of pre-screened Nasdaq stocks.
Each model starts w/ $2000.
Evolve & test models on 20080101 thru (Today - 45 trading days). This is the in-sample data.
Stagnation Condition: quit after 7 generations w/ no improvement.
Keep the best 2 evolved individuals for each stock, for a total of 8 reserved candidates.
Test them on out-of sample data of (Today - 44 trading days) thru Today.
Print out the trading results of the top 3 out-of-sample tests.
0 Результат - Демо вы не сможете увидеть (извините).
Выберем 4 случайные акции из списка предварительно отобранных акций Nasdaq.
Каждая модель начинает с балансом $ 2000.
Развиваться и тестирования моделей на 20080101 через (сегодня - 45 торговых дней). Это в выборке данных.
Условие остановки: завершение после 7 поколений без улучшений.
Оставим лучшие 2 эволюционировавшие модели для каждой акцию, всего 8 из всех кандидатов.
Проверим их на нетестовых данных (сегодня - 44 торговых дня) до Сегодня.
Отобразим итоги торгов в топ-3 реальных тестах.
→40. Relevant Links
http://watchmaker.uncommons.org/
http://www.eoddata.com/
http://ta-lib.org/
http://www.slideshare.net/kancho/genetic-algorithm-by-example
http://www.slideshare.net/Mathijsje/genetic-algorithms-7276974
0 Ссылки по теме
http://watchmaker.uncommons.org/
http://www.eoddata.com/
http://ta-lib.org/
http://www.slideshare.net/kancho/genetic-algorithm-by-example
http://www.slideshare.net/Mathijsje/genetic-algorithms-7276974
→39. Last Minute Notes
Termination Condition: Num of stagnant generations
Scoring – I'm using the ending account balance (cash + approx val of open positions) as the score.
The chosen scoring formula has a critical impact on the out come. It provides the 'motivation' for the GA to 'improve'.
What happens when you try a score like numGoodTrades / numBadTrades?
Watchmaker only supports positive double score values.
The Trade PnL calculation includes transaction costs (my target broker is $2.50 a trade)
0 Последние примечания
Условие остановки ГА: Кол-во устоявшихся поколений
Оценка - Я использую конечный остаток на счете (денежные средства + примерное количество открытых позиций) как оценку.
Выбранная забил формула имеет решающее воздействие на выход вперед. Она обеспечивает "мотивацию" ГА на "развитие".
Что происходит, когда вы пытаетесь оценивать как numGoodTrades / numBadTrades?
Watchmaker поддерживает только положительные значения double значений оценки.
Расчет прибыли и убытков включает налог на сделку (у моего целелевого брокера $ 2,50 за операцию)
→38. Other Comments
The GA is the easy part.
Designing the machine to work with it is a bit of an art.
Reduce the solution space by limiting choices.
Ex: Pre-screen stocks, favor discrete choices
Allow the GA plenty of wiggle room.
Ex: Large genome, multiple voting schemes How meta to get? I hard-coded some values that could have been part of the genome.
0 Прочие комментарии
GA самая простая часть.
Проектирование машины для работы с ним включает немного искусства.
Сокращайте пространства решений, ограничивая выбор.
Ex: Премодерируйте набор акций, сделайте дискретную выборку
Предоставьте ГА много материала для изменения.
Ex: Большой геном, несколько схем голосования.
Как их получить?
Я жестко указал в коде некоторые значения, которые могли бы быть частью генома.
→37. More Details
I have simplified some things for this presentation
I pre-screen the stocks used, for swing trading appropriateness. I don't want to wait while it runs through the whole Nasdaq.
I backtest & evolve on a subset of available data.
Then I try (backtest w/o evolution) the top evolved candidates against recent out-of-sample data.
0 Подробности
Я упростил некоторые вещи для этой презентации
Я предварительно проверил использующиеся торговые данные, для раскачки целесообразности торговли. Я не хочу ждать, пока она проходит через всю историю Nasdaq.
Я проводил тестирование и эволюцию на множестве имеющихся данных.
Затем я пробовал (тестирование без эволюции) лучших эволюционировавших кандидатов на нетестовых данных.
→36. ...
0 ...
→35. ...
0 ...
→34. Evolving the Candidates
The trades generated during backtesting will be used to score the individual candidate.
The GA will select the fittest candidates for mating, based on their scores.
The GA will recombine (crossover) and mutate (spontaneously change values) mated genomes.
0 Развитие кандидатов
Торги, созданные на этапе обратного тестирования, будут использоваться для оценки отдельных кандидатов.
GA выберет сильнейших кандидатов для спаривания, исходя из их оценки.
ГА рекомбинирует (кроссовер) и мутирует (спонтанное изменение значений) спаривающиеся геномы.
→33. Evolving the Candidates
Notice that the previous slides have mentioned 'random' & 'randomly' several times.
This is where the GA comes into play.
The genome, a double[6850] serves as the settings, the 'randomness', for each candidate.
0 Развитие кандидатов
Обратите внимание, что в предыдущих слайдах упомянул "случайные" и "случайно" несколько раз.
В этот раз ГА вступает в игру.
Геном, массив[double6850] выступает в качестве параметров «случайности», для каждого кандидата.
→32. Backtesting the decisions
Check proposed buy & sell prices against the current day open as a sanity check.
Sell is greedy – will try to sell at Max(predicted high price, chosen opportunistic sell price)
Any position where holdDays >= maxHoldDays is dumped at the end of the day at a price biased toward the low and the close.
0 Тестирование решений на основе исторических данных
Проверьте цены предложений купли и продажи на текущий день как вменяемую проверку.
Продажа жадная - будем пытаться продать на максимуме(прогноз высокой цене, выбранной оппортунистической цене продажи)
Любая позиция, где holdDays>= maxHoldDays сбрасывается в конце рабочего дня до цены смещения в сторону низких и близких.
→31. Backtesting the decisions
Based on the last slides, I usually set minHoldDays=3
Iterate signal data while trying to create trades based on machine advice & market actuals.
Remember to skip first max 'lookback' number of days, as many signals involve moving averages.
Strongly bias 'buy' fills toward the high, 'sell' fills toward the low.
0 Тестирование решений на основе исторических данных
Основываясь на последних слайдах, я обычно ставлю minHoldDays=3
Передвигайтесь по сигналу данных, пытаясь создать торгов на основе рекомендаций машины и фактические рынке.
Не забудьте пропустить первое максимальное количество "Lookback" дней, так как многие сигналы включают скользящие средние.
Большие "покупки" производят смещения вверх, а «продажи» - вниз.
→30. Backtesting the decisions
More rules, laws & things to keep in mind
Avoid day trading:
Buy X on T
Sell X later on T
If you do this more than 3x in a 5-day period, you will be classified as a Pattern Day Trader
FINRA rules require that Pattern Day Traders use margin accounts with a Min. balance of $25K
When backtesting:
Allow for slippage (be pessimistic in fill price)
Market will eat up high bids & low asks.
0 Тестирование решений на основе исторических данных
Правила, законы и вещи, которые стоит иметь в виду.
Избегайте торговлю внутри дня:
Купить X на Т
Продажа X позже T
Если вы сделаете это более чем в 3 раза, в 5-дневный срок, вы попадёте под фильтр торговца внутри дня
Правила FINRA требуют, чтобы такие трейдеры использовали маржинальный счет с мин. балансом $ 25K
Во время тестирования:
Разрешить спад(быть пессимистом при выборе цены)
Рынок будет съедать высокие и низкие ставки.
→29. Backtesting the decisions
Rules, laws & things to keep in mind
Cash account trades settle in T+3 days.
Avoid free-riding: Buy X at T Sell X at T', where T' < T+3
Buy Y on T' with proceeds from sale of X
Cannot sell Y before T'+3
If you do, the Federal Reserve Board requires that your broker freeze your account for 90 days
0 Тестирование решений на основе исторических данных
Правила, законы и вещи, которые стоит иметь в виду.
Переводы с денежного счета проходят в T+3 дней.
Избегайте проблему безбилетника:
Купить X при Т продажи X в T, где T <T +3
Купить Y на T' с выручки от продажи X
Нельзя продавать Y до T'+3
Если сделать это, то Федеральная резервная система требует, чтобы ваш брокер заморозил ваш счет в течение 90 дней
→28. Converting reactions to decisions
Now to get a little fancier...
Added combinational voting to each layer.
Some 'randomly' selected bins are ANDed with others, then 'randomly' mapped to choices for the given decision layer.
More opinions in the mix.
0 Преобразование реакции в решения
Теперь, чтобы стало веселее...
Добавим комбинационные голосование каждого слоя.
Некоторые 'случайно' выбранные биты скрещиваем операцией И с другими, затем "случайно" связываем с выборами данного слоя решения.
Больше мнений смешаются.
→27. Converting reactions to decisions
Each threshold bin in each decision layer is mapped to one of the decision choices.
The mappings are established 'randomly'
The choice that gets the most bin reactions is selected.
Winner take-all voting.
Note that some mappings will effectively abstain from voting.
Ties are broken based on iteration order.
0 Преобразование реакции в решения
Каждый пороговый бит в каждом слое решении связан с одним из решений выбора.
Связи устанавливаются "случайно"
Выбираем тот, который получает большинство бит реакций.
Победитель "получает всё".
Обратите внимание, что некоторые связи могут воздержаться от голосования в целях эффективности.
Связи разрушаются в порядке итерации.
→26. Summary, so far...
Daily stock OHLCV data become Signals.
I have chosen 24 various TA signals.
I have defined 6 trading-related decisions: Buy?, How much?, Holding period? Low price guess? High price guess? Opportunistic sell price?
For each decision, for each signal, a Thresholds instance will react.
0 Итак, уже...
Дневной набор данных volume-open-high-low-close становится Сигналами.
Я выбрал 24 различных TA сигнала.
Я определил 6 торговых решений: Покупать?, Сколько? Сколько держать? Предполагаемая наименьшая цена? Предполагаемая наибольшая цена? Время продавать (оппортунистическая продажа)?
Для каждого решения, для каждого сигнала, экземпляр Порога будет реагировать.
Резюме
Пол:
мужчина
Родной язык:
русский
С нами:
с 20 ноября 2008 г. (6541 день)
Не является членом клуба.
Деятельность:
272 версии перевода с общим рейтингом 14
4 комментария
Карма: 1 (оценок: 1)
Написать Tolsi личное сообщение