PDA

Виж пълната версия : Анализ на търговски стратегии или на ръчната търговия в миналото



Mateev
14.12.2019, 15:52
Отварям тази тема с цел да направя подробен преглед на методите за анализ на търговските стратегии, намерени в резултат на исторически тестове, или за анализ на ръчната търговия на един трейдер в миналото. Основните цели на този анализ са следните:

1. Изясняване на качествата на търговията в миналото (ръчна или с робот).
2. Сравняване на качествата на две или повече стратегии или ръчни търговии, и избор на най-добрата такава.
3. Изясняване на потенциала за бъдещи печалби в зависимост от качеството на търговията, направена в миналото.
4. Подбор на най-оптималните за една стратегия начален депозит, размер на лотовете в една сделка и планиран максимален Drawdown така, щото да се постигнат максимално добри финансови резултати при разумно ниво на риска.
5. Изясняване на математическите формули на всеки един показател за качество на една търговска стратегия.
6. Изясняване на плюсовете и минусите при употребата на всеки един показател на една търговска стратегия (какво в действителност ни говори този показател и какво остава скрито от неговия поглед).

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

Mateev
14.12.2019, 15:52
Търговията в миналото всъщност представлява една последователност от единични сделки, като колкото повече сделки имаме за анализ, толкова по-точни показатели на стратегията ще получим. Малкото на брой сделки в миналото водят до случаен резултат, който дори и да е плод на някаква добра познаваемост, то това няма как да бъде доказано.

Колко е минималният брой сделки, при които резултатите от анализа ще са достоверни?

Отговорът на този въпрос ще си го изясним по-нататък в темата, като ще попитаме математиката какво е нейното мнение. За по-нетърпеливите обаче веднага ще кажа, че всеобщо е прието, че 30 броя сделки са достатъчни, за да се премине от t-разпределението на Стюдънт, което важи за малък брой сделки, към Нормалното разпределение, което важи за безкраен брой сделки. Кривите на двете разпределения стават много близки при брой на сделките, по-голям от 30. Това обаче не означава, че 30 сделки са достатъчни за един добър анализ, и това ще го разберете когато стигнем до доверителните интервали, които са математическата връзка между минало и бъдеще.

Mateev
14.12.2019, 15:56
Преди да започнем да анализираме резултатите от една търговия (стратегия), първо трябва да си изясним какво представлява единичната сделка и какви са нейните параметри. Също така за бъдещия анализ ще ни трябват не само цените, по които нещо се е случвало, но и времето, когато то се е случвало. Затова и първата дефиниция (термин) за нуждите на тази тема ще бъде така наречената от мене

ЦЕНОВА ТОЧКА
Ценовата точка еднозначно определя в двумерното пространство на ценовата графика нещото, което се е случило със сделките в нашата търговска стратегия. Тази ценова точка има два параметъра:
1. Цена
2. Време, когато тази цена е била излъчена към вашите търговски терминали

В бъдеще когато спомена думичката ТОЧКА, всъщност ще имам предвид именно ЦЕНОВА ТОЧКА от двумерната графика, и съобразно дадената формула ще използвам или нейната ценова съставка, или съставката по време. Следващото понятие е

ТЪРГОВСКА СДЕЛКА
Всяка една търговската сделка се състои от 4 на брой последователни във времето ценови точки, като тяхната последователност е важна за бъдещите анализи, и не бива тази последователност да се губи като информация когато се разработва програмен код за нея.

Извън контекста на последователноста тези 4 ценови точки са следните:
1. Enter или Open - цена и време на отваряне на сделката
2. MAE или Low - най-лоша за сделката цена по време на нейния живот, и време, когато се е случила
3. MFE или High - най-добра за сделката цена по време на нейния живот, и време, когато се е случила
4. Exit или Close - цена и време на затваряне на сделката

За който не знае, МАЕ означава Maximum Adverse Excursion (максимално движение на цената против посоката на сделката), а МFE означава Maximum Favorable Excursion (максимално движение на цената по посока на сделката).

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

От тези 4 параметъра на търговската сделка могат да се изчислят и още 2 изключително важни нейни параметри - Profit и Efficiency:

Profit или PL
Това е печалбата или загубата, реализирана от тази сделка. Дефинира се като разликата между цената на изхода и цената на входа. Може да бъде както положително, така и отрицателно число. Важното е тука да се отбележи, че за бъдещите анализи тази печалба може да има няколко различни размерности - в някаква валута (най-вече в долари), в пипсове (което е по-добър вариант) или в проценти на промяна (което е най-добрият вариант). Формупите са следните:
ProfitInPoints = (Exit.Price - Enter.Price) / PointSize
ProfitInPercentage = (Exit.Price - Enter.Price) / Enter.Price (за да се получат истински проценти, трябва този резултат да се умножи по 100)

Efficiency
Това е най-важният параметър на една сделка, но за съжаление е и най-пренебрегвания такъв от страна на трейдерския бранш. Ако се замислите, размаха между МАЕ и МFE всъщност представлява тренда, който се е случил по време на сделката, а печалбата (разликата между Exit и Enter) е само една малка част от този тренд. За да си изясним колко ефективно нашата сделка се е възползвала от предоставения и тренд, трябва да намерим съотношението между тези две велични. Това съотношение всъщност ни дава нещо като КПД (коефициент на полезно действие) на нашата сделка, но правилния термин всъщност е Efficiency (ефективност) на сделката. Колкото е по-висока тази ефективност, толкова е по-добра стратегията, построена от такива сделки. Важи и обратното твърдение - стратегии с далечен стоп притежават много ниска ефективност, защото усвояват само една нищожна част от предоставения им тренд.

Формулата за изчисляване на ефективността на сделката е следната:
За Buy сделки: Efficiency = (Exit.Price - Enter.Price) / (МFE.Price - МAE.Price)
За Sell сделки: Efficiency = (Enter.Price - Exit.Price) / (МАE.Price - МFE.Price)

Ефективността, изчислена по тези формули, се променя между 0 и 1-ца. Ако искате да я видите в проценти, трябва да я умножите по 100.

Mateev
14.12.2019, 15:58
Търговската сделка има още 6 много важни параметъра, за които за съжаление световната литература тъне в мълчание. Също така и програмните продукти не ги смятат за тези параметри. Създава се впечатлението, че има някакъв световен заговор за обиране на нищо неподозиращите трейдери, защото премълчаването на тези 6 параметъра в много случаи е фатално за доброто здраве на акаунта. Параметрите са следните:

1. EnterSpread - Спред при отваряне на сделката
2. ExitSpread - Спред при затваряне на сделката
3. EnterSlippage - Слипидж при отваряне на сделката
4. ExitSlippage - Слипидж при затваряне на сделката
5. TradeSwaps - Суапи, начислени за времето на живот на сделката
6. TradeCommision - Комисионни и други такси, начислени за времето на живот на сделката

Няма да обсъждаме кой е виновен за тези разходи - брокера или пазара. Важното е само да се знае, че това са НЕОБХОДИМО ПРИСЪЩИ РАЗХОДИ за осъществяването на всяка една сделка, и незнанието на техния истински размер често води до самозаблуди както в начинаещите, така и в някои от напредналите трейдери.

EnterSlippage и ExitSlippage се дефинират като разликата между желаната цена за отваряне/затваряне на сделка и реалната цена, по която това се е случило. Тази разлика идва както от слипиджа, който брокерите начисляват по едни или други съображения, така и от закъсненията по време, предизвикани от Requote или от изкуствените "забивания" на сървъра или забавяния на изпълнението на търговската операция, заявена от клиента.

На практика търговския софтуер трябва да следи и поддържа 2 точки за отваряне на сделката (RequestEnter и TrueEnter) и 2 точки за затваряне (RequestExit и TrueExit). Разликата между тези две точки на входа и 2 точки на изхода ни дава реалния слипидж по размер и време както на входа, така и на изхода.

А ето и формулите за определяне на истинските разходи на една търговска сделка:
EnterSlippage = TrueEnter - RequestEnter
ExitSlippage = TrueExit - RequestExit

TradeCosts = EnterSpread/2 + ExitSpread/2 + EnterSlippage + ExitSlippage + TradeSwaps + TradeCommision

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

Има дори и още един прикрит разход за всяка една сделка, и той е свързан с преизчисляването на различните компоненти на горната формула от една валута към друга. Така или иначе различните компоненти на формулата могат да се случат в различни валути, но в крайна сметка MetaTrader-а е длъжен да ги преизчисли във валутата на акаунта. При това преизчисление той винаги се съобразява с конкретните спредове на двойките, участващи в преизчислението, и разбира се взема по-лошата за трейдера цена от двете (Ask или Bid), което е нормално, защото отговаря на логиката за обмен. Това обаче начислява към сделката още един буквално невидим и добре прикрит разход. Тоест към горната формула трябва да добавим и още един разход, който можем да го наречем ChangeCosts.

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

Mateev
14.12.2019, 16:01
Една търговска стратегия (ръчна или автоматизирана) създава много на брой сделки, които могат да нарисуват произволна крива на Equity-то или на Баланса. И тука веднага възниква въпросът

Как да разпознаем добрата от лошата стратегия, ползвайки информация от сделките, които тя вече е сключила?

Гледането само на крайният резултат е една много лоша идея, въпреки че много трейдери само това правят и нищо друго. Затова и ще ви припомня вица за милионера. Как един мъж може да стане милионер? Ами има два начина:
1. Да работи здраво дълги години
2. Да е бил преди това милиардер, но после да се е оженил.

Тоест не е важен КАКЪВ Е МОМЕНТНИЯТ РЕЗУЛТАТ от една стратегия, защото той може да бъде всякакъв, а КАК Е ПОСТИГНАТ ТОЗИ РЕЗУЛТАТ, защото това знание може да ни помогне да направим ВЯРНА ПРОГНОЗА за бъдещите печалби на стратегията.

За да анализираме в статистически план какви са показателите на стратегията, първо трябва да си изясним коя точно ЦИФРОВА РЕДИЦА ще анализираме. Сами видяхте колко много параметри има една сделка, и всеки един от тези параметри може да образува цифрова редица, която да ни даде една или друга статистическа информация за самата стратегия. Да, ама има важни и маловажни цифрови редици, и преди да започнем да ги анализираме, трябва да си изясним коя от тях какво може да ни даде като информация.

Тъй като е важно, за всяка една от възможните цифрови редици ще кажа по няколко думи:

Цифрова редица от параметъра Profit или PL
Тази цифрова редица съдържа в себе си всички печалби/загуби от всяка една сделка, подредени във времето така, както са се случвали. Ако се нарисува като графика, ще се получи хистограма с чертички както над нулата, така и под нулата. Визуално тази редица почти нищо не говори на трейдера, но в същото време представлява предпочитана редица за изчисляване на статистически параметри от почти всички производители на търговски софтуер. За съжаление обаче тази цифрова редица е обременена с много недостатъци, защото в нея не се отчита реалното движение на цената вътре в самата сделка. Тоест не се отчита MAE и МFE, и при много видове стратегии потребителя може да изпадне в заблуждение, гледайки статистическите показатели, голяма част от които имат грешни стойности по причина липсата на МАЕ и МFE.

КУМУЛАТИВНА цифрова редица от параметъра Profit или PL
Кумулативна означава, че всеки следващ член на редицата представлява сума от предишния член + стойността на новия член. Тази цифрова редица всъщност се нарича БАЛАНС и това е най-предпочитаната цифрова редица от трейдерите и производителите на търговски софтуер с цел визуализация на търговските резултати на стратегията. Както обаче вече разбрахте, липсата на MAE и МFE в редицата създава грешна графика, която не отчита реалното движение на търговията в акаунта.

Mateev
14.12.2019, 16:04
Цифрова редица с отчитане и на 4-те важни точки от сделката - Enter, Exit, МАЕ и МFE
Тази цифрова редица би трябвало вече да отчита по правилен начин движението на акаунта по време на търговията, ако производителите на софтуер я изчисляваха по правилния начин. Да, ама някои от тях не го правят това. Проблемът е с МАЕ и МFE, за които е важно да се знае кое от двете се е случило преди другото, за да се подредят числата в редицата по правилния начин. За статистическите изследвания няма значение подредбата на числата в редицата, но за създаването на кумулативната крива (редица) има голямо значение.

Правилният начин е всяка една сделка да се разбие на 3 сегмента (субсделки), които могат да бъдат един от двата варианта съгласно последователноста на МАЕ и МFE:
1. Enter-MAE, MAE-MFE, МFE-Exit
2. Enter-MFE, MFE-MАE, МАE-Exit

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

КУМУЛАТИВНА Цифрова редица с отчитане и на 4-те важни точки от сделката - Enter, Exit, МАЕ и МFE
Тази цифрова редица се нарича Equity, и се използва преди всичко за графична визуализация на случващото се с акаунта. Освен това на тази редица също се прави статистически анализ, като от нея могат да се извлекат редица важни статистически параметри, свързани с ФОРМАТА НА КРИВАТА, като например Stability.

КУМУЛАТИВНА цифрова редица на дълбочината на корекциите в кривата на Equity-то
Тази следствена цифрова редица всъщност се нарича Drawdown, като логиката на нейното построяване е следната:
1. Редицата е инверсна (отрицателните стойности стават положителни)
2. Нова печалба в Equity-то се игнорира
3. Нова корекция в Equity-то се прехвърля с обратен знак в кривата на Drawdown-a.

Редицата на Drawdown-а се използва както за графична визуализация, така и за извличане на статистически показатели, като например MaxDD, MaxDD%, Ret/DD Ratio, Stagnation и др.

Mateev
14.12.2019, 16:05
Други цифрови редици, от които може да се извлече визуална или статистическа информация

Редица МАЕ-МFE - От нея може да се извлече информация за волатилността на цените по време на живота на сделките. Тази информация ни казва колко бихме могли да спечели, ако по-ефективно използвахме тези движения.

Редица Efficiency - Тази редица ни дава информация какво средно КПД или каква средна ефективност има нашата стратегия, или с други думи - колко ефективно сме използвали предоставените ни от пазара трендове по време на живота на сделките.

Редица Spread - От тази редица можем да извадим статистическа информация какво е било поведението на плаващия спред на брокера при отваряне и затваряне на сделките от стратегията.

Редица Swap - От тази редица можем да извадим статистическа информация за начислените ни суапи и дали те подобряват или влошават резултатите на стратегията.

Редица Slippage - От тази редица можем да си изясним какви разходи имаме нанесени от действията на брокера или от гаповете в движението на цените.

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

Mateev
14.12.2019, 16:06
Сами видяхте колко много цифрови редици съществуват в една стратегия. Всяка една от тези редици съдържа някаква информация в себе си, която информация може да ни помогне да преценим качеството на стратегията и най-вече нейното очаквано поведение в бъдещето. Искам само да ви кажа, че това не са всички възможни редици. Например всяка една от вече изброените редици може да бъде заредена с числа, имащи различни РАЗМЕРНОСТИ. Например:

1. Абсолютни цени, печалби и др.
2. Относителни печалби (проценти на промяна) спрямо точката Enter.
3. Целочислени пипове съгласно размера на един пип
4. Преизчислени стойности в долари или във валутата на акаунта, ако е друга
5. Други някакви отношения между две цифрови редици (Ratios)
6. Изменения за единица време (Rates)

Също така могат да се използват и някакви ФИЛТРИ, които включват в дадената цифровата редица не всички сделки, а само някаква обособена част от тях. Например:

1. Само Buy или само Sell сделки
2. Само печеливши или само губещи сделки

Могат да се създадат и цифрови редици, базирани на някоя от агрегатните функции - First, Last, Min, Max, Sum, Count, Average и др.

И последно - всяка една от вече многобройните по-горе цифрови редици може да се подложи на Group By функцията. Например:

1. Групиране на печалбата от сделките по дни от седмицата
2. Групиране по часовете от денонощието
3. Групиране по години
4. Групиране по продължителност на живота на средностатистическата сделка

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