«Сферичний трейдер у вакуумі»: інструкція по застосуванню



Якщо проаналізувати форумів про Форекс, можна виділити два досить стійких думки, назвемо їх песимістичним і оптимістичним:

Песимісти стверджують: ринок випадковий «тому що я побудував графік випадкового процесу і мій друг (професійний трейдер) не зміг відрізнити його від графіка EURUSD», а значить мати стабільний прибуток на Форекс неможливо за визначенням!

Оптимісти їм заперечують: якщо б ринок був випадковий, котирування не гуляли б в околиці 1, а пішли в нескінченність. Значить ринок невипадковий і на ньому можна заробляти. Я бачив реально стабільно яка заробляє стратегію з великим профіт-фактором (більше стольки-те)!

Спробуємо залишитися реалістами і отримати користь з обох думок: припустимо, що ринок випадковий, і на підставі цього припущення побудуємо методику перевірки прибутковості торговельної системи невипадковість.

Постановка завдання
Завдяки відомим анекдотом про сферичного коня у вакуумі народилася чудова алегорія, яка означає ідеальну, але абсолютно неприменимую на практиці модель.

Тим не менш, при правильній постановці задачі можна отримати цілком відчутну практичну користь, застосовуючи «сферичну модель у вакуумі». Наприклад, через заперечення «сферичності» реального об'єкта дослідження.

Припустимо, що у нас є торгова система, використовувана на певному ринку. Також припустимо, що ринок не випадковий і система використовує для прийняття торгових рішень щось не є замаскованим під індикатори генератором випадкових чисел. Для оцінки стабільності доходу використовуємо профіт-фактор: PF={P \over L}, де — сума доходу, а — сума збитку (додатне число).

Яким має бути профіт-фактор, щоб можна було говорити про стабільність даної системи? Очевидно, що чим профіт-фактор вище, тим більше приводів довіряти системі. А от нижня межа оцінюється різними фахівцями по різному. Найбільш популярні варіанти: > 2 (так собі), > 5 (хороша система), > 10 (відмінна система). Ще зустрічається така варіація: PF_m={P-p_m \over L}, де — максимальне значення прибутку за угодою, така величина називається достовірним профіт-фактором. Вважається, що мінімальне допустиме значення для достовірного профіт-фактора 1,6.

Що мене завжди бентежило в профіт-факторі, так це те, що ніяк не враховується динаміка ринку та інтенсивність торгівлі. Тому я пропоную інший підхід до оцінки значущості профіт-фактора, ніж порівняння з якимось заданим апріорі значенням: профіт-фактор повинен бути якомога вище, але не нижче, ніж профіт-фактор випадкової системи на випадковому ринку з аналогічною інтенсивністю торгівлі і волатильністю відповідно (по суті, не нижче, ніж у «сферичного трейдера» в «ідеальному газі» або в «вакуумі»).

Залишилося тільки побудувати ідеальну модель для порівняння.

«Сферичний трейдер...»
Припустимо, що ми розглядаємо деяку випадкову торговельну систему («сферичний трейдер»). Так як модель випадкова, то торгові події відбуваються у випадкові моменти часу, незалежно від рішень, прийнятих раніше. Напрямок угод також випадково (з ймовірністю 0,5 продаж чи купівля). Обсяг угод припустимо константою і без втрати спільності будемо оцінювати прибуток і збиток в пунктах.

Нехай середня тривалість операції складає , а середній час між закриттям двох наступних угод (не будемо накладати ніяких обмежень на кількість одночасно відкритих угод).

Також припустимо, що ми будемо мати справу з Пуассоновыми потоками подій:

Тривалість операції буде випадковою величиною з експоненціальним розподілом:

f(t)=\lambda_te^{-\lambda_tt}\ \ \ (1.1)
де .

Кількість угод , скоєних за період часу буде описуватися розподілом Пуассона:

P_T(k)={{\left(\lambda_\tau T \right)}^k \over k!}e^{-\lambda_\tau T}\ \ \ (1.2)
де .

