Какво представлява Backtesting? Как да тествате обратно стратегия за крипто търговия

>

Въведение в Backtesting

Бектестингът е математическа симулация, използвана от търговците за оценка на ефективността на стратегията за търговия. Симулацията използва исторически пазарни данни в опит да изчисли колко добре е била постигната една търговска стратегия в миналото.

В основата си бектестирането е начин търговците да се опитат да предскажат дали дадена стратегия ще бъде печеливша, ако се реализира с реален капитал. Търговците използват обратно тестване, за да филтрират всяка стратегия, която в миналото не е била печеливша.

Въпреки че историческото представяне не гарантира бъдещи резултати, тестовете с обратна връзка все още са най-надеждният начин за идентифициране на стабилни стратегии. Необходимо е да се проучат тези симулации, за да се филтрират стратегии, които очевидно се представят по-слабо. По този начин имаме най-добри шансове да печелим пари и не е необходимо да тестваме стратегии с реални средства.

Тъй като инструментите за търговия с криптовалути стават все по-популярни, така и тестовете за обратно тестване. Днес се препоръчва търговците старателно да тестват обратно всяка стратегия, преди да я пуснат на дивия крипто пазар. По този начин можем да спечелим увереност, че стратегията има потенциала да работи оптимално.

Проучване за ребалансиране

Това проучване оценява ефективността на различни стратегии за ребалансиране, за да се определят най-добрите исторически конфигурации.

Изисквания за обратно тестване на данни

Преди да можем да започнем стратегии за обратно тестване, трябва да разберем различните типове данни, които разработчиците използват за изграждане на инструменти за обратно тестване и как всеки от тях представлява реалния пазар.

Данни за свещника

Най-често срещаният начин за внедряване на инструмент за обратно тестване е разработчиците да използват данни за свещници OHLCV. Причината, поради която повечето разработчици използват тези данни, е, че те са лесно достъпни.


За съжаление, въпреки че това е най-лесният достъп до данни за изграждане на тези инструменти, това са най-ненадеждните данни. Всъщност използването на данни за свещник OHLCV за стартиране на обратни тестове може да е разликата между изграждането на печеливша стратегия и загубата на парите си.

Ситуацията става още по-лоша, когато търговците използват обобщени свещни данни от източници като CoinMarketCap. Обобщените данни не са валидно представяне на действителните поръчки, които са били налични на конкретна борса по това време.

Не използвайте данни от свещници за изграждане на инструменти за обратно тестване.

Данни за търговия от тик до тик

Данните за търговия от тик до тик могат да бъдат полезен компонент за исторически инструменти за обратно тестване. Индивидуалните тик сделки са точните сделки, които са били сключени на борса във всеки момент. Тези отделни сделки представляват реални поръчки, които са били изпълнени, така че със сигурност знаем, че на борсата трябва да е имало отворена поръчка на тази цена.

Въпреки че данните за търговия с тикове могат да бъдат мощен аспект на услугите за обратно тестване, те все пак ще бъдат само малко по-точни от данните на свещника OHLCV. Отделните точки за данни за търговия не предоставят информация за състоянието на книгата за поръчки по време на сделката. В резултат на това разработчиците не могат точно да преценят какви поръчки биха били налични на борсата точно в този момент, когато се изпълнява симулирана сделка.

Използването на данни за търговия от тик до тик за инструменти за обратно тестване не се препоръчва.

Данни за снимка на поръчка на книга

Последният тип данни, който е често срещан в инструментите за обратно тестване, са снимки на книги с поръчки. Снимките на книгите за поръчки предоставят точното състояние на пазара към момента на снимката. Намерението е да има пълно представяне на това какви поръчки са били налични на борсата в определен момент.

Когато се изграждат инструменти за обратно тестване, това е най-мощният тип данни за използване. Тъй като данните включват точните поръчки, които са били налични към момента на симулация на сделка, можем да изчислим точните сделки, които бихме могли да предприемем, и цената на всяка от тези сделки.

Снимките на книгите за поръчки позволяват на разработчиците да симулират въздействието на разпространението, изплъзване и ликвидност.

