Неоднократно попадались такие споры в комментариях:
«Я проверял на прошлых данных такую-то стратегию или семейство стратегий — она не работает».
«Я тоже проверял — всё работает».
То есть, мы имеем разных людей, делающих проверки на истории одного и того же, и уверенных, что всё делают правильно, но получающих разные, а иногда и противоположные результаты.
Получается, мы выходим на такие темы как:
1. Разные методологии проверки на прошлых данных.
2. Разное качество такой проверки, зависящее от знаний проверяющего.
Значит, нужно вывести идеальную модель бэктестинга, строго её описать и сверять все проведённые бэктесты с этой моделью.
И ставить алготрейдерам оценки от 1 до 5, в зависимости от соответствия проводимых ими проверок идеальной модели.
Вопрос: вывел ли уже кто-то такую идеальную модель бэктеста?
И где её найти?
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.
Пишем немножко кода:
Результаты: