namespace WealthLab.Strategies { // Комиссия 0.005% на сделку, проскальзывание 0.01% public class Simple00 : WealthScript { StrategyParameter Period, Factor; public Simple00() { Period = CreateParameter ("Period", 5, 1, 20, 1); Factor = CreateParameter ("Factor",0.5, 0.1, 1, 0.1); } protected override void Execute() { ClearDebug(); // HideVolume(); int period = Period.ValueInt; double factor = Factor.Value; DataSeries atr = ATR.Series (Bars, period); for (int bar = period; bar < Bars.Count; ++bar) { if (IsLastPositionActive) { ExitAtClose (bar, LastPosition); } else if (Open [bar] - Close [bar] > atr [bar] * factor) { BuyAtClose (bar); } } ChartPane cp = CreatePane (40, true, true); PlotSeries (cp, atr, Color.Black, WealthLab.LineStyle.Histogram, 3); } // Execute() } // class Simple00 } // namespace WealthLab.Strategies
Привет, выражение «чем выше риск, тем выше доходность» внешне выглядит логично, но не находит подтверждения на практике. По акциям США и Европы на длинных горизонтах уже доказано, что акции с наименьшим риском приносят больше доходности, чем высокорискованные даже без поправки на риск. В качестве меры риска принято использовать рыночную бету, но сегодня мы будем тестировать волатильность (стандартное отклонение) дневной доходности, а бету оставим для будущих экспериментов.
За основу мы возьмем работу Нэда Бейкера и Роберта Хогена «Low Risk Stocks Outperform within All Observable Markets of the World» (2012). Авторы просто посчитали волатильность для каждой акции за последние 24 месяца, сформировали по 2 портфеля из 10% акций с наибольшей и наименьшей волой и повторяли это каждый месяц. Да, это академическая работа, но она написана не теоретиками и носит важные практические выводы. Очень рекомендую почитать в оригинале. Вот, что получили авторы по рынкам развитых стран:
Привет, новая неделя – новый бэктест. В этот раз мы проверим, может ли аналитик с хрустальным шаром обогнать рынок.
Прогнозировать будущие цены не под силу даже этому шару, и он «всего лишь» выдает список из 25% ликвидных компаний с наибольшим ростом чистой прибыли по отношению к прошлому году. На 3 месяца раньше рынка. Хрустальный шар MOEX Edition заботливо оберегает владельца от неликвидных шлаков и начинает исправно служить с января 2012 по январь 2020гг.
Немного размышлений о ценности финансовых прогнозов и мода на аналитику с середины 2010-х
Переход популярности от технического анализа к фундаментальному знаком тому, кто тоже был новичком в 2014-2015гг и жадно искал идеи и грааль. В сравнении с привыкшими к работе с боковиком 2012-2013гг технарями, идеи фундаменталистов было правда интересно изучать новичку. Не знаю выходит ли эта передача сейчас, но тогда она была популярна среди новичков:
Не вдохновлено ссылками ниже, но напомнило о выкладывании в публичный доступ.
smart-lab.ru/blog/620330.php
smart-lab.ru/blog/616708.php
Всем привет!
В ходе тестов калькулятора портфелей
github.com/Oppositus/CalculatorAA
возникло понимание, что его внутренние инструменты импорта котировок уже не работают. Так давайте напишем скрипт, который будет получать их через MOEX ISS API. Вывод скрипта-CSV файл.
Репозиторий github.com/helpau/MOEX_ETFs/blob/master/main.py
Тот же код:
tickers=["FXGD","FXUS","FXIT","SBSP","FXRL","FXRB","FXRU","SBCB","SBGB","SBRB"] import requests import apimoex import pandas as pd df=pd.DataFrame() for ticker in tickers: with requests.Session() as session: data = apimoex.get_board_history(session, ticker,board="TQTF") df1 = pd.DataFrame(data) df1.set_index('TRADEDATE', inplace=True) df.info() df[ticker]=df1["CLOSE"] df.to_csv("your_table.csv",sep=";")
P.S. Касательно самого калькулятора портфелей-полученный файл необходимо дополнительно обработать, чтобы на 1 год для 1 ETF было 12 записей. Особо пытливые могут исследовать, в какой день лучше проводить ребалансировку.
В мониторингах счетов увидел часто повторяющуюся одну и ту же картину слития счетов.
Это не обвал индексов или нефти, а валютный рынок. Поэтому куда интереснее.
Вот несколько скринов с разных счетов. Многих неплохих скальперов-роботов уничтожило.
Ответ на многие вопросы которые у меня возникают по хорошему надо искать с бомощью бэктестов.
О бэктестах я слышал в первую очередь в связи с ротобами -Wealth-Lab/TSLab. но мне не совсем понятно- обязательно ли их покупать и изучать или есть альтернативные варианты. тем более для роботов не важно какие там p/e у акции и что у неё с дивидендами.
Вопрос- какие варианты есть бэктеста?
вариант в лоб- где то надыбать исторические данные (где? можно ли через квик выгрузить)- причём желательно не только что бы курс акций был, но и другие данные используемые в принятии решений. Допустим проверить стратегию «ежегодная ребалансировка портфеля с включением 7 акций с наибольшей средней дивидендной доходностью за последние 3 года при условии что за последний год p/e изменился на более чем на NN, с равным распределением долей между этими акциями в портфеле» или сравнить «купи и держи» с «купил и лови тэйк профит/или выходит по стоп-лосу. ну и далее на основе этих данных в базе писать ручками программу которая моделирует входы/выходы/ получение дивидендов/изменение счёта. самый трудозатратный и гибкий подход.
Насколько понимаю есть также онлайн сервисы „оценки портфолио акций“. насколько там гибко можно описывать стратегию- мне неведомо.
Тестировать будем крипту на Bitmex, так как там можно без проблем достать тики с направлениями на халяву.
Собственно, идея очень простая:
— покупаем, если сумма объемов последних 5 сделок больше 500,000
— продаем, если сумма объемов последних 5 сделок меньше -500,000
Торгуем одним условным битком (тикер XBTUSD).
Использовать будем R и пакет QuantTools.
Пишем немножко кода:
Результаты:
Хотелось, традиционно, подвести итоги 2019 года, но нового и интересного ничего не произошло, результаты на МОЕКС практически не отличаются от года 2018-го. Поэтому расскажу, насколько важно для HFT торговли написать правильный бэктест. Результаты тоже будут, но на примере отдельных алгоритмов, из набора работающих на Московской бирже.
Для высокочастотной торговли, наверное, самый главный показатель это мгновенная ликвидность. Не буду углубляться в проблему ее измерения, это отдельная задача. В общем случае, чем выше мгновенная ликвидность, тем большую прибыль приносит высокочастотная стратегия. И ваш тест должен правильно обрабатывать весь поток ликвидности, который присутствует в сохраненной маркетдате, чтобы верно эту мгновенную ликвидность отразить. В матчинге бэктеста необходимо сводить в сделки собственные (тестовые) ордера в первую очередь по потоку рыночных сделок используемого актива, и во вторую — по текущей книге заявок. Нарезки в тесте не должно быть никакой, то есть внутреннее время теста должно идти соответственно последней считанной записи в максимальном разрешении, которое транслируется биржей (миллисекунды или даже микросекунды).Также нужно учесть задержку прихода ордеров на биржу после их отправки и задержку коллбэка. Нюансов здесь много, и я как обычно, о них не расскажу:)
Когда-то в паблике столкнулся с мнением, что OOS должен располагаться только справа. Т.е. расположение его слева от интервала Оптимизации — ошибка. Я с этим был категорически не согласен, т.к. не видел разницы. Теперь вижу. Ошибался, был не прав.