Снимките на книгите за поръчки са силно препоръчителни като тип данни за инструменти за обратно тестване.

Източници на данни

Основният източник за данните от книгата за поръчки е всеки отделен криптообмен. В повечето случаи тези данни се предават на живо чрез уебсайтове на борсата. Поради огромния обем данни обаче обменът обикновено не съхранява тези данни в дългосрочен план. Това означава, че след като данните бъдат изпратени през уебсайта за обмен, те изчезват завинаги.

Освен ако, разбира се, някой не събере данните от борсата и не ги направи достъпни чрез услуга на трета страна. Тук доставчиците на данни въвеждат картината. Доставчиците на данни са по същество компании, които обединяват данни във всеки обмен и ги съхраняват, така че други хора да имат достъп до тях по-късно.

Доставчиците на данни за исторически снимки на книги с поръчки са малко и много. Поради ограниченото предлагане на тези данни, разработчиците са прибегнали до алтернативни набори от данни, като свещници OHCLV, които могат да причинят неточности за backtests. В резултат на това повечето инструменти за обратно тестване, налични на пазара днес, представят погрешно представянето на стратегиите.

След скорошно партньорство между Скариди и Кайко, Shrimpy вече може да предложи пълен исторически каталог от снимки на книгите за поръчки във всяка голяма борса. Още от 2014 г., Kaiko щателно събира данни за търговия от тик до тик, снимки на книги за поръчки и свещници OHLCV.

Разработчиците могат да получат достъп до тези данни чрез API на Shrimpy Developer. Използвайки простия модел на ценообразуване при поискване, клиентите могат да правят запитвания за моментни снимки в различни времеви рамки, да търгуват двойки и борси.

Kaiko предоставя най-точните данни на пазара. Сега всеки разработчик може да получи достъп до данните на Kaiko, за да симулира точно обратните тестове чрез API-та на Shrimpy.

Python скриптове за книги с исторически ред

The API на Shrimpy Developer осигуряват достъп до исторически книги за поръчки за обмен. Снимки на всяка книга с поръчки се правят на интервал от 1 минута. Използвайки Shrimpy Python Library, ще предоставим примери за това как разработчиците имат достъп до исторически данни само с няколко реда код.

Симулиране на Backtest

Фигура 1: Примерна книга за поръчки за двойка за търговия ENJ-USDT.

За да се изчисли прецизно как ще се изпълнява дадена стратегия, бектестът изисква възможно най-точните числа. Някои фактори, които трябва да се имат предвид по време на бектеста, включват:

  • Таксата за търговия на борсата

  • Разпространението оферта-искане за търговската двойка

  • Пазарно изплъзване на книгата за поръчки

  • Време за всяка отделна сделка

Когато симулираме закупуването на актив, трябва да използваме исканата цена в книгата за поръчки. Ако сте на борсата, най-добрата цена е най-ниската цена, която някой от борсата е готов да продаде актива. Не забравяйте да вземете предвид и таксата за търговия и приплъзването.

Като използваме като пример книгата с поръчки на фигура 1, нека си представим, че искаме да купим ENJ на стойност 1500 USDT. В името на този пример, нека приемем, че тази книга с поръчки е за Binance, която има основна такса за търговия от 0,1%.

Бихме могли да симулираме закупуването на ENJ на стойност 1500 USDT чрез постепенно увеличаване на цената на поръчката ни над книгата с поръчки, докато не закупим желаната от нас стойност на ENJ на стойност 1500 USDT. Последователните сделки, които бихме извършили, включват следното:

  1. Купете 1151,74904126 ENJ по 0,20559424 USDT всеки = 236,97296881 USDT + 0,2369729 USDT в такси (1262,79005829 USDT вляво)

  2. Купете 2559.954 ENJ на 0.20640294 USDT всеки = 528,38203186 USDT + 0,52838203 USDT в такси (остават 733,8796444 USDT)

  3. Купете 1992,51418976 ENJ по 0,20659518 USDT всяка = 411,64382769 USDT + 0,41164382 USDT в такси (321,82417288 USDT вляво)

  4. Купете 1555,85587451 ENJ по 0,20663894 USDT всеки = 321.50267164 USDT + 0.32150267 USDT в такси (остават 0 USDT)