"… у вакуумі"
Тепер розглянемо ідеальну середовище проживання «сферичного трейдера» — «вакуум», тобто повністю випадковий ринок.

Припустимо, що ринок описується нормальним розподілом зміни значень котирувань за період часу :

f(\Delta)={1 \over \sigma_T \sqrt{2 \pi}}e^{\Delta^2 \over {2 \sigma_T^2}}\ \ \ (2.1)
де визначається наступним чином: нехай за одиничний час котирування змінюються на гаразд розподілену випадкову величину з дисперсією , тоді, якщо розглядати інтервали часу , зміни котирувань буде мати дисперсію:

\sigma_T^2=\sigma_1^2 T\ \ \ (2.2)

Це відоме співвідношення для Броунівського процесу.

З урахуванням формул (2.1), (1.1) результат угоди, розглядається як зміна котирувань за період часу з початку до кінця угоди буде описуватися як інтеграл умовної ймовірності :

f_{\sigma_1,\lambda_t}(\Delta)=\int\limits_{0}^{\infty} {\lambda_t \over {\sigma_1 \sqrt{2 \pi t}}}e^{-{\Delta^2 \over {2 \sigma_1^2 t}}}e^{-\lambda_tt}dt

або

f_{\sigma_1,\lambda_t}(\Delta)={\lambda_t \over {\sigma_1 \sqrt{2 \pi}}}\int\limits_{0}^{\infty} t^{-{1 \over 2}}e^{-{\Delta^2 \over {2 \sigma_1^2 t}}}e^{-\lambda_tt}dt\ \ \ (2.3)

Рішення цього інтеграла з використанням Wolfram Mathematica дає наступний результат:

f_{\sigma_1,\lambda_t}(\Delta)={1 \over \sqrt{2}}{\sqrt{\lambda_t} \over \sigma_1}e^{-\sqrt{2} {\sqrt{\lambda_t} \over \sigma_1}|\Delta|}

або

f_{\sigma_1,\lambda_t}(\Delta)={\alpha \over 2}e^{-\alpha|\Delta|}\ \ \ (2.4)

де \alpha={\sqrt{2 \lambda_t} \over \sigma_1}.

Отримана закономірність є розподілом Лапласа.

Таким чином, прибуток або збиток по одній угоді випадкової системи на випадковому ринку описується розподілом Лапласа, а абсолютна величина результату правочину має експоненційний розподіл:

f_\alpha®=\alpha e^{-\alpha R}\ \ \ (2.5)
де \alpha={\sqrt{2 \lambda_t} \over \sigma_1}.

Відомо, що експоненційний розподіл є приватним випадком розподілу хи-квадрат (). Це означає, що сумарний дохід і сумарні втрати можуть описуватися як суми випадкових величин з розподілом хи-квадрат, а значить самі є хи-квадрат величинами.

Нехай було скоєно прибуткових угод з результами збиткових з абсолютними значеннями втрат . Тоді сумарний прибуток (нормований ) і сумарні втрати (також нормовані на ) будуть описуватися розподілами хи-квадрат зі ступенями свободи відповідно:

f\left(P_\alpha \right)=\chi_{k_p}^2\left({P_\alpha\right)\ \ \ (2.6)

f\left(L_\alpha \right)=\chi_{k_l}^2\left({L_\alpha\right)\ \ \ (2.7)

де P_\alpha={1 \over {2\alpha}}\sum\limits_{i=1}^{k_p}R_i^+L_\alpha={1 \over {2\alpha}}\sum\limits_{i=1}^{k_l}R_i^-.

відношення цих величин буде виглядати наступним чином:

{P_\alpha \over {L_\alpha}}={{{1 \over {2\alpha}}\sum\limits_{i=1}^{k_p}R_i^+}\over {{1 \over {2\alpha}}\sum\limits_{i=1}^{k_l}R_i^-}}={{\sum\limits_{i=1}^{k_p}R_i^+} \over {\sum\limits_{i=1}^{k_l}R_i^-}}={P \over L}=PF\ \ \ (2.8)

де P=\sum\limits_{i=1}^{k_p}R_i^+сумарний дохід, а L=\sum\limits_{i=1}^{k_l}R_i^-сумарні втрати. Їх ставлення — профіт-фактор.

Тепер розглянемо наступну величину:

PF_k=PF\times{k_l\over {k_p}}\ \ \ (2.9)

Цю величину можна інтерпретувати як «нормований профіт-фактор»: відношення середнього доходу до середнього збитку за угоду. Подивимося, яке розподіл має ця величина:

PF_k=PF\times{k_l\over {k_p}}={P \over L}\times{k_l\over {k_p}}={{P_\alpha} \over {L_\alpha}}\times{k_l\over {k_p}}={{{P_\alpha} \over {2k_p}}\over{{L_\alpha} \over {2k_l}}}\ \ \ (2.10)

Отримана величина, ставлення хи-квадрат величин, нормованих на їх кількості ступенів свободи, — має розподіл Фішера.

Таким чином, ми знайшли розподіл величини, статистики для профіт-фактора «сферичного трейдера в вакуумі» при відомому кількості прибуткових і збиткових угод.

Перш ніж переходити до узагальнення на випадок невідомих , розглянемо поведінку «сферичного трейдера» на «не зовсім випадковому» ринку (назвемо цю середу в жарт «ідеальним газом»).

"… в ідеальному газі"
Тепер розглянемо трохи більш складну ситуацію: коли ринок є узагальненим броунівським рухом. Тобто, на відміну від випадкового, володіє пам'яттю. У цьому випадку формула (2.2) прийме наступний вигляд:

\sigma_T^2=\sigma_1^2 T^{2H}\ \ \ (3.1)

де — показник Херста, величина, що характеризує фрактальні властивості часового ряду і пов'язана з фрактальною розмірністю Хаусдорфа-Безиковича наступним чином: . Показник Херста може приймати значення .

При тимчасової ряд вироджується в випадковий, не володіє пам'яттю, що відповідає розглянутому вище випадку. При ряд постійно прагне до зміни напрямку існуючої тенденції, а значить володіє пам'яттю, такий ряд називається антиперсистентным, хаотичним. При низку також володіє пам'яттю, але прагне до збереження існуючої тенденції, такий ряд називається персистентным, детермінованим. Чим сильніше показник Херста відмінний від 0.5, тим чіткіше у ряду виражені хаотичні або детерміновані властивості.

Для різних ринків характерні різні значення показника Херста, крім того, вони можуть змінюватися з часів. Показник Херста може бути розрахований за значенням часового ряду. А значить, при оцінці профіт-фактора можна врахувати величину , розраховану по ряду котирувань в той же період, коли відбувалися операції аналізованої стратегії. Для оцінки показника Херста існує кілька стандартних процедур, наприклад RS-статистика або методи засновані на вейвлетах.

Припустимо, що випадкова торгова стратегія працює на ринку з показником Херста H, тоді з урахуванням (3.1), формула (2.3) прийме вигляд:

f_{\sigma_1,\lambda_t,H}(\Delta)={\lambda_t \over {\sigma_1 \sqrt{2 \pi}}}\int\limits_{0}^{\infty} t^{H}e^{-{\Delta^2 \over {2 \sigma_1^2 t^{2H}}}}e^{-\lambda_tt}dt\ \ \ (3.2)

Очевидно, що при це вираз еквівалентний (2.3).

На жаль, вираз (3.2) в аналітичному вигляді не інтегрується. Тому, для знаходження розподілу абсолютних значень різниць котирувань між моментами часу початку і кінця угоди (абсолютних підсумків угод) при випадковій торгівлі на ринку з показником Херста ми скористаємося чисельним моделюванням.

Я проводив моделювання з використанням Python.

Моделювання проводиться наступним чином

1) Задаємо параметри моделювання:
— обсяг експериментальної вибірки;
— кількість діапазонів для побудови гістограми

2) Генеруємо вибірку distE експоненціально розподіленої випадкової величини і вибірку distN гаразд розподіленої величини об'ємом N кожна.

