← Мақалаларға оралу
June 29, 2026
5 мин оқу

Deflated Sharpe Ratio: Бэктест 'жеңімпаздарыңыздың' қаншасы көптеген тестілеуден аман қалады?

#algotrading
#backtest
#overfitting
#statistics
#sharpe
#multiple-testing
#validation
🎯
Part 7 of 9 · Collection
Backtesting Without Fooling Yourself

"Backtests Without Illusions" сериясының бөлігі.

📄 Бұл мақала зерттеу жұмысына айналды. Төмендегі әрбір сан — бақыланатын шынайы негізді құратын бір детерминистік скриптен алынған: таза шу іздеулері, орнатылған эджі бар іздеулер және нақты корреляцияланған параметр торы — содан кейін оларға Deflated Sharpe Ratio, Harvey-Liu multiple-testing haircut және White's Reality Check / Hansen's SPA қолданылып, әр әдістің жалған жаңалық деңгейі мен анықтау қуаты тікелей өлшенеді. Мақаланы онлайн оқыңыз (интерактивті нұсқа + PDF): deflated-sharpe.marketmaker.cc, код пен деректер: github.com/suenot/deflated-sharpe-search.

Сіз параметрлер бойынша сканерлеу жүргізесіз. Он алты жылдам ұзындық, қырық баяу ұзындық, жылжымалы орташалардың қиылысуының 640 комбинациясы. Тор аяқталады да, бір ұяшық жарқырайды: жылдық Sharpe 3.9, бір реттік тесттің p-мәні 6×10126\times10^{-12}. Маңыздылықтың он екі нөлі. Сіз бірдеңе таптыңыз.

Немесе сіз ештеңе таппадыңыз, іздеу оны сіз үшін тапты.

Параметрлерді іздеу — тест емес. Бұл N рет әрекеттің ең сәттісін табу машинасы, және оған неғұрлым көп әрекет берсеңіз, оның жеңімпазы соғұрлым сәттірек көрінеді — астында шынайы эдж бар-жоғына қарамастан. Ең жақсы-N-нің-ішінен Sharpe таңдау есебінен көтеріледі — мыңдаған кездейсоқ адамдардың ішіндегі ең ұзыны биік болғандай: биіктік шынайы болғандықтан емес, сіз іздегендіктен. Жеңімпаздың жанында басылатын бір реттік статистика — оның p-мәні, t-статистикасы, "бұл маңызды ма?" деген сұрақ — бір алдын ала тіркелген гипотеза үшін жасалған. Оларды іздеудің аман қалғанына бересеңіз, олар сенімді түрде, әрдайым өтірік айтады.

Бұл мақала олардың қаншалықты қатты өтірік айтатынын дәл өлшейді, содан кейін оны түзейтін үш құралды өлшейді. Бүкіл мәселе — бақыланатын шынайы негіз: біз жауапты білетін қайтарымдарды генерациялаймыз — кейде эджі нөлге тең таза шу, кейде белгілі күштегі орнатылған эдж — сондықтан "әдіс дұрыс жауап берді ме?" деген сұрақ факт болады, пікір емес. Міне басты нәтиже алдын ала. Дұрыс жауап әрдайым "жаңалық жоқ" болатын нөлдік-гипотеза іздеулерінде, әрбір тест қаншалықты жиі жалған дабыл қағады:

Тест Нөлдік-гипотеза іздеулеріндегі жалған жаңалық деңгейі Қорытынды
Шикі "үздік Sharpe маңызды ма?" 1.000 әр рет сайын жаңалықты белгілейді
Deflated Sharpe Ratio (DSR ≥ 0.95) 0.001 бақыланады
Harvey-Liu haircut — Bonferroni 0.057 ~бақыланады
Harvey-Liu haircut — Holm 0.057 ~бақыланады
Harvey-Liu haircut — BHY 0.007 бақыланады
White's Reality Check (bootstrap) 0.022 бақыланады

Іздеу басына 1000 стратегия, әрқайсысында 1000 бақылау, 2000 тәуелсіз нөлдік-гипотеза іздеуі, барлық жерде шынайы Sharpe = 0. Синтетикалық тәуелсіз-бірдей-бөлінген қалыпты қайтарымдар, seed 0, α = 0.05, жылына 252 период. Шикі тесттің жалған жаңалық деңгейі жоғары ғана емес — ол дәл бір.

Бірінші жолды ашынғанша оқыңыз. Таза шуда 5% жағдайда ғана іске қосылуы тиіс тест 100% жағдайда іске қосылады — себебі сіз оған таза шу емес, мың рет тартылған таза шудың максимумын көрсетіп отырсыз, ал мың теңге лақтырушының максимумы әрдайым данышпандай көрінеді. Қалған әрбір жол — мұны білетін және оны түзейтін әдіс. Бұл мақаланың бүкіл мазмұны: неге бірінші жол 1.000-ге тең, неге қалғандары олай емес, және тіпті жақсы әдістердің де адал болу үшін екінші түзетуге мұқтаж болатын бір жер (соңғы бөлім).

1-акт — Тұзақ: іздеу еш нәрседен Sharpe жасайды

A parameter search depicted as a slot machine feeding a thousand random strategy curves through a funnel, with a single luckiest curve emerging labeled with a tempting Sharpe ratio while the discarded curves fade into noise behind it

Ең таза мүмкін тұзақтан бастайық. Қайтарымдары тәуелсіз стандартты қалыпты шу болатын N=1000N = 1000 стратегия генерациялаймыз — дрейф жоқ, шеберлік жоқ, барлығында шынайы Sharpe дәл нөл. Әрқайсысында T=1000T = 1000 бақылау бар. Енді әрбір параметрлерді іздеу жасайтын нәрсені жасаймыз: ең жақсысын сақтаймыз.

1000-ның ішіндегі ең жақсысының бақылау-басына Sharpe-і орта есеппен 0.1027 құрайды, бұл жылдандырғанда 1.63-ке айналады (шығарылған: 0.1027×2521.630.1027 \times \sqrt{252} \approx 1.63). Бұл шамалы сан емес. Жылдық Sharpe 1.63 — бұл стратегияға қаржыландыру, жариялау, бөлу берілетін нәтиже түрі. Ол дрейфі нөлге орнатылған кездейсоқ сан генераторынан шықты.

Енді жеңімпазды әрбір бэктест кітапханасы тегін басып шығаратын шикі маңыздылық тестіне тапсырайық. Оның Sharpe-ін t-статистикаға айналдырамыз (t=SR^Tt = \hat{SR}\sqrt{T}), бір жақты p-мәнін аламыз, p<0.05p < 0.05 болса жаңалық деп атаймыз:

t=SR^T,p=1Z(t),"жаңалық", егер p<αt = \hat{SR}\sqrt{T}, \qquad p = 1 - Z(t), \qquad \text{"жаңалық", егер } p < \alpha

Осы шу жеңімпаздарының медиан бір реттік p-мәні 0.000686 құрайды — эджі жоқ стратегия үшін "маңыздылықтың" үш нөлі. Ал 2000 тәуелсіз нөлдік-гипотеза іздеуінің барлығында шикі тест жаңалық деп жариялайды: жалған жаңалық деңгейі 1.000. "Көтерілген" емес. "Біраз жоғары" емес. Құрылымы бойынша бір нөлдік гипотезада ең көбі 5% жағдайда дұрыс болатын тест іздеу жеңімпазында 100% жағдайда қате.

Атын атасаңыз механизм түсінікті. Шикі тест "осы Sharpe нөлдік гипотеза астында кездейсоқтықтан пайда болуы мүмкін бе?" деп сұрайды — деректерге қарамай бұрын таңдалған стратегия үшін әділ сұрақ. Бірақ сіз мұны мыңдаған ішінен ең жоғары Sharpe-і болғаны үшін таңдадыңыз. Сіз максимумға шартталдыңыз, ал максимумның таңдамалық үлестірімі бір реттік тартылымдардың таңдамалық үлестіріміне мүлдем ұқсамайды. Бұл біздің look-ahead bias таксономиясы басқа жағынан диагноз қойған дертпен бірдей — онда бір баردың лигі шудан Sharpe 15-ті жасаған; мұнда іздеу ешбір лигсіз, тек таңдау арқылы шудан Sharpe 1.63-ті жасайды. Механизм әртүрлі, симптом бірдей: ештеңе білдірмейтін керемет көрінетін Sharpe.

1.63 саны маңызды, сондықтан оны есте сақтаңыз. Бұл осы іздеу үшін шу шегі: эджі нөлге тең 1000 стратегияның ең сәттісінен күтуге болатын Sharpe. Іздеу жеңімпазының кез келген адал тесті оны нөлмен емес, осымен — мың рет қарасаңыз тек сәттілік беретінмен — салыстыруы керек.

2-акт — Құралдар жиынтығы: іздеуге баға берудің үш жолы

Three measurement instruments laid out on a workbench, each aimed at the same inflated Sharpe number: a deflating gauge lowering a benchmark bar, a set of graduated haircut scissors, and a bootstrap resampling wheel spinning off many shadow copies of a returns series

Тәуелсіз пайда болған үш зерттеу бағдарламасы бірдей түзетуге келеді: жеңімпазды нөлмен салыстыруды тоқтатып, осы көлемдегі іздеу сәттілік арқылы не өндіретінімен салыстыруды бастаңыз. Олар осы салыстыруды қалай құратынымен ерекшеленеді.

PSR және Deflated Sharpe Ratio (Bailey & López de Prado, 2012 / 2014)

Probabilistic Sharpe Ratio "Sharpe оң ба?" дегеннен күрделірек сұрақ қояды. Ол мынаны сұрайды: іріктеме ұзындығы мен қайтарымдардың пішінін (қиғаштық, семіз құйрықтар) ескергенде, шынайы Sharpe-тың SRSR^* бенчмаркынан асу ықтималдығы қандай?

PSR(SR)=Z ⁣((SR^SR)n11γ^3SR^+γ^414SR^2)\text{PSR}(SR^*) = Z\!\left( \frac{(\hat{SR} - SR^*)\sqrt{n-1}}{\sqrt{\,1 - \hat\gamma_3\,\hat{SR} + \frac{\hat\gamma_4 - 1}{4}\,\hat{SR}^2\,}} \right)

Мұндағы ZZ — стандартты қалыпты CDF, γ^3\hat\gamma_3 — қиғаштық, γ^4\hat\gamma_4избыточты емес конвенциядағы куртозис (қалыпты үлестірім ⇒ γ^4=3\hat\gamma_4 = 3; мұнда избыточты куртозисті 3 қоспай ауыстырсаңыз, дефляция қате шығады). SR=0SR^* = 0 орнатсаңыз, PSR жай ғана шектеулі-іріктемелі маңыздылық тесті. Сиқыр SRSR^*-ты дұрыс таңдауда жатыр.

Deflated Sharpe Ratio — бенчмаркы нөл емес, ал бүкіл іздеудің күтілетін максималды Sharpe-і болатын нүктеде бағаланған PSR:

SR0=Var[{SRn}]  ((1γ)Z1 ⁣(11N)  +  γZ1 ⁣(11Ne))SR_0 = \sqrt{\operatorname{Var}[\{SR_n\}]}\;\Big(\,(1-\gamma)\,Z^{-1}\!\big(1 - \tfrac{1}{N}\big) \;+\; \gamma\,Z^{-1}\!\big(1 - \tfrac{1}{N e}\big)\Big)

мұндағы Var[{SRn}]\operatorname{Var}[\{SR_n\}]барлық N сынақтың Sharpe-тары бойынша дисперсия (іздеудің өзі өндірген шашыраңқылық), γ0.5772\gamma \approx 0.5772 — Эйлер-Маскерони тұрақтысы, ал екі кері-қалыпты мүше — NN стандартты қалыпты тартылымның күтілетін максимумына арналған Extreme-Value-Theory жуықтауы. Кодта бұл әсер қалдырмайтындай қысқа:

def expected_max_sharpe(sr_variance, N, mean_sr=0.0):
    """E[max of N independent SR estimates ~ N(mean_sr, sr_variance)]
    (Bailey & LdP 2014)."""
    g = EULER_MASCHERONI                       # 0.5772156649
    a = norm.ppf(1.0 - 1.0 / N)                # Z^{-1}(1 - 1/N)
    b = norm.ppf(1.0 - 1.0 / (N * E))          # Z^{-1}(1 - 1/(N e))
    return float(mean_sr + np.sqrt(sr_variance) * ((1.0 - g) * a + g * b))

Содан кейін DSR — жай ғана осы дефляцияланған шекпен PSR:

def deflated_sharpe(sr_max, sr_estimates, T, skew=0.0, kurt=3.0, N=None):
    """DSR = PSR(sr_max, SR0). Returns (dsr, sr0)."""
    v = float(np.asarray(sr_estimates).var(ddof=1))   # dispersion of the search
    m = float(np.asarray(sr_estimates).mean())
    if N is None:
        N = len(sr_estimates)
    sr0 = expected_max_sharpe(v, N, mean_sr=m)
    return psr(sr_max, sr0, T, skew, kurt), sr0

DSR — ықтималдық. Біз DSR1α=0.95\text{DSR} \geq 1 - \alpha = 0.95 болғанда жаңалық деп жариялаймыз: жеңімпаздың шынайы Sharpe-і күтілетін ең-жақсы-сәттілік-арқылы нәтижесінен 95% сеніммен асып түседі. SR0SR_0-ге бекітілген жүкті болжамды атап өтіңіз: NN сынақ тәуелсіз деп қарастырылады. 5-акт толығымен олай болмаса не болатыны туралы.

Harvey-Liu haircut (2015)

Harvey мен Liu дәл осы мәселеге көптеген тестілеудің p-мәндерін түзету арқылы шабуыл жасайды — "мен M тест жүргіздім, өзімді алдамайын" деген классикалық тетік. MM бір реттік p-мәндерін p(1)p(M)p_{(1)} \le \dots \le p_{(M)} ретімен орналастырып, оларды көтереміз:

piBonf=min[Mp(i),1],piHolm=min ⁣[maxji{(Mj+1)p(j)},1]p_i^{\text{Bonf}} = \min[\,M\,p_{(i)},\,1\,], \qquad p_i^{\text{Holm}} = \min\!\Big[\max_{j\le i}\{(M-j+1)\,p_{(j)}\},\,1\Big]

Bonferroni — тікелей құрал (кез келген жалған позитивтің ықтималдығын әрбір p-мәнді MM-ге көбейту арқылы бақылайды); Holm — оның біркелкі қуаттырақ қадамдап-төмендейтін туыс. Үшіншісі, Benjamini-Yekutieli (BHY), жалған-жаңалық деңгейін — қате рад еткен қабылдаулардың күтілетін үлесін — бақылайды, әрі, маңыздысы, тестілер арасындағы кез келген тәуелділікте мұны істейді, алымда гармоникалық нормализаторды пайдаланады:

c(M)=j=1M1j,c(1000)7.49c(M) = \sum_{j=1}^{M} \frac{1}{j}, \qquad c(1000) \approx 7.49

Сол c(1000)=7.49c(1000) = 7.49 — BHY-дың 1000 сынағыңыздың тәуелсіз екенін болжамауға сұрайтын бағасы — ол FDR шегін lnM\ln M секілді өсетін коэффициентке көтереді. "Haircut" (шаш алу) — өзі метрикалық шегеспе: түзетілген p-мәнін кері Sharpe-қа айналдырып, түпнұсқа Sharpe-тың қанша бөлігін кесуге тура келгенін хабарлайды. 100% haircut — жеңімпаз толығымен көптеген тестілеумен түсіндіріледі дегенді білдіреді; 15% — көбіне аман қалады дегенді білдіреді.

White's Reality Check және Hansen's SPA (2000 / 2005)

Үшінші құрал ешбір таралу болжамын жасамайды. White's Reality Check әрбір ереженің нақты қайтарымдарын алады, ережелер бойынша максимум статистикасын құрайды және оның нөлдік үлестірімін тікелей bootstrap арқылы жасайды:

RCT=maxk=1,,KTfˉkRC_T = \max_{k=1,\dots,K} \sqrt{T}\,\bar{f}_k

мұндағы fˉk\bar{f}_kkk ережесінің бенчмарк бойынша орта нәтижесі. Ол қайтарымдарды стационарлы bootstrap (Politis-Romano — кездейсоқ ұзындықтағы блоктар арқылы тізбекті корреляция қайта іріктеуден аман қалады) арқылы қайта іріктейді, әрбір тартылымды нөлдік гипотезаны қанағаттандыру үшін қайта орталықтандырады, максимумды әрбір тартылымда қайта есептейді және p-мәнін бақыланған максимумнан асатын bootstrap максимумдарының үлесі ретінде хабарлайды. Hansen's SPA RC-ны екі жолмен өткірлейді: студентизация (әрбір ереженің ортасын өз стандартты қатесіне бөлу, сондықтан бір ерекше жоғары-дисперсиялы ереже максимумды басып ала алмайды) және нөлдік гипотезаның үйлесімді, іріктемеге тәуелді қайта орталықтандырылуы. Біздің іске асыруымыз студентизацияны қосады, бірақ толық үйлесімді-қайта-орталықтандыру қадамын қоспайды — сондықтан бұл мақалада SPA-типті p-мәні хабарланған кез келген жерде, оны толық Hansen SPA емес, студентизацияланған Reality Check деп оқыңыз. DSR "жеңімпаз осы іздеу ішінде ерекше ме?" деп сұраса, Reality Check "ең жақсы ереже қанша ереже сынағанымды адал ескергеннен кейін де қолма-қолдан асып түсе ме?" деп сұрайды — және ол корреляцияланған ережелерді сынақтарды санамай, bootstrap арқылы табиғи түрде өңдейді. Осы айырмашылықты есте сақтаңыз; соңғы бөлім осыған негізделеді.

3-акт — Калибровка — толық дәлелдеме

A calibration chart contrasting one bar towering at a false-discovery rate of one against five short bars pinned near the alpha level of five percent, with a horizontal reference line marking the noise ceiling Sharpe of one point six three

Ешнәрсені белгілемейтін әдістің де жалған жаңалық деңгейі нөлге тең болар еді — және ол пайдасыз болар еді. Сондықтан бұл құралдардың мағыналы тесті екі жақты болуы керек: белгілі-нөлдік-гипотеза деректерінде олар жалған жаңалықтарды α\alpha деңгейінде немесе төменде бақылауы керек, ал белгілі-эдж деректерінде (келесі бөлім) олар әлі де іске қосылуы керек. Бұл бөлім — бірінші жарым.

Әрқайсысы 1000 эджі жоқ стратегия бойынша 2000 тәуелсіз іздеу жүргізіп, әрбір әдіс қаншалықты жиі жаңалық жариялайтынын санаймыз. Ол сан, 2000-ға бөлінген, жалған жаңалық деңгейі болып табылады — және шындық эдж жоқ болғандықтан, әрбір жаңалық жалған:

Тест Жалған жаңалық деңгейі (α = 0.05)
Шикі маңыздылық 1.000
Deflated Sharpe Ratio 0.001
Harvey-Liu — Bonferroni 0.057
Harvey-Liu — Holm 0.057
Harvey-Liu — BHY 0.007
White's Reality Check 0.022

Әрбір принципті әдіс 5% сызығына жақын немесе үстінде тұрады — екі FWER haircut одан сәл жоғары, DSR/BHY/RC одан төмен — ал шикі тест 100-де тұр. (Bonferroni мен Holm мұнда бірдей 0.057 басып шығарады, бұл кездейсоқтық емес: жалғыз ең жақсы стратегия үшін Holm-нің бірінші қадамы (M1+1)p(1)=Mp(1)(M-1+1)\,p_{(1)} = M\,p_{(1)}, бұл конструкциясы бойынша Bonferroni-мен бірдей, сондықтан бұл екі растау емес, бір растау.) Бірақ бүкіл зерттеудегі ең терең сан бұл кестеде емес — ол DSR бағанын өндіретін дефляцияланған бенчмарк. Нөлдік-гипотеза іздеулері бойынша орта есептегенде, SR0SR_0 бақылау-басына 0.1030 құрайды, бұл жылдандырғанда 1.63-ке айналады (шығарылған: 0.1030×2521.630.1030 \times \sqrt{252} \approx 1.63) — орта шу жеңімпазы (1.63) басып шығаратын дәл сол 1.63. Бұл кездейсоқтық емес; бұл жұмыс істеп тұрған идеяның өзі:

Дефляцияланған шек дәл шу шегінде тұр. DSR іздеу жеңімпазынан нөлден асуды сұрамайды. Ол жеңімпаздан осы көлемдегі іздеуден сәттілік қана өндіретін ең жақсы нәтижеден асуды сұрайды — мұнда жылдық 1.63. Жай ғана шу шегіне сәйкес келетін жеңімпаз DSR ≈ 0.5 (теңге лақтырумен тең) деп бағаланады, сондықтан орта нөлдік-гипотеза DSR-і аз нәрсе емес, 0.495 құрайды. Жаңалық болу үшін жеңімпаз 1.63-тен және одан да көп асуы керек — PSR-ды 0.95-тен асыру үшін жеткілікті.

Бұл бүкіл жаттығуды қайта негіздейді. Шикі тест нөлден қашықтықты өлшейді; әрбір іздеу бұл шектен оңай өтеді, сондықтан ол пайдасыз. DSR шу шегінен қашықтықты өлшейді, және бұл шектен өту шынымен қиын — солай болуы керек те. Harvey-Liu haircut пен Reality Check бірдей бақылауды әртүрлі жолмен жетеді (BHY үшін c(1000)=7.49c(1000)=7.49 көтерілуі, RC үшін bootstrap максимум-үлестірімі), және бір көршілестікте орналасады: 0.001-ден 0.057-ге дейін, α\alpha-да немесе жанында. Bonferroni/Holm 0.057 5% сызығынан сәл жоғары, бірақ тек сәл ғана: 2000 Монте-Карло іздеуімен 0.05-ке жақын FDR бағасының стандартты қатесі шамамен 0.005 құрайды, сондықтан 0.057 α\alpha-дан шамамен 1.4 стандартты қате жоғары тұр — бұл Монте-Карло шуы, бұзылған кепілдік емес. "FWER-ды бақылайды" деген де асимптотикалық уәде, T=1000T = 1000-де дәл-биттік емес.

4-акт — Қуат: ол шынайы эдждерді сақтай ма?

An S-shaped detection-power curve rising from near zero to one as the planted true Sharpe increases along the horizontal axis, with a vertical dashed line at the noise-ceiling Sharpe of one point six three and the curve reaching fifty percent power just to the right of it, and a flat false-positive line pinned to the floor

Жалған жаңалықтарды бақылау — тесттің жартысы ғана — бәрін жоққа шығаратын параноидты әдіс тамаша 0.000 балл алады және пайдасыз болады. Екінші жарым: шынайы эдж бар болғанда, DSR оны таба ма?

Оны отырғызайық. 1000 стратегиядан тұратын алқапта, 25-еуін белгілі күштегі шынайы эджбен жасап, қалғанын шу ретінде қалдырамыз, содан кейін іздеуді жүргіземіз және DSR жеңімпазды белгілей ме деп сұраймыз. Отырғызылған эджді әлсізден күштіге қарай ауыстырсақ, анықтау қуаты таза S-қисық сызады (жалған позитив деңгейі бүкіл уақытта ~0-де тұрады):

Отырғызылған шынайы Sharpe (жылдық) DSR анықтау қуаты DSR жалған позитив деңгейі
0.79 0.005 0.000
1.27 0.090 0.000
1.90 0.651 0.000
2.54 0.998 0.000
3.17 1.000 0.000

Қисықтың қай жерде бұрылатынына назар аударыңыз. Шу шегінен төмен — шынайы жылдық Sharpe 0.79, 1.63-тен әлдеқайда төмен — DSR 0.5% жағдайда ғана іске қосылады, оны дұрыс түрде белгілеуден бас тартады: мұндай әлсіз эдж 1000 сынақтық іздеу тудыратын сәттіліктен шынымен ажыратылмайды, ал басқаша болжау адалдыққа жатпайды, қуаттылыққа да жатпайды. Шектің дәл маңайында қисық тік көтеріледі (1.27-де 0.09, 1.90-да 0.65). Жылдық Sharpe 2.54-те қуат 0.998 болады; 3.17-де ол тамаша 1.000. Күшті эдждер іс жүзінде әр рет сақталады, жалған позитивтер нөлде қалады, ал 50%-қуат қиылысы жылдық Sharpe шамамен 1.73-те орналасады (1.27 мен 1.90 жолдары арасындағы интерполяциямен шығарылған) — 1.63 шу шегінен сәл жоғары, дәл адал шек тұруы тиіс жерде: эдж 1000 сынақтық іздеу ойлап тапқаннан асып түсе бастайтын нүкте.

Бұл — сіз шынымен қалайтын қасиет, S-қисық түрінде айтылған: шу шегінен төмен эдждер дұрыс түрде сәттілік деп бас тартылады; оның жоғарысындағы эдждер бірге жуық қуатпен сақталады. Салыстыру үшін, шикі тест шынайы Sharpe 0.79-да да отырғызылған эджді 67% жағдайда "анықтайды" — бірақ бұл сан мағынасыз, себебі біз оның жоқ эдждерді 100% жағдайда анықтайтынын бұрын да көрдік. Бәріне іске қосылатын тесттің қуаты жоқ; оның дискриминациясы жоқ. DSR шеткі эдждерге сезімталдықтың аз бөлігін жоғалтады (0.79 мен 1.27 жолдары), бірақ маңызды нәрсені сақтайды: оның жаңалықтары шынайы.

5-акт — Практиктің тұзағы: корреляцияланған торлар

A parameter-grid heatmap of moving-average crossover results glowing with strong pairwise correlation between neighboring cells, beside a horizontal axis of five different effective-trial estimates spanning from about two to nearly four hundred, with a shaded robustness band showing the genuine edge clearing the deflated bar across almost the entire range and only the far-right over-counting estimate dipping below

Осы уақытқа дейінгінің бәрі тәуелсіз стратегияларды қолданды — ең таза мүмкін жағдай, DSR-дың тәуелсіздік болжамы дәл орындалатын жағдай. Нақты параметр торлары олай емес, және мұнда шикі қолданылатын құрал қателесудің жаңа жолына айналады.

Адал жылжымалы орташалар қиылысу іздеуін алайық: 16 жылдам ұзындық ×\times 40 баяу ұзындық =640= 640 сынақ, әрқайсысы 755 бақылау. Мұндай тор корреляциямен қаныққан: fast=45/slow=120 мен fast=45/slow=125 іс жүзінде бір стратегия, сондықтан олардың қайтарым ағындары бірге қозғалады. 640 сынақ бойынша өлшенген орта жұп корреляциясы шамамен 0.61 құрайды. Бұл 640 тәуелсіз мәміле емес. Мүлдем емес.

А жағдайы — кездейсоқ серуен (эдж жоқ): әрбір әдіс оны дұрыс жояды

Торды таза кездейсоқ серуенде іске қосамыз. Жеңімпаз тартымды көрінеді: параметрлер fast=45/slow=120, ең жақсы жылдық Sharpe 0.81, бір реттік тесттің p-мәні 0.081. Әрбір әдіс мұны көреді:

Әдіс Нәтиже Қорытынды
DSR (шикі K = 640) 0.431 бас тарту (< 0.95)
Reality Check p 0.570 бас тарту
SPA-типті p (студентизацияланған RC) 0.569 бас тарту
Harvey-Liu haircut 100% бас тарту

Ешбір дефляциясыз-ақ сездіретін белгіден бастайық: тіпті осы жеңімпаздың түзетілмеген шектеулі-іріктемелі маңыздылығы, PSR\text{PSR}-нөлге-қарсы, тек 0.918 құрайды — 640 сынақтың бірін де түзетуден бұрын-ақ 0.95-тен төмен. Дефляция оны кейін көмеді: шек — бақылау-басына SR0=0.057SR_0 = 0.057, жылдық шамамен 0.91 (шығарылған: 0.057×2520.057 \times \sqrt{252}) — жеңімпаздың 0.81-інен жоғары. Ең жақсы стратегия шу шегіне де жетпейді, DSR ≈ 0.43 (теңге лақтырудан да нашар), және Reality Check, SPA-типті тест, 100% haircut бәрі келіседі: мұнда ештеңе жоқ. Тамаша. Бұл — оңай жағдай, ол жұмыс істейді — және, көретініміздей, ол кез келген тиімді-сынақ санында бас тартылған күйінде қалады.

B жағдайы — шынайы режим эджі: шикі DSR қате шешім қабылдайды

Енді сол торды шынайы, пайдалануға болатын эджі бар режим-ауысатын қатарда іске қосамыз. Жеңімпаз айқын: параметрлер fast=3/slow=55, ең жақсы жылдық Sharpe 3.92 — бұл іріктеменің ішіндегі, таңдалған Sharpe, іздеу арқылы таңдау-инфляцияланған (шынайы немесе іріктемеден тыс эдж емес), бірақ негізгі режим эффектісі шынайы — бір реттік тесттің p-мәні 6×10126\times10^{-12}, ал түзетілмеген маңыздылығы, PSR\text{PSR}-нөлге-қарсы, іс жүзінде 1.000. Мұнда шынайы эдж бар және жеңімпаз оны тапты. Шикі DSR оны қалай да бас тартатынын бақылайық:

Әдіс Нәтиже Қорытынды
DSR (шикі K = 640) 0.748 бас тарту (< 0.95) ✗ шамадан тыс дефляцияланған
Reality Check p 0.0024 растайды ✓
SPA-типті p (студентизацияланған RC) 0.0038 растайды ✓
Harvey-Liu haircut 15% растайды ✓

Шикі DSR-дың 0.748 болуы — шынайы эджді жалған бас тарту. Себебі — қатты бұзылған тәуелсіздік болжамы: DSR дефляцияланған шегін 640 корреляцияланған сынақты 640 тәуелсіз тартылым ретінде қарастыру арқылы құрды, бұл күтілетін-максимум SR0SR_0-ды бақылау-басына 0.221-ге дейін көтереді — жылдық шамамен 3.51 (шығарылған: 0.221×2520.221 \times \sqrt{252}). 3.51 шегіне қарсы, 3.92 жеңімпаз оны тек аздап асып түседі, ал DSR 0.748-де тұрады — 0.95-тен төмен. Осы шекті екі нәрсе көтереді: шикі саны (640 бірнеше тиімді қараудың орнына), және сынақтар арасындағы шынайы шеберлік шашыраңқылығы — кейбір параметр жұптары режим қатарында шынымен жақсырақ, бұл Var[{SRn}]\operatorname{Var}[\{SR_n\}]-ды кеңейтіп, SR0SR_0-ды таза сәттілік беретіннен әрі көтереді. Екеуі де бірдей бағытта итереді, ал шек тым жоғары шығады, себебі іздеу шынымен 640 тәуелсіз қарау болмады; бұл бірнеше тәуелсіз мәміле еді, 640 рет қайта іріктелген.

DSR-ге шикі санының орнына тиімді сынақ санын берейік. Жоғарыда қолданылған бір жолдық формула — орта жұп корреляциясынан алынған дөрекі баға:

def effective_n_trials(returns_matrix):
    """N_eff = N / (1 + (N-1) * rho_bar), clipped to [1, N].
    Correlated trials -> fewer independent bets."""
    C = np.corrcoef(returns_matrix, rowvar=False)
    rho_bar = max(np.nanmean(C[np.triu_indices(C.shape[0], k=1)]), 0.0)
    N = returns_matrix.shape[1]
    neff = N / (1.0 + (N - 1) * rho_bar)
    return float(min(max(neff, 1.0), N))

ρˉ0.62\bar\rho \approx 0.62 және N=640N = 640 болғанда, бұл торды тиімді Neff1.6N_{\text{eff}} \approx 1.6 сынаққа дейін қысады (шығарылған: 640/(1+639×0.62)640 / (1 + 639 \times 0.62)), ал DSR 1.000-ге секіреді. Бірақ бұл нәтижені мадақтаудан бұрын тоқтаңыз, себебі бұл — осы бүкіл бөлімдегі ең әлсіз дәлел. Neff1.6N_{\text{eff}} \approx 1.6 кезінде дефляцияланған шек жылдық SR00.25SR_0 \approx 0.25-ке дейін құлдырайды — бұл іс жүзінде сынақ ортасы, іс жүзінде нөл. Онда дефляция өшірілген: Neff1.6N_{\text{eff}} \approx 1.6 кезінде DSR жай ғана жеңімпаздың түзетілмеген шектеулі-іріктемелі маңыздылығын (PSR\text{PSR}-нөлге-қарсы =1.000= 1.000) қайта хабарлап отыр. Қорытынды көптеген тестілеу түзетуімен өндірілмейді, шикі маңыздылықтан мұраланады. Ал кездейсоқ-серуен жағындағы айна-бейнелі ескерту: оның Neff1.6N_{\text{eff}} \approx 1.6-дағы бас тартылуы тек сол жеңімпаз бастапқыда тәуелсіз түрде шекаралық болғандықтан ғана орындалады (PSR\text{PSR}-нөлге-қарсы =0.918<0.95= 0.918 < 0.95). Бүкіл дәлелді 1.6-ға бекітіп қойсаңыз, скептик оны иықтап тастауға хақылы: сіз түзетуді өшіріп, астында не жатқанын қайталап хабарладыңыз.

Сондықтан бір бағалауышқа бекітпеңіз. Адал әрі күштірек қадам — NeffN_{\text{eff}}-ды бес әртүрлі стандартты жолмен есептеп, қорытындыны бүкіл диапазон бойынша оқу. Мінеки, сол 640 сынақтық сигнал торына қолданылған бес бағалауыш, әрқайсысы білдіретін дефляцияланған шекпен және шығатын DSR-мен:

Тиімді-сынақ бағалауышы NeffN_{\text{eff}} Дефляцияланған шек SR0SR_0 (жылдық) DSR Қорытынды
Орта корреляция 1.6 0.25 1.000 сақтау
Қатысу коэффициенті 2.4 0.43 1.000 сақтау
PCA (дисперсияның 95%-ы) 16 1.85 1.000 сақтау
Kaiser (меншікті мәндер > 1) 21 2.00 0.999 сақтау
Cheverud-Nyholt 370 3.31 0.845 бас тарту
шикі тор саны (түзетусіз) 640 3.51 0.748 бас тарту

Бағалауыштар: орта корреляция — жоғарыдағы N/(1+(N1)ρˉ)N/(1+(N-1)\bar\rho) бір жолдық формуласы; қатысу коэффициенті (λi)2/λi2(\sum\lambda_i)^2/\sum\lambda_i^2 және PCA-95%/Kaiser сандары корреляция матрицасының меншікті мәндерінен тиімді өлшемділікті оқиды; Cheverud-Nyholt — жуық-теңкорреляция жағдайында шамадан тыс санайтыны белгілі, генетика әдебиетінен алынған меншікті-мәндер-дисперсиясы бағалауышы.

Енді мәселе анықталады, және ол "кез келген түзету сізді құтқарады" деген емес. Қорғауға болатын ортаға назар аударыңыз — PCA-95% (Neff=16N_{\text{eff}} = 16) және Kaiser (Neff=21N_{\text{eff}} = 21). Бұлар дефляция-өшірілген режим емес; олар 1.85-тен 2.00-ге дейінгі шынайы жылдық SR0SR_0 шегін қояды — 16-21 тиімді қараудың нақты көптеген тестілеу айыппұлы, елеулі haircut, шудан жоғары. Ал 3.92 эджі әлі де оны асып түседі (DSR 1.000 және 0.999). Сигнал 144.8-тен төмен кез келген NeffN_{\text{eff}}-де DSR-де аман қалады (қиылысу нүктесінен шығарылған); ол тек Cheverud-Nyholt-тің Neff=370N_{\text{eff}} = 370-де ғана сәтсіздікке ұшырайды — бұл сынақтар жуық-теңкорреляциялы болғанда дәлелденгендей шамадан тыс санайтын бағалауыш — және тіпті шикі, түзетілмеген 640 саны да DSR-ды тек 0.748-ге дейін төмендетеді, нөлге дейін емес. Кездейсоқ-серуен жеңімпазы, дәл сол бес бағалауыш арқылы өткізілгенде, әрқайсысында бас тартылады (ол 1-ден жоғары ешбір NeffN_{\text{eff}}-де аман қалмайды). Бұл — нақты нәтиже: бір сәттіліктегі сан емес, стандартты тиімді-сынақ бағалауыштарының бүкіл диапазонында тұрақты болатын қорытынды — бұл олардың кез келгеніне сенуден әлдеқайда күшті дәлел.

Ең дөрекі бағалауыш туралы бір техникалық ескерту, себебі ол оның неге жұмсақ шетте тұратынын түсіндіреді: N/(1+(N1)ρˉ)N/(1+(N-1)\bar\rho) шындығында корреляцияланған айнымалылардың ортасы үшін дисперсия-азайту коэффициенті (орташалау ρˉ\bar\rho корреляциясы астында сізге не сатып алатыны). DSR-дың бенчмаркы экстремалды-мән шамасы — сынақтардың күтілетін максимумы — сондықтан оның сынақ саны ретінде орта-дисперсия жинақталуын қолдану — функционалдық сәйкессіздік: бағыты дұрыс (корреляцияланған ⇒ тиімді сынақ аз), бірақ максимумның үлестірімі шынымен тәуелді болатын шама емес. Дәл осы себептен диапазонның ортасындағы меншікті-мән-негізіндегі бағалауыштар сенімдірек оқылым болып табылады, және дәл осы себептен нүкте емес, диапазон нәтиже болып саналады.

Қорытынды: екі құралды да қолданыңыз, DSR-ге дұрыс N беріңіз

Two complementary instruments aimed at the same search winner from different angles: one labeled with the question is the winner special within this search, needing an effective trial count dial, the other labeled does the best beat cash after data-snooping, driven by a bootstrap that reads the correlation straight off the data

B жағдайынан екі нәрсе шығады, екеуі де жүкті:

  1. Сынақтар корреляцияланған болғанда шикі тор өлшемі DSR үшін қате N — ал жалғыз тиімді-N де дұрысы емес. Тәуелсіздікті болжайтын формулаға 640 қою шамадан тыс дефляциялайды: ол іздеу шынымен жеткен деңгейден әлдеқайда биік шу шегін жасайды да, шынайы эдждерді соның астына көмеді. DSR-ге тиімді сынақ саны керек — бірақ түзету бір бағалауышқа (ең дөрекісіне де емес, онда түзету Neff=2N_{\text{eff}} = 2-ге жақын жерде өшеді) сенуде емес. Ол стандартты бағалауыштардың бүкіл диапазонын (мұнда 1.6-дан 370-ке дейін) оқып, тұрақты ма екенін тексеруде. Осы эдж үшін ол тұрақты болды: дефляция шынымен белсенді жерлердің бәрінде сақталды (Neff=16N_{\text{eff}} = 16-2121-де шынайы 1.85-2.00 жылдық шек), тек шамадан тыс санайтын бағалауышта ғана сәтсіз болды. Диапазон бойынша тұрақты қорытынды кез келген жалғыз саннан әлдеқайда күшті.
  2. DSR-ды Reality Check-пен жұптастырыңыз. Reality Check пен оның SPA-типті (студентизацияланған) туысы B жағдайын ешбір сынақ-саны хирургиясынсыз дұрыс шешкенін байқаңыз (p = 0.0024 және 0.0038) — олар тәуелділікті табиғи түрде, стационарлы bootstrap арқылы өңдейді, себебі олар гипотетикалық тәуелсіз мәмілелерді санаудың орнына нақты корреляцияланған қайтарым ағындарын қайта іріктейді. Бұл — бүкіл тиімді-N шатасуының шешуші сәті: RC-ге NN керек емес. DSR мен RC әртүрлі сұрақтарға жауап береді: DSR "жеңімпаз осы іздеу ішінде ерекше ме?" деп сұрайды (және іздеу қанша тиімді қарау жасағанын білуі керек); RC/SPA-типті "ең жақсы ереже деректерді аңдудан кейін де қолма-қолдан асып түсе ме?" деп сұрайды (және тәуелділікті деректердің өзінен оқиды). Екеуі де керек. Олар келіспегенде — мұнда шикі-саналған DSR мен RC істегендей — келіспеушілік диагностикалық: бұл әдетте NN-ыңыздың қате екенін білдіреді.

Бұл — біздің speed-ladder мен IPC-tax зерттеулері инженерлік жағынан соққан дәл сол құрылымдық ескерту — үлкен корреляцияланған торды жүргізетін жылдам іздеу сізге көп тәуелсіз мәмілелер сатып бермейді, ал тор өлшемін сынақ саны деп қарастыру сіздің оптимизаторыңызды да, маңыздылық тестіңізді де алдайды. Probability of backtest overfitting (PBO) жайлы алдағы серіктес мақала дәл осы таңдау бейімін қайта-іріктеу жағынан шабуылдайды (CSCV), және мұнда бәрімен табиғи түрде жұптасады: DSR жеңімпазға баға береді, PBO процедураға баға береді.

Адалдық ескертулері

Үш ескерту, ашық айтылған, себебі бақыланатын зерттеудің бүкіл мәні оны асыра мадақтамау.

  • Қайтарымдар синтетикалық. Калибровка мен қуат тәжірибелері үшін тәуелсіз-бірдей-бөлінген қалыпты, шынайы-эдж жағдайы үшін режим-ауысатын процесс — нарықтық шынайылық үшін емес, бақыланатын шынайы негіз үшін таңдалған. Нақты қайтарымдар семіз-құйрықты, автокорреляцияланған, стационарлы емес, ал PSR-дың қиғаштық/куртозис мүшелері дәл осылардың біріншісін өңдеу үшін бар. Мұндағы нәтиже — калибровкаланған әдіс, стратегия емес: біз тесттің жалған жаңалықтарды бақылайтынын дәлелдей алатын жалғыз жол — оны еш нәрсе жоқ екенін білетін деректерде жүргізу. Бұл шынайы негізді жасауды талап етеді.
  • Ешбір тиімді-N бағалауышы канондық емес — сондықтан біз бесеуін хабарладық. Орта-корреляция бір жолдық формуласы Neff=N/(1+(N1)ρˉ)N_{\text{eff}} = N/(1 + (N-1)\bar\rho) рецензентке түсінікті және бағыты бойынша дұрыс (көбірек корреляция ⇒ тиімді сынақтар аз), бірақ ол орта үшін дисперсия-азайту коэффициенті — DSR-дың максимум бенчмаркымен функционалдық сәйкессіздік — ал Neff<2N_{\text{eff}} < 2 жанында ол дефляцияны толығымен өшіреді. Меншікті-мән бағалауыштары (қатысу коэффициенті, PCA-95%, Kaiser) жақсырақ сәйкес, бірақ бәрібір эвристикалық, ал Cheverud-Nyholt теңкорреляция астында шамадан тыс санайды. Толығырақ, принципті тәсіл — сынақ кластерлеу (Bailey & López de Prado-ның DSR 3-қосымшасы): сынақтарды корреляция құрылымы бойынша топтап, бәрін бір скалярға түсірудің орнына кластерлерді санау. Біз бүкіл диапазонды дәл осы себептен хабарладық: таңдау шешілмеген — бес бағалауыштың бәрінде тұрақты қорытынды адал талап; бір бағалауышты таңдаудан тәуелді болғаны олай болмас еді.
  • Bootstrap — студентизацияланған Reality Check, толық Hansen SPA емес, ал қайта іріктеу саны тәжірибе бойынша ерекшеленеді. Бұл мақала "SPA-типті" деген жерде, ол White's Reality Check-ті ереже-бойынша студентизациямен білдіреді; Hansen-ның толық, үйлесімді, іріктемеге тәуелді қайта орталықтандыруы іске асырылмаған. Калибровка жалған-жаңалық деңгейлері 400 іздеу бойынша іздеу басына 500 стационарлы-bootstrap қайта іріктеуін қолданады; екі жағдайлық-зерттеу RC/SPA-типті p-мәндері әрқайсысы 5000 қайта іріктеу қолданады. Барлық жерде орта блок ұзындығы 20 (Politis-Romano), α=0.05\alpha = 0.05, жылдандыру үшін жылына 252 период. Мұларды өзгертсеңіз, үшінші-ондық сандар қозғалады; әңгіме — шикі 1.000-ге қарсы принципті 0.001-0.057, шу шегінен сәл жоғары 50% қуатқа жететін S-қисық, және қорытындысы тиімді-N диапазоны бойынша оқылуы керек корреляцияланған-тор тұзағы — өзгермейді.