Забележете, че в книгата за поръчки има останали, които не можахме да закупим на ценовата точка 0.20663894. Сумата, която не купихме, ще остане на борсата, за да я вземе друг участник на пазара.

Като цяло купихме точно 7260.08410553 ENJ след приключване на всички сделки. Ако бяхме използвали само данни за свещници OHLCV, нашата оценка вероятно щеше да е толкова далеч 7319,76112984. Това е разлика от почти 60 ENJ или близо 1%. Може да не изглежда много, но този малък процент се съчетава изключително бързо, ако симулираме стотици или хиляди сделки.

След като завърши симулацията на търговия, запишете резултатите от поръчката, за да можем да използваме тези средства, за да търгуваме с друг актив по-късно в бектеста. Използвайки този подробен търговски запис, можем да водим щателни дневници на всяка сделка, направена по време на бектеста. Тези дневници могат да се използват за изчисляване на допълнителни статистически данни като обема на търговията, който изпълняваме, колко сделки сме извършили и честотата на покупка или продажба на определен актив.

Резултати от представянето

Изчисляването на ефективността на стратегията е просто. Всичко, което трябва да направим, е да изчислим стойността на нашето портфолио в началото на backtest и да го сравним със стойността на нашето портфолио в края на backtest.

Стойността на портфейла се изчислява чрез умножаване на сумата на всеки актив, който притежаваме, по цената на този актив и сумиране на стойностите на всички активи в портфейла.

Правейки това изчисление в началото на обратния тест и още веднъж в края на обратния тест, можем да получим промяната в стойността на нашето портфолио в хода на обратния тест.

След това може да се изчисли ефективността, като се използва уравнението:

Изпълнение = [(Vf – Vi) / Vi] x 100

Където,

  • Vf е крайната стойност на портфейла

  • Vi е началната стойност на портфейла

  • Умножете по 100 за преобразуване от десетичен знак в процент

Забележете, че целта на бектеста не е само да оптимизира за изпълнение. По същество, само защото конкретна стратегия се представя добре при условията на бектеста, това не означава автоматично, че е добра стратегия. Трябва също така да вземем предвид последователността и стабилността на стратегията.

Проверка на последователност – Способността да се получат подобни резултати през различни исторически периоди и различни пазарни условия.

Здравост на задния тест – Възможността да се получат подобни резултати, дори когато са направени незначителни промени в параметрите на стратегията.

Стратегия без стабилност може да забележи големи промени в производителността, когато се правят и най-малките промени в параметрите на стратегията. По същия начин стратегия, която не е последователна, вероятно ще има значително различни резултати при тестване на различни исторически периоди от време.

В идеалния случай искаме да използваме стратегия, която може да бъде тествана за всеки исторически период от време и да доведе до подобни резултати. По същия начин ефективността на нашата стратегия не трябва да претърпява големи промени, когато се правят незначителни промени в стратегията.

Стратегии без последователност или стабилност могат да доведат до широко непредсказуемо бъдещо представяне. Ако бектестирането на различни исторически периоди от време и конфигурации за нашата стратегия дава широко различни резултати, това може да означава, че нашата стратегия е непредсказуема. В този случай изборът само на една конфигурация или период на обратно тестване за оценка по същество би пренасочил стратегията към конкретна ситуация. Резултатите от теста за пренапрежение не биха били общо представяне на стратегията.

Пример за последователна стратегия, която открихме, е ребалансирането. В преобладаващото мнозинство от случаите ребалансирането превъзхожда холинг. Дори когато коригирахме периода на ребаланс от 1 час на 1 ден до 1 месец.

Червен флаг на Backtest

