

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