3) Враховуючи співвідношення (3.1), створюємо тестову вибірку distT, кожне значення якої розраховується з відповідних значень distN і distE:

4) Для отриманого розподілу будується гістограма з M діапазонів (кількість влучень у діапазони). З отриманої гістограми вибирається K перше діапазонів, кількість попадань в які відмінно від нуля. Також проводиться нормування на кількість влучень у перший діапазон.

5) На підставі отриманої гістограми апроксимується вид розподілу.

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

def testH(N, M, H, p):
distE = np.random.exponential(1, N)
distN = np.random.normal(0, 1, N)

distT = abs(distN * distE**H)

if p = 1:
plt.figure(1)
plt.hist(distT, M)
plt.title('H='+str(H))

[y, x] = np.histogram(distT, M)

K = 0;
for i in range(M):
if y[i] > 0:
K = i
else:
break 

y = y * 1.0 / y[0]
x = x[1:K]
y = y[1:K]

return getCoeff(x, y, p, 'H='+str(H))

Приклади гістограм отриманих розподілів для значень показника Херста 0.1, 0.3, 0.5, 0.7 та 0.9 наведені нижче.






Загальний вигляд гістограм дає підставу припустити, що отримані розподіли з точністю до константи можуть описуватися функцією виду:

f_{\sigma_1,\lambda_t,H}(\Delta)=Ce^{-\Delta^{K_{\sigma_1,\lambda_t,H}}}\ \ \ (3.3)

Для пошуку параметрів розподілу скористаємося наступним алгоритмом:

1) Нехай нам дано — центроїди діапазонів гістограми і — кількості влучень в діапазони, нормовані на кількість попадання в перший діапазон.

2) Тоді, ігноруючи перший діапазон, виконаємо перетворення:

3) Скориставшись методом найменших квадратів знайдемо параметри лінійної регресії такі, що

4) На підставі отриманого приймаємо:

.

Параметр компенсує похибка нормування.

Лістинг процедури, що виконує розрахунок коефіцієнтів наведено нижче:

def getCoeff(x, y, p, S):
X = np.log(x)
Y = np.log(-np.log(y))
n = len(X)

k = sum(X) * sum(Y) - n * sum(X * Y)) / (sum(X) ** 2 - n * sum(X ** 2))
b = sum(Y) - k * sum(X)) / n
if p = 1:
plt.figure(2)
plt.plot(np.exp(X), np.exp(-np.exp(Y)), 'b', np.exp(X), np.exp(-np.exp(k * X + b)), 'r')
plt.title(S)

plt.show()

return k

Нижче наводяться приклади для кривих гістограм для значень показника Херста 0.1, 0.3, 0.5, 0.7 та 0.9 (синя лінія) і їх моделі (червона лінія):






При значеннях показника Херста вище 0.5 точність моделювання вище.

Тепер знайдемо залежність . Для цього змоделюємо ряд значень для різних і спробуємо встановити функціональну залежність.

Я використовував для моделювання значення від 0.01 до 0.99 з кроком 0.01. При цьому, для кожного значення значення обчислювалися 20 разів і усереднюють:

if __name__ == "__main__":

N = 1000000; 
M = 100; 

Z = np.zeros((99, 2))

for i in range(99):
Z[i, 0] = (i + 1) * 0.01

for j in range(20):
W = float('nan')
while np.isnan(W):
W = testH(N, M, (i + 1) * 0.01, 0)
Z[i, 1] += W

Z[i, 1] *= 0.05
print Z[i :]

X = Z[:, 0].T
Y = Z[:, 1].T

plt.figure(1)
plt.plot(X, Y)

plt.show()

Отримана залежність має наступний вигляд:


Графік схожий на спотворений сигмоид, тому і закономірність будемо шукати у вигляді сигмоїда:

K(H)=d - {c \over b + e^{a_3 H^3 + a_2 H^2 + a_1 H + a_0}}\ \ \ (3.4)
Проведення чисельної процедури мінімізації методом найменших квадратів дає наступні результати:



Сумарна квадратична помилка становить близько 0.005.

Нижче наведені графіки експериментальної залежності (синя лінія) і модельною за формулою (3.4) (червона лінія):

Слід зазначити, що отримана закономірність справедлива лише для випадку, коли . Тому надалі будемо вважати ці умови выполняющимися (забезпечимо їх виконання) і опустимо відповідні індекси.

Тепер, враховуючи (3.3), (3.4) для оціненого значення ми знаємо розподіл абсолютного значення угод. Використовуючи властивість розподілу перетворення випадкової величини, зробимо заміну змінної в (3.4):



Тоді:

f_{H}(\Delta)=Ce^{-\Delta^{K(H)}} >>> f'_{H}(\delta)={C \over K}\delta^{{1 \over {K(H)}}-1}e^{-\delta}\ \ \ (3.6)

Це функція щільності ймовірності величини, що має гамма-розподіл з кількістю ступенів свободи і одиничним параметром масштабу. Враховуючи це, формула (3.6). Повинна бути переписана як:

f'_{H}(\delta)={1 \over {\Gamma\left({1 \over {K(H)}}\right)}}\delta^{{1 \over {K(H)}}-1}e^{-\delta}\ \ (3.7)

Підведемо проміжний підсумок:

Маючи інформацію про показник Херста ринку , розрахованому для того ж періоду історії, на якому ми тестуємо систему, ми можемо знайти величину використовуючи формулу (3.4). Також ми можемо знайти середню інтенсивність торгівлі параметр для результатів угод. Для того, щоб запропоновані вище формули були справедливі, необхідно привести значення до одиниці. Для цього виконаємо нормування: , де результат угоди (незалежно від знака результату). Це перетворення випливає з (3.1).

Згідно (3.7), величини матимуть гамма-розподілу з параметрами . Отже, величини матимуть розподіл хи-квадрат c ступенями свободи.

Нехай було скоєно прибуткових угод зі значеннями доходу з величинами збитку (позитивні значення). Тоді, з урахуванням і (3.7), величини

P_H=2\sum \limits_{i=1}^{k_P}{(R_i^+)}^{K(H)}

і

L_H=2\sum \limits_{i=1}^{k_L}{(R_i^-)}^{K(H)}

матимуть хи-квадрат розподілу з кількістю ступенів свободи відповідно.

Отже, величина:

PF_H={P_H\over{L_H}}\times{k_L\over {k_P}}={{\sum \limits_{i=1}^{k_P}{(R_i^+)}^{K(H)}}\over{\sum \limits_{i=1}^{k_L}{(R_i^-)}^{K(H)}}}\times{k_L\over {k_P}}\ \ \ (3.8)

матиме розподіл Фішера c ступенями свободи (кількість ступенів свободи, в загальному випадку, буде нецілою, таким чином проявляються фрактальні властивості ринку).

Назвемо величину узагальненим нормованим профіт-фактором. При узагальнений профіт-фактор вироджується в звичний нам нормований профіт-фактор (2.9).

Остаточне узагальнення
Отже, ми дослідили «сферичного трейдера» на випадковому ринку і знайшли розподіл нормованого профіт-фактора. Потім узагальнили результати на випадок ринку з довільною фрактальною розмірністю, представленої вимірною величиною — показником Херста.

Тепер у нас є величина, яку ми назвали узагальненим нормованим профіт-фактором, який розраховується з використанням інформації про результати угод (не забудемо, до речі, скорегувати їх з урахуванням спреду: відняти його від збитків і додати до доходів). Для більшої універсальності методики, обсяг угод вважаємо постійним, або вимірюємо все в пунктах. Не забуваємо також проводити нормування на середню тривалість операції і стандартне відхилення розподілу результатів угод: , де результат угоди.

Всі отримані на даний момент результати зав'язані на відоме кількість прибуткових і збиткових угод, що є випадковою величиною з биномиальным розподілом для відомого загальної кількості угод, що, в свою чергу, також випадкова величина, розподілена за Пуассону.

Введемо нове позначення. Нехай узагальнений нормований профіт-фактор (3.8) для заданого кількості прибуткових і кількості збиткових угод (при відомому показнику Херста ) позначається як і має розподіл Фішера зі ступенями свободи .

Тоді, з урахуванням біноміального розподілу кількості прибуткових і збиткових угод, а також равновероятности отримання доходу або збитку на кожній угоді введемо величину — узагальнений нормований профіт-фактор, що враховує лише загальна кількість угод. Ця величина буде мати наступний розподіл:

F_N(PF_{H, N})=\left({1 \over 2}\right)^N\sum\limits_{k=0}^{N}{\left[{N!\over{k!(N-k)!}} F_{2kK(H),2(N-k)K(H)}(PF_{H, N})\right]}\ \ \ (4.1)

де — щільність розподілу Фішера зі ступенями свободи , а величина описується формулою (3.4), де — показник Херста.

На практиці, при досить великих вираз (4.1) може бути аппроксимировано неповною сумою:

F_N(PF_{H, N})={\sum\limits_{k=a}^{b}{\left[{N!\over{k!(N-k)!}} F_{2kK(H),2(N-k)K(H)}(PF_{H, N})\right]} \over {\sum\limits_{k=a}^{b}{N!\over{k!(N-k)!}}}}\ \ \ (4.1*)

де () обмежують деяка підмножина можливих значень кількості прибуткових угод.

Тепер розглянемо узагальнений нормований профіт-фактор без прив'язки до якого-небудь кількістю угод, а лише враховує середню інтенсивність торгівлі і період тестування стратегії : . Враховуючи, що загальна кількість угод розподілено Пуассону, буде мати наступний розподіл:

PF_{\lambda_\tau,T,H}=\sum\limits_{k=0}^\infty {{\left(\lambda_\tau T\right)^k\over{k!}}F_k(PF_{H,N})}\ \ \ (4.2)

Або, для розглянутого кількості угод в діапазоні :

PF_{\lambda_\tau,T,H}={\sum\limits_{k=a}^b {{\left(\lambda_\tau T\right)^k\over{k!}}F_k(PF_{H,N})} \over {\sum \limits _{k=a}^b{\left(\lambda_\tau T\right)^k\over{k!}}}}\ \ \ (4.2*)

Отриманий розподіл може використовуватися для перевірки значущості розрахованого (3.8) узагальненого нормованого профіт-фактора для торговельної системи з відомими середньою тривалістю угоди і интенивностью торгівлі відоме за час роботи на ринку з відомими волатильністю і показником Херста. Методика застосування тесту абсолютно аналогічна такій для тесту Фішера. Для її проведення досить замінити в (4.1) або (4.1*)) функцію щільності на функцію розподілу Фішера і підставити в якості аргументу значення розрахованого узагальненого профіт-фактора. Отримане значення ймовірності необхідно порівняти з величиною , де — необхідний рівень значущості. При перевищенні цього рівня для розрахованої статистики можна відкидати гіпотезу про випадковість торгової системи (про «сферичності трейдера в вакуумі»).

Висновок
Запропонований у роботі підхід, заснований на побудові узагальненого нормованого профіт-фактора з урахуванням волатильності і фрактальних властивостей ринку, а також інтенсивності торгівлі та середньої тривалості угод, дозволяє побудувати статистичний тест значущості досягнутих результатів з точки зору ймовірності отримання аналогічних результатів випадковим чином. Використовуючи тест, можна з заданим рівнем значущості говорити про виконання необхідного умови для констатації надійності системи. Але отримані результати не будуть достатнім умовою…

На жаль, мені не відомий тест, результати якого буде достатньо для однозначного прийняття стратегії як безумовно надійною.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.