Поради техническия характер на бектестирането, понякога е трудно да се установи дали бек теста е надежден. Следните елементи с червен флаг ще ви помогнат да установите дали резултатите от обратния тест са разумни. Това не е обширен списък, а някои от най-често срещаните случаи.

  1. Производителността се увеличава след всяка сделка. Ако производителността постоянно се увеличава, особено след всяка сделка, това може да означава, че има грешка в изчислението в логиката на търговията.

  2. Постоянен експоненциален растеж на средствата. Когато резултатите от производителността на backtest растат експоненциално с течение на времето, това често може да бъде резултат от използването на свещници OHLCV за търговските симулации или сочи към грешка в изчислението, която е процентно намаление.

  3. Високочестотните стратегии за търговия не намаляват. Като цяло стратегията, която търгува със значителна сума, ще загуби стойност поради таксите за търговия. Ако стратегията за високочестотна търговия не загуби стойност, бектестът може да не обмисля такси за обмен.

  4. Пазарите с ниска ликвидност се представят по същия начин като пазарите с висока ликвидност. Един прост начин да се установи дали инструментът за обратно тестване използва данни за свещник OHLCV или обобщени данни е да се изпълни стратегията на пазар с ниска ликвидност, който обикновено има голямо разпространение. Високочестотната търговия на пазар с ниска ликвидност трябва да доведе до големи загуби на портфейла.

  5. Смяната на борси не влияе на резултатите. Всяка борса има различни ликвидност и такси за търговия. Когато проверявате стратегии за обратно тестване на различни борси, трябва да получите различни резултати. Ако получите едни и същи резултати на различни борси, това предполага, че инструментът за обратно тестване използва обобщени данни и не използва правилната такса за търговия за всяка отделна борса.

Преди да приемете резултатите от backtest по номинал, използвайте тези червени флагове, за да идентифицирате проблеми със симулираните сделки.

Заключения

В тази статия има няколко основни теми. Преди всичко демонстрирахме колко трудно може да бъде изграждането на здрав инструмент за обратно тестване. В същото време обаче успяхме да илюстрираме важността на тестването на бектест преди да го разгърнем на живо.

Първата стъпка към изграждането на стратегия за обратно тестване винаги е била наличието на висококачествени данни. Без висококачествени данни от книгата за поръчки, резултатите ще бъдат силно неточни. В крайна сметка вземането на решения въз основа на дефектни инструменти за обратно тестване може да струва скъпо. Това може да доведе до нереалистични очаквания за стратегия, която разяжда портфолиото ни.

Когато създавате инструмент за обратно тестване, не забравяйте да симулирате такси за търговия, приплъзване и разпространение на офертата-искане. Всеки от тези аспекти на бектеста може да има голяма разлика. Премахването на дори един от тези компоненти от обратния тест може да е разликата между печеливша и нерентабилна стратегия.

И накрая, преди да внедрите стратегия, базирана на обратни тестове, продължете да тествате. Когато мислите, че сте приключили тестването, тествайте отново. Вместо 100 теста, изпълнете 100 000 теста. Бектестирането е най-добрият начин да разберем поведението на стратегията. Опитайте се да формирате нови хипотези за стратегии и да тествате тези хипотези, за да идентифицирате нови стратегии. Продължете експерименталния цикъл, докато намерите стратегии, които работят за вас.

КОПИРАНЕ НА НАЙ-ДОБРИТЕ ТЪРГОВЦИ В СВЕТА

В момента има хиляди активни търговци, управляващи своето портфолио в Binance. Тези търговци са едни от най-напредналите търговци в бранша.

Допълнителни добри четения

Как да направите бот за крипто търговия с помощта на Python

Ръководство за крипто заеми – Сравнени най-добрите кредитори

Скрипт за биткойн цена на живо Ticker (с помощта на Websockets)

Ребалансиране на прага за управление на крипто портфолио

Какво е DeFi? Ръководство за децентрализирани финанси

Нашата платформа за социална търговия

Скариди е социална платформа за търговия с криптовалута. Той е предназначен както за професионални, така и за начинаещи търговци да дойдат и да научат за нарастващата крипто индустрия. На Shrimpy потребителите могат да копират портфейлите и стратегиите за търговия на други търговци.

Следвай ни в Twitter и Facebook за актуализации и задавайте всякакви въпроси към нашите невероятни, активни общности на Телеграма & Раздор.

Благодаря, че се отбихте!

Екипът на скаридите

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map