Негізгі қорытындылар

  1. Параметрлерді іздеу — көптеген тестілеу машинасы, ал шикі маңыздылық тесті оған соқыр. Эджі жоқ 1000 стратегияда ең жақсы жылдық Sharpe орта есеппен 1.63 құрайды, бір реттік тесттің медиан p-мәні 0.000686 — ал "бұл маңызды ма?" тесті жаңалықты 100% жағдайда жариялайды (жалған жаңалық деңгейі 1.000). Ешнәрседен алынған керемет Sharpe, ешқашан дұрыс сұрақ қоймаған тестпен маңызды деп куәландырылған.
  2. Deflated Sharpe Ratio мақсатты нөлден шу шегіне жылжытады. DSR жеңімпазды нөлмен емес, SR0SR_0-мен — осы көлемдегі іздеудің күтілетін ең-жақсы-сәттілік-арқылы нәтижесімен — салыстырады, бұл нөлдік-гипотеза жағдайында жылдық 1.63-ке жетеді, дәл орта шу жеңімпазы тұрған жерде (шығарылған: 0.1030×2520.1030 \times \sqrt{252}). Оның нөлдік жалған жаңалық деңгейі 0.001; Harvey-Liu haircut (Bonferroni/Holm 0.057, BHY 0.007) мен White's Reality Check (0.022) басқа жолдармен дәл сол бақылауға жетеді.
  3. Ол шынайы эдждерді сақтайды. DSR-дың анықтау қуаты жылдық Sharpe шамамен 1.73-те 50% қуатқа жететін S-қисық сызады — 1.63 шу шегінен сәл жоғары: шынайы жылдық Sharpe 0.79-да 0.005, 1.90-да 0.651, 2.54-те 0.998, 3.17-де 1.000, жалған позитивтер бүкіл уақытта ~0. Шектен төмен эдждер сәттіліктен ажыратылмайды деп дұрыс шешіледі; одан жоғарылары бірге жуық қуатпен сақталады.
  4. Корреляцияланған торлар шикі DSR-ды бұзады — және жалғыз тиімді-N оны құтқармайды; диапазон құтқарады. 640 ұяшықты MA қиылысу торында (орта жұп корреляциясы ~0.61), шикі-саналған DSR шынайы (іріктеме-ішінде таңдалған, жылдық 3.92) эджді жалған бас тартты (0.748 < 0.95), себебі 640 корреляцияланған сынақ 640 тәуелсіз мәміле емес. Бірақ түзету бір сиқырлы NeffN_{\text{eff}} емес — ең дөрекі бағада (Neff1.6N_{\text{eff}} \approx 1.6) дефляция іс жүзінде өшірілген (шек ~жылдық 0.25), ал DSR жай ғана шикі маңыздылықты қайталайды. Нақты дәлел — эдж стандартты бағалауыштардың бүкіл диапазонында сақталады — DSR Neff=N_{\text{eff}} = 1.6/2.4/16/21-де 1.000/1.000/1.000/0.999, соның ішінде қорғауға болатын PCA-95%/Kaiser орта диапазонында шынайы 1.85-2.00 жылдық шек — кез келген Neff<145N_{\text{eff}} < 145-те аман қалады, тек Cheverud-Nyholt-тың шамадан тыс санайтын 370-де ғана сәтсіздікке ұшырайды. Кездейсоқ серуен әрбір бағалауышта бас тартылады. Нүктені емес, диапазонды оқыңыз.
  5. DSR-ды Reality Check-пен жұптастырыңыз, себебі олар әртүрлі сұрақтарға жауап береді. Reality Check пен оның SPA-типті (студентизацияланған) туысы шынайы эджді ешбір сынақ-саны хирургиясынсыз растады (p = 0.0024 және 0.0038) — олар тәуелділікті стационарлы bootstrap арқылы табиғи түрде өңдейді, бұл дәл тиімді-N дауласатын кездегі шешуші сәт. DSR "жеңімпаз осы іздеу ішінде ерекше ме?" деп сұрайды; RC/SPA-типті "ең жақсысы деректерді аңдудан кейін де қолма-қолдан асып түсе ме?" деп сұрайды. Олардың арасындағы келіспеушілік — NN-ыңыздың қате екені туралы сигнал. Екеуін де жүргізіңіз.

Іздеу жеңімпазы кінәлі, ол өзінің кінәсіздігін дәлелдегенше. Шикі p-мән кінәсіздіктің дәлелі емес — бұл іздеудің өз көтерілген куәлігі, әрі ол таза шуды сенімнің он екі нөлімен растайды. Бенчмаркты сәттілік беретін деңгейге дейін дефляциялаңыз, тиімді сынақтарыңызды адал санаңыз, екінші пікір үшін максимумды bootstrap-пен тексеріңіз. Барлық үш шектен өткен нәрсе шынымен шынайы болуы мүмкін. Тек шикі шектен өткен нәрсе — мыңдаған теңге лақтырушының ішіндегі ең ұзыны.

Толық тәжірибе — нөлдік-гипотеза-калибровка тетігі, отырғызылған-эдж қуат сканерлеуі, корреляцияланған-тор іздеулері, және осы мақаладағы әрбір сан бір детерминистік скриптен қайта генерацияланатын — deflated-sharpe.marketmaker.cc мекенжайындағы серіктес мақалада, коды мен деректері github.com/suenot/deflated-sharpe-search мекенжайында.

blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Нарықтан бір қадам алда болыңыз

AI сауда талдаулары, нарық аналитикасы және платформа жаңалықтары үшін біздің ақпараттық бюллетеньге жазылыңыз.

Біз сіздің жекелігіңізді құрметтейміз. Кез келген уақытта жазылымнан шығуға болады.