Deflatsiyalangan Sharpe Koeffitsienti: Backtestingizdagi 'g'oliblar'ning qanchasi ko'p martalik testlashdan omon qoladi?
"Backtestlar illyuziyasiz" turkumining bir qismi.
📄 Ushbu maqola ilmiy maqolaga aylandi. Quyidagi har bir raqam bitta deterministik skriptdan olingan bo'lib, u nazorat qilinadigan haqiqiy asosni quradi — sof shovqinli qidiruvlar, ekilgan edge'li qidiruvlar va haqiqiy korrelyatsiyalangan parametr setkasi — so'ng ularga nisbatan Deflatsiyalangan Sharpe Koeffitsienti, Harvey-Liu ko'p martalik testlash "soch olish" tuzatmasi va Uaytning Reality Check / Xansenning SPA testini ishga tushiradi, har bir usulning soxta kashfiyotlar darajasi va aniqlash quvvatini to'g'ridan-to'g'ri o'lchaydi. Maqolani onlayn o'qing (interaktiv versiya + PDF) deflated-sharpe.marketmaker.cc sahifasida, kod va ma'lumotlar esa github.com/suenot/deflated-sharpe-search da.
Siz parametrlarni skanerlashni ishga tushirasiz. O'n oltita tezkor davr, qirqta sekin davr, moving-average kesishuvining 640 ta kombinatsiyasi. Setka tugaydi va bitta katak porlaydi: yillik Sharpe 3.9, bitta testning p-qiymati . O'n ikkita nol ahamiyatlilik. Siz nimadir topdingiz.
Yoki siz hech narsa topmadingiz, va bu narsani sizning o'rningizga qidiruv topdi.
Parametrlarni qidirish — bu test emas. Bu N marta urinishning eng omadlisini topish mashinasi, va unga qancha ko'p urinish bersangiz, uning g'olibi shuncha omadli ko'rinadi — ostida haqiqiy edge bor-yo'qligidan qat'i nazar. Eng yaxshi-N-dan-Sharpe tanlash orqali shishiriladi — xuddi ming tasodifiy odamning eng balandi baland bo'lganidek: balandlik haqiqiy bo'lgani uchun emas, balki siz qidirganingiz uchun. G'olib yonida chop etiladigan bitta testli statistikalar — uning p-qiymati, t-statistikasi, "bu ahamiyatlimi?" — bitta oldindan belgilangan gipoteza uchun mo'ljallangan edi. Ularga qidiruvning omon qolganini bersangiz, ular har safar ishonchli tarzda yolg'on gapiradi.
Ushbu maqola ular qanchalik yomon yolg'on gapirishini aniq o'lchaydi, so'ng buni tuzatadigan uchta vositani o'lchaydi. Butun mohiyat — nazorat qilinadigan haqiqiy asos: biz javobni bilgan holatda daromadlar generatsiya qilamiz — ba'zan edge nolga teng bo'lgan sof shovqin, ba'zan ma'lum kuchdagi ekilgan edge — shunda "usul to'g'ri ishladimi?" degan savol taxmin emas, balki fakt bo'ladi. Mana asosiy xulosa oldindan. Ma'lum-null qidiruvlarda, halol javob har doim "kashfiyot yo'q" bo'lganda, har bir test qanchalik tez-tez "bo'ri keldi" deb qichqiradi:
| Test | Ma'lum-null qidiruvlarda soxta kashfiyotlar darajasi | Xulosa |
|---|---|---|
| Sodda "eng yaxshi Sharpe ahamiyatlimi?" | 1.000 | har safar kashfiyotni belgilaydi |
| Deflatsiyalangan Sharpe Koeffitsienti (DSR ≥ 0.95) | 0.001 | nazorat qilingan |
| Harvey-Liu "soch olish" — Bonferroni | 0.057 | ~nazorat qilingan |
| Harvey-Liu "soch olish" — Holm | 0.057 | ~nazorat qilingan |
| Harvey-Liu "soch olish" — BHY | 0.007 | nazorat qilingan |
| Uaytning Reality Check (bootstrap) | 0.022 | nazorat qilingan |
Qidiruv boshiga 1000 ta strategiya, har birida 1000 ta kuzatuv, 2000 ta mustaqil null qidiruv, hamma joyda haqiqiy Sharpe = 0. Sintetik iid Normal daromadlar, seed 0, α = 0.05, yiliga 252 davr. Sodda testning soxta kashfiyotlar darajasi yuqori emas — u aynan bitta.
Birinchi qatorni og'riq sezguncha o'qing. 5% vaqtda sof shovqinda otilishi kerak bo'lgan test 100% vaqtda otiladi — chunki siz unga sof shovqinni emas, balki ming marta olingan sof shovqinning maksimumini ko'rsatasiz, ming tanga-tashlovchining maksimumi esa har doim daho kabi ko'rinadi. Boshqa har bir qator buni biladigan va tuzatadigan usuldir. Butun maqola shu haqida: nega birinchi qator 1.000, nega boshqalari unday emas, va qayerda (oxirgi bo'limda) hatto yaxshi usullarga ham halol qolish uchun ikkinchi tuzatish kerak.
1-akt — Tuzoq: qidiruv hech narsadan Sharpe ishlab chiqaradi

Eng toza tuzoqdan boshlaylik. Daromadlari mustaqil standart-Normal shovqin bo'lgan ta strategiya generatsiya qilamiz — hech qanday trend, hech qanday mahorat, hammasi uchun haqiqiy Sharpe aniq nolga teng. Har birida ta kuzatuv bor. Endi har qanday parametrlarni qidirish qiladigan ishni qilamiz: eng yaxshisini saqlaymiz.
Eng yaxshi-1000-dan bitta kuzatuvga to'g'ri keladigan Sharpe o'rtacha 0.1027 ni tashkil qiladi, bu yillik hisobda 1.63 ga aylanadi (hisoblangan: ). Bu kamtarona raqam emas. Yillik Sharpe 1.63 — bu strategiyaga moliyalashtirish beriladigan, u haqda maqola yoziladigan, unga kapital ajratiladigan natija turi. U esa trendi nolga sozlangan tasodifiy son generatoridan chiqqan.
Endi g'olibni sodda ahamiyatlilik testiga topshiramiz — buni har qanday backtest kutubxonasi bepul chop etadi. Uning Sharpe'ini t-statistikaga aylantiring (), bir tomonlama p-qiymatni oling, agar bo'lsa, kashfiyot deb ataylik:
Ushbu shovqin g'oliblarining median bitta-test p-qiymati 0.000686 — hech qanday edge'ga ega bo'lmagan strategiyaning uchta nol "ahamiyatliligi". Va 2000 ta mustaqil null qidiruv bo'yicha sodda test har birida kashfiyotni e'lon qiladi: soxta kashfiyotlar darajasi 1.000. Bu "shishirilgan" emas. "Biroz yuqori" ham emas. Yagona null gipoteza bo'yicha o'z tabiatiga ko'ra ko'pi bilan 5% vaqtda to'g'ri bo'lgan test qidiruv g'olibi bo'yicha 100% vaqtda noto'g'ri chiqadi.
Nomlanganda mexanizm unchalik nozik emas. Sodda test "ushbu Sharpe null gipoteza ostida tasodifan paydo bo'lishi mumkinmi?" deb so'raydi — bu ma'lumotlarga qarashdan oldin tanlagan strategiya uchun adolatli savol. Ammo siz buni ming tadan eng yuqori Sharpe'ga ega bo'lgani uchun tanladingiz. Siz maksimumga shartlangan holatdasiz, maksimumning namunaviy taqsimoti esa yagona tortishning namunaviy taqsimotidan mutlaqo farq qiladi. Bu bizning oldindan qarash noto'g'riligi taksonomiyasi maqolamiz boshqa tomondan tashxis qo'ygan bir xil kasallik — u yerda bitta barli oqish shovqindan Sharpe 15 ni ishlab chiqargan; bu yerda esa hech qanday oqishsiz, sof tanlov orqali qidiruv shovqindan Sharpe 1.63 ni ishlab chiqaradi. Mexanizm boshqa, ammo alomat bir xil: hech narsani anglatmaydigan ajoyib ko'rinadigan Sharpe.
1.63 raqami muhim, shuning uchun uni yodda tuting. Bu ushbu qidiruv uchun shovqin chegarasi: 1000 ta noledge strategiyaning eng omadlisi ko'rsatishi kutilgan Sharpe. Qidiruv g'olibining har qanday halol testi uni nolga emas, balki shu narsaga — ming marta qaraganingizda faqat omad nima bera olishiga — solishtirishi kerak.
2-akt — Vositalar to'plami: qidiruvni baholashning uchta usuli

Mustaqil ravishda paydo bo'lgan uchta tadqiqot dasturi bir xil yechimga keladi: g'olibni nolga solishtirishni to'xtatib, uni shu o'lchamdagi qidiruv omad tufayli ishlab chiqaradigan narsaga solishtirishni boshlash. Ular ushbu solishtirishni qurish usulida farq qiladi.
PSR va Deflatsiyalangan Sharpe Koeffitsienti (Bailey va López de Prado, 2012 / 2014)
Ehtimolli Sharpe Koeffitsienti (PSR) "Sharpe musbatmi?" degandan ko'ra o'tkirroq savol beradi. U so'raydi: namuna uzunligi va daromadlar shaklini (asimmetriya, semiz dumlar) hisobga olgan holda, haqiqiy Sharpe etalonidan oshib ketish ehtimoli qancha?
Bu yerda — standart-Normal KTF, — asimmetriya, esa ortiqcha bo'lmagan konventsiyada ekssess (Normal ⇒ ; bu yerga ortiqcha ekssessni 3 qo'shmasdan o'rniga qo'ysangiz, deflatsiya noto'g'ri chiqadi). ni belgilang va PSR chekli-namunali ahamiyatlilik testiga aylanadi. Sehr esa ni yaxshi tanlashda.
Deflatsiyalangan Sharpe Koeffitsienti — bu nolga emas, balki butun qidiruvning kutilgan maksimal Sharpe'iga teng etalonda baholangan PSR:
bu yerda — barcha N sinov Sharpe'lari bo'yicha dispersiya (qidiruvning o'zi ishlab chiqargan tarqoqlik), — Eyler-Maskeroni doimiysi, ikkita teskari-Normal had esa ta standart-Normal tortishning kutilgan maksimumiga Ekstremal-Qiymat-Nazariyasi (EVT) yaqinlashuvi. Kodda bu deyarli taassurot qoldirmaydigan darajada qisqa:
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))
So'ng DSR — bu shunchaki ushbu deflatsiyalangan chegara bilan 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 — bu ehtimollik. Biz bo'lganda kashfiyot deb e'lon qilamiz: g'olibning haqiqiy Sharpe'i 95% ishonch bilan omad tufayli kutilgan eng yaxshisidan ustun. ga singdirilgan yuk tashuvchi taxminga e'tibor bering: ta sinov mustaqil deb qabul qilinadi. 5-akt to'liq shu qanday buzilishi haqida.
Harvey-Liu "soch olish" tuzatmasi (2015)
Harvey va Liu xuddi shu muammoga ko'p martalik testlash p-qiymat tuzatmalari — "men M ta test o'tkazdim, o'zimni aldashimga yo'l qo'ymayman" degan klassik mexanizm orqali hujum qiladi. ta bitta-testli p-qiymatlarni tartibida joylashtiring va ularni shishiring:
Bonferroni — bu qo'pol qurol (har qanday soxta pozitivning ehtimolini har bir p-qiymatni ga ko'paytirish orqali nazorat qilish); Holm esa uning bir tekis kuchliroq bosqichma-bosqich pasayuvchi qarindoshi. Uchinchisi, Benjamini-Yekutieli (BHY), soxta-kashfiyot darajasini — sizning rad etishlaringizning noto'g'ri bo'lgan qismining kutilgan ulushini — nazorat qiladi va, muhimi, buni testlar orasidagi ixtiyoriy bog'liqlik ostida ham qiladi, numeratorda garmonik normalizatordan foydalanib:
Ushbu — bu BHY ming ta sinovingiz mustaqil deb taxmin qilmagani uchun to'laydigan narx — u FDR chegarasini kabi o'sadigan koeffitsientga shishiradi. "Soch olish"ning o'zi — bu asosiy metrika: tuzatilgan p-qiymatni qaytadan Sharpe'ga aylantiring va asl Sharpe'ning qanchasini olib tashlashingiz kerak bo'lganini xabar bering. 100% "soch olish" g'olib to'liq ko'p martalik testlash bilan izohlanishini bildiradi; 15% esa u asosan omon qolishini bildiradi.
Uaytning Reality Check va Xansenning SPA (2000 / 2005)
Uchinchi vosita hech qanday taqsimot taxminini qilmaydi. Uaytning Reality Checki har bir qoidaning haqiqiy daromadlarini oladi, qoidalar bo'yicha maksimum statistikasini shakllantiradi va uning null taqsimotini to'g'ridan-to'g'ri bootstrap qiladi:
bu yerda — qoidasining etalonga nisbatan o'rtacha samaradorligi. U daromadlarni statsionar bootstrap (Politis-Romano — tasodifiy uzunlikdagi bloklar, shunda ketma-ket korrelyatsiya qayta namunalashdan omon qoladi) yordamida qayta namunalaydi, null gipotezani qondirish uchun har bir tortishni qayta markazlashtiradi, har bir tortishda maksimumni qayta hisoblaydi va p-qiymatni kuzatilgan qiymatdan oshib ketgan bootstrap maksimumlarining ulushi sifatida xabar beradi. Xansenning SPAsi RC'ni ikki usulda o'tkirlaydi: studentizatsiya (har bir qoidaning o'rtachasini o'zining standart xatosiga bo'lish, shunda bitta yovvoyi yuqori-dispersiyali qoida maksimumni egallab ololmaydi) va null gipotezaning izchil, namunaga bog'liq qayta markazlashtirilishi. Bizning implementatsiyamiz studentizatsiyani qo'shadi, lekin to'liq izchil qayta markazlashtirish bosqichini emas — shuning uchun ushbu maqola SPA-turi p-qiymatini xabar qilgan joyda, buni to'liq Xansen SPA emas, balki studentizatsiyalangan Reality Check deb o'qing. DSR "g'olib ushbu qidiruv ichida alohidami?" deb so'raganda, Reality Check "eng yaxshi qoida naqd puldan qancha qoida sinab ko'rilganini halol hisobga olgan keyin ustun keladimi?" deb so'raydi — va u korrelyatsiyalangan qoidalarni bootstrap orqali, sinovlarni hech qachon sanamasdan, tabiiy ravishda hisobga oladi. Ushbu farqni yodda tuting; oxirgi bo'lim aynan shunga asoslanadi.
3-akt — Kalibrlash butun isbot

Hech narsani belgilamaydigan usul ham soxta kashfiyotlar darajasi nolga teng bo'lardi — va foydasiz bo'lardi. Shuning uchun ushbu vositalarning yagona ma'noli testi ikki tomonlama: ma'lum-null ma'lumotlarda ular soxta kashfiyotlarni darajasida yoki undan pastda nazorat qilishi kerak, ma'lum-edge ma'lumotlarda esa (keyingi bo'lim) baribir otilishi kerak. Ushbu bo'lim — bu birinchi yarim.
Har biri 1000 ta noledge strategiyadan iborat 2000 ta mustaqil qidiruvni ishga tushiring va har bir usul qanchalik tez-tez kashfiyotni e'lon qilishini hisoblang. Ushbu son, 2000 ga bo'lingan holda, soxta kashfiyotlar darajasi — va haqiqat edge yo'q bo'lgani uchun, har bir kashfiyot soxta:
| Test | Soxta kashfiyotlar darajasi (α = 0.05) |
|---|---|
| Sodda ahamiyatlilik | 1.000 |
| Deflatsiyalangan Sharpe Koeffitsienti | 0.001 |
| Harvey-Liu — Bonferroni | 0.057 |
| Harvey-Liu — Holm | 0.057 |
| Harvey-Liu — BHY | 0.007 |
| Uaytning Reality Check | 0.022 |
Har bir asosli usul 5% chizig'i yaqinida yoki unga yaqin joylashadi — ikkita FWER "soch olish" biroz yuqorida, DSR/BHY/RC esa pastda — sodda test esa 100 da turadi. (Bonferroni va Holm bu yerda bir xil 0.057 ni chop etadi, va bu tasodif emas: bitta eng yaxshi strategiya uchun Holm'ning birinchi qadami , bu Bonferroniga qurilishi bo'yicha bir xil, shuning uchun bu ikkita tasdiq emas, balki bitta.) Ammo butun tadqiqotdagi eng chuqur raqam bu jadvalda emas — bu DSR ustunini ishlab chiqaradigan deflatsiyalangan etalon. Null qidiruvlar bo'yicha o'rtachalashtirilgan holda, bitta kuzatuvga to'g'ri keladigan 0.1030 ni tashkil qiladi, bu yillik hisobda 1.63 ga aylanadi (hisoblangan: ) — bu o'rtacha shovqin g'olibi ko'rsatadigan xuddi shu 1.63 (1.63). Bu tasodif emas; bu butun g'oyaning ishlashi:
Deflatsiyalangan chegara aynan shovqin chegarasida turadi. DSR qidiruv g'olibidan nolni yenishni talab qilmaydi. U g'olibdan shu o'lchamdagi qidiruvda faqat omad ishlab chiqara oladigan eng yaxshi natijani yenishni talab qiladi — bu yerda yillik hisobda 1.63. Faqat shovqin chegarasiga teng keladigan g'olib DSR ≈ 0.5 (tanga tashlash) ni oladi, shuning uchun o'rtacha null DSR 0.495, kichik narsa emas. Kashfiyot bo'lish uchun g'olib 1.63 ni va undan ham ko'proqni yenishi kerak — PSR 0.95 dan oshib ketishi uchun yetarlicha.
Bu butun mashqni qayta ko'rib chiqishga majbur qiladi. Sodda test noldan masofani o'lchaydi; har qanday qidiruv bu chegarani osonlikcha yenadi, shuning uchun u foydasiz. DSR esa shovqin chegarasidan masofani o'lchaydi, va bu chegarani yenish haqiqatan ham qiyin — shunday bo'lishi kerak. Harvey-Liu "soch olish" va Reality Check bir xil nazoratga turli yo'llar orqali erishadi (BHY uchun shishirish, RC uchun bootstrap maksimum-taqsimoti), va bir xil qo'shni hududda joylashadi: 0.001 dan 0.057 gacha, da yoki unga yaqin. Bonferroni/Holm'ning 0.057 raqami 5% chizig'idan biroz yuqorida, lekin faqat ozgina: 2000 ta Monte-Karlo qidiruvi bilan 0.05 yaqinidagi FDR bahosining standart xatosi taxminan 0.005 ni tashkil qiladi, shuning uchun 0.057 dan taxminan 1.4 standart xato yuqorida joylashadi — bu buzilgan kafolat emas, Monte-Karlo shovqini. "FWER'ni nazorat qiladi" degani baribir asimptotik va'da, aniq-bitli emas, da ham.
4-akt — Quvvat: u haqiqiy edge'larni saqlaydimi?

Soxta kashfiyotlarni nazorat qilish — bu testning faqat yarmi — hamma narsani rad etadigan tashvishli usul mukammal 0.000 ni oladi va foydasiz. Ikkinchi yarim: haqiqiy edge mavjud bo'lganda, DSR uni topadimi?
Buni ekamiz. 1000 ta strategiya maydonida, ulardan 25 tasiga haqiqiy ma'lum kuchdagi edge beramiz, qolganlarini shovqin sifatida qoldiramiz, so'ng qidiruvni ishga tushiramiz va DSR g'olibni belgilaydimi deb so'raymiz. Ekilgan edge'ni zaifdan kuchligacha suramiz va aniqlash quvvati toza S-shaklidagi egri chiziqni chizadi (soxta-pozitiv daraja butun davomida ~0 da ushlab turiladi):
| Ekilgan haqiqiy Sharpe (yillik) | DSR aniqlash quvvati | DSR soxta-pozitiv darajasi |
|---|---|---|
| 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 |
Egri chiziq qayerda burilishiga qarang. Shovqin chegarasidan pastda — haqiqiy yillik Sharpe 0.79, 1.63 dan ancha past — DSR 0.5% vaqtda otiladi, uni to'g'ri rad etib: bunchalik zaif edge omad ming martalik qidiruv ishlab chiqaradigan narsadan haqiqatan ham farqlanmaydi, va boshqacha da'vo qilish quvvat emas, halolliksizlikdir. Chegara atrofida esa egri chiziq keskin ko'tariladi (1.27 da 0.09, 1.90 da 0.65). Yillik Sharpe 2.54 da quvvat 0.998 ga teng; 3.17 da esa mukammal 1.000. Kuchli edge'lar deyarli har safar saqlanadi, soxta pozitivlar nolga yaqin qoladi, 50%-quvvat kesishmasi esa taxminan 1.73 yillik Sharpe'da joylashadi (1.27 va 1.90 qatorlari orasida interpolatsiya orqali hisoblangan) — bu 1.63 shovqin chegarasidan biroz yuqorida, aynan halol chegara qo'yishi kerak bo'lgan joyda: bu edge 1000-sinovli qidiruv ixtiro qiladigan narsadan oshib keta boshlagan nuqta.
Bu siz haqiqatan ham xohlagan xususiyat, S-egri chiziq shaklida ifodalangan: shovqin chegarasidan past edge'lar to'g'ri ravishda omad deb rad etiladi; unga yetarlicha yuqori edge'lar birga yaqinlashuvchi quvvat bilan saqlanadi. Solishtirish uchun, sodda test haqiqiy Sharpe 0.79 bo'lganda ham ekilgan edge'ni 67% vaqtda "aniqlaydi" — ammo bu raqam ma'nosiz, chunki biz allaqachon u mavjud bo'lmagan edge'ni 100% vaqtda aniqlashini ko'rgan edik. Hamma narsaga otiladigan test hech qanday quvvatga ega emas; unda farqlash qobiliyati yo'q. DSR chekka edge'larga (0.79 va 1.27 qatorlari) sezgirlikning ozgina qismidan voz kechadi, muhim narsa uchun: uning kashfiyotlari haqiqiy.
5-akt — Amaliyotchining tuzog'i: korrelyatsiyalangan setkalar

Hozirgacha barcha narsa mustaqil strategiyalardan foydalangan — bu eng toza sharoit, va DSR'ning mustaqillik taxmini aynan mos keladigan sharoit. Haqiqiy parametr setkalari bunday emas, va aynan shu yerda vosita befarq ishlatilsa, noto'g'ri bo'lishning yangi usuliga aylanadi.
Halol moving-average kesishuv qidiruvini olaylik: 16 tezkor davr 40 sekin davr ta sinov, har birida 755 ta kuzatuv. Bunday setka korrelyatsiyaga to'yingan: fast=45/slow=120 va fast=45/slow=125 deyarli bir xil strategiya, shuning uchun ularning daromad oqimlari birga harakatlanadi. 640 ta sinov bo'yicha o'lchangan o'rtacha juftlik korrelyatsiyasi: taxminan 0.61. Bu 640 ta mustaqil garov emas. Umuman emas.
A holat — tasodifiy yurish (edge yo'q): har bir usul uni to'g'ri o'ldiradi
Setkani sof tasodifiy yurishda ishga tushiring. G'olib jalb qiluvchi ko'rinadi: parametrlar fast=45/slow=120, eng yaxshi yillik Sharpe 0.81, bitta-test p-qiymati 0.081. Har bir usul buni ko'radi:
| Usul | Natija | Xulosa |
|---|---|---|
| DSR (xom K = 640) | 0.431 | rad etish (< 0.95) |
| Reality Check p | 0.570 | rad etish |
| SPA-turi p (studentizatsiyalangan RC) | 0.569 | rad etish |
| Harvey-Liu "soch olish" | 100% | rad etish |
Hech qanday deflatsiyani talab qilmaydigan belgidan boshlaylik: hatto ushbu g'olibning sozlanmagan chekli-namunali ahamiyatliligi, -nolga-nisbatan, faqat 0.918 — bu 640 ta sinovning birontasini tuzatishimizdan oldin allaqachon 0.95 dan past. Deflatsiya esa uni yanada ko'madi: chegara bitta kuzatuvga to'g'ri keladigan , yillik hisobda ~0.91 (hisoblangan: ) — bu g'olibning 0.81 dan yuqori. Eng yaxshi strategiya hatto shovqin chegarasiga ham yetmaydi, DSR ≈ 0.43 (tanga tashlashdan ham yomonroq), va Reality Check, SPA-turi test hamda 100% "soch olish" barchasi kelishadi: bu yerda hech narsa yo'q. Mukammal. Bu oson holat, va u ishlaydi — va, ko'rib turganimizdek, u har qanday samarali-sinovlar hisobida rad etilgan holda qoladi.
B holat — haqiqiy rejim edge'i: xom DSR noto'g'ri xulosa chiqaradi
Endi xuddi shu setkani rejim-almashinuvchi, haqiqiy, foydalanish mumkin bo'lgan edge'ga ega bo'lgan qatorda ishga tushiring. G'olib ta'sirli: parametrlar fast=3/slow=55, eng yaxshi yillik Sharpe 3.92 — bu namuna-ichi, tanlangan Sharpe, qidiruv tomonidan tanlov orqali shishirilgan (haqiqiy yoki namuna-tashqarisi edge emas), lekin ostidagi rejim effekti haqiqiy — bitta-test p-qiymati va sozlanmagan ahamiyatlilik -nolga-nisbatan deyarli 1.000. Bu yerda haqiqiy edge bor va g'olib uni topdi. Xom DSR uni baribir rad etishini ko'ring:
| Usul | Natija | Xulosa |
|---|---|---|
| DSR (xom K = 640) | 0.748 | rad etish (< 0.95) ✗ ortiqcha deflatsiya |
| Reality Check p | 0.0024 | tasdiqlash ✓ |
| SPA-turi p (studentizatsiyalangan RC) | 0.0038 | tasdiqlash ✓ |
| Harvey-Liu "soch olish" | 15% | tasdiqlash ✓ |
Xom DSR 0.748 — bu haqiqiy edge'ning soxta rad etilishi. Sababi — endi qattiq buzilgan mustaqillik taxmini: DSR o'zining deflatsiyalangan chegarasini 640 ta korrelyatsiyalangan sinovni 640 ta mustaqil tortish sifatida qarab qurdi, bu esa kutilgan-maksimum ni bitta kuzatuvga to'g'ri keladigan 0.221 gacha shishiradi — yillik hisobda ~3.51 (hisoblangan: ). 3.51 chegarasiga nisbatan, 3.92 g'olib uni faqat o'rtacha darajada yenadi, va DSR 0.748 ga tushadi — 0.95 dan past. Ushbu chegarani ikkita narsa ko'taradi: xom son (640 ta qarash, samarali ozgina qarash o'rniga), va sinovlar orasidagi haqiqiy mahorat tarqoqligi — ba'zi parametr juftliklari rejim qatorida haqiqatan ham yaxshiroq, bu esa ni kengaytiradi va ni sof omad bera oladigan darajadan yuqoriroqqa ko'taradi. Ikkalasi ham bir tomonga ishlaydi, va chegara juda yuqori chiqadi, chunki qidiruv aslida hech qachon 640 ta mustaqil qarash bo'lmagan; bu bir necha mustaqil garov edi, 640 marta namunalangan.
DSR'ga xom son o'rniga samarali sinovlar sonini bering. Yuqorida ishlatilgan bir qatorli formula o'rtacha juftlik korrelyatsiyasidan olingan qo'pol baho:
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))
va bilan, bu setkani samarali sinovgacha qisqartiradi (hisoblangan: ), va DSR 1.000 gacha sakraydi. Ammo bu raqamdan quvonishdan oldin to'xtang, chunki bu butun ushbu bo'limdagi eng zaif dalil. da deflatsiyalangan chegara yillik gacha qulaydi — deyarli sinov o'rtachasi, deyarli nol. U yerda deflatsiya o'chirilgan: dagi DSR shunchaki g'olibning sozlanmagan chekli-namunali ahamiyatliligini (-nolga-nisbatan ) qayta xabar qilmoqda. Xulosa ko'p martalik testlash tuzatuvi tomonidan ishlab chiqarilgan emas, balki xom ahamiyatlilikdan meros qilib olingan. Va tasodifiy-yurish tomonidagi oyna-tasvir ogohlantirish: uning dagi rad etilishi faqat u g'olib mustaqil ravishda boshidanoq chegara bo'lgani uchun (-nolga-nisbatan ) amal qiladi. Butun dalilni 1.6 ga bog'lasangiz, shubhalanuvchi haq bo'ladi va yelka qisadi: siz tuzatuvni o'chirdingiz va uning ostidagi narsani xabar qildingiz.
Shuning uchun bitta bahoga tayanmang. Halol harakat — va kuchliroq harakat — ni besh xil standart usulda hisoblab, xulosani butun band (diapazon) bo'yicha o'qishdir. Mana bir xil 640-sinovli signal setkasiga qo'llangan besh baholovchi, har biri o'zi taklif qiladigan deflatsiyalangan chegara va u ishlab chiqaradigan DSR bilan:
| Samarali-sinov baholovchisi | Deflatsiyalangan chegara (yillik) | DSR | Xulosa | |
|---|---|---|---|---|
| O'rtacha korrelyatsiya | 1.6 | 0.25 | 1.000 | saqlash |
| Ishtirok koeffitsienti | 2.4 | 0.43 | 1.000 | saqlash |
| PCA (dispersiyaning 95%) | 16 | 1.85 | 1.000 | saqlash |
| Kayzer (o'ziga xos qiymatlar > 1) | 21 | 2.00 | 0.999 | saqlash |
| Cheverud-Nyholt | 370 | 3.31 | 0.845 | rad etish |
| xom setka soni (tuzatuvsiz) | 640 | 3.51 | 0.748 | rad etish |
Baholovchilar: o'rtacha korrelyatsiya — bu yuqoridagi bir qatorli formula; ishtirok koeffitsienti va PCA-95%/Kayzer sonlari korrelyatsiya matritsasining o'ziga xos qiymatlaridan samarali o'lchamlilikni o'qiydi; Cheverud-Nyholt — genetika adabiyotidan olingan, deyarli tenglashtirilgan korrelyatsiya ostida ortiqcha hisoblashi ma'lum bo'lgan o'ziga xos-qiymatlar-dispersiyasi baholovchisi.
Endi fikr o'z joyiga tushadi, va bu "har qanday tuzatish sizni saqlaydi" degani emas. Himoyalanadigan o'rta qismga qarang — PCA-95% () va Kayzer (). Bular deflatsiya-o'chirilgan rejim emas; ular haqiqiy yillik chegarasini 1.85 dan 2.00 gacha qo'yadi — bu 16-21 samarali qarash uchun jiddiy "soch olish", shovqindan ancha yuqori, haqiqiy ko'p martalik testlash jarimasi. Va 3.92 edge baribir uni yenadi (DSR 1.000 va 0.999). Signal DSR'ni istalgan da 144.8 dan past bo'lgan holatda saqlab qoladi (kesishuv nuqtasidan hisoblangan); u faqat Cheverud-Nyholt'ning ostida muvaffaqiyatsizlikka uchraydi — bu baholovchi sinovlar deyarli tengkorrelyatsiyali bo'lganda isbotlangan tarzda ortiqcha hisoblaydi — va hatto xom, tuzatilmagan 640 soni DSR'ni faqat 0.748 gacha, nolga emas, pasaytiradi. Tasodifiy-yurish g'olibi, xuddi shu besh baholovchi orqali o'tkazilganda, ularning har birida rad etiladi (u hech qanday da omon qolmaydi). Bu haqiqiy natija: bitta omadli son emas, balki standart samarali-sinov baholovchilarining butun bandida barqaror bo'lgan xulosa — bu ulardan istalgan biriga ishonishdan ancha kuchliroq dalil.
Eng qo'pol baholovchi haqida bitta texnik ogohlantirish, chunki bu u nega yumshoq uchda joylashganini tushuntiradi: aslida korrelyatsiyasi ostida korrelyatsiyalangan o'zgaruvchilarning o'rtachasi uchun dispersiya-kamaytirish koeffitsienti (o'rtachalash korrelyatsiya ostida qancha foyda berishi). DSR'ning etaloni esa ekstremal-qiymat kattaligi — sinovlarning kutilgan maksimumi — shuning uchun o'rtacha-dispersiya qisqartirishni sinov soni sifatida ishlatish funksional nomuvofiqlik: yo'nalishda to'g'ri (korrelyatsiyalangan ⇒ kamroq samarali sinovlar), lekin maksimumning taqsimoti aslida bog'liq bo'lgan kattalik emas. Aynan shuning uchun bandning o'rtasidagi o'ziga xos-qiymat-asosli baholovchilar ishonchliroq o'qishdir, va aynan shuning uchun nuqta emas, balki band — bu yetkazib beriladigan natija.
Xulosa: ikkala vositadan ham foydalaning va DSR'ga to'g'ri N bering

B holatidan ikkita narsa kelib chiqadi, va ikkalasi ham yuk tashuvchi:
- Sinovlar korrelyatsiyalangan bo'lganda xom setka o'lchami DSR uchun noto'g'ri N — va yagona samarali-N ham to'g'risi emas. 640 ni mustaqillikni taxmin qiladigan formulaga qo'yish ortiqcha deflatsiya qiladi: u qidiruv aslida yetgan darajadan ancha balandroq shovqin chegarasini ishlab chiqaradi va haqiqiy edge'larni uning ostiga ko'madi. DSR'ga samarali sinovlar soni kerak — lekin yechim bitta baholovchiga ishonish emas (eng qo'polisiga esa umuman emas, unda tuzatish yaqinida o'chib qoladi). Yechim — xulosani standart baholovchilarning butun bandi (bu yerda 1.6 dan 370 gacha) bo'yicha o'qib, uning barqarormi yoki yo'qligini ko'rish. Ushbu edge uchun u shunday edi: deflatsiya haqiqatan ham faol bo'lgan har joyda saqlanib qoldi (- da haqiqiy 1.85-2.00 yillik chegara), faqat ortiqcha hisoblaydigan baholovchi ostida muvaffaqiyatsizlikka uchradi. Band bo'yicha barqaror xulosa har qanday yagona sondan ancha kuchliroq.
- DSR'ni Reality Check bilan juftlashtiring. E'tibor bering, Reality Check va uning SPA-turi (studentizatsiyalangan) qarindoshi B holatini hech qanday sinov-soni operatsiyasisiz to'g'ri hal qildi (p = 0.0024 va 0.0038) — ular haqiqiy korrelyatsiyalangan daromad oqimlarini qayta namunalaganligi sababli, gipotetik mustaqil garovlarni sanash o'rniga, bog'liqlikni statsionar bootstrap orqali tabiiy ravishda hisobga oladi. Bu butun samarali-N muammosi uchun hakam: RC'ga hech qanday kerak emas. DSR va RC turli savollarga javob beradi: DSR "g'olib ushbu qidiruv ichida alohidami?" deb so'raydi (va qidiruv nechta samarali qarash qilganini bilishi kerak); RC/SPA-turi "eng yaxshi qoida ma'lumotlarni titkilashni halol hisobga olgan holda naqd puldan ustun keladimi?" deb so'raydi (va bog'liqlikni ma'lumotning o'zidan o'qiydi). Sizga ikkalasi ham kerak. Ular kelishmagan holatda — bu yerda xom-hisobli DSR va RC kabi — kelishmovchilik diagnostik ma'noga ega: bu odatda sizning ingiz noto'g'ri ekanini bildiradi.
Bu bizning tezlik-narvon va IPC-soliq tadqiqotlarimiz muhandislik tomonidan duch kelgan xuddi shu tuzilmaviy ogohlantirish — ulkan korrelyatsiyalangan setkani ishga tushiradigan tezkor qidiruv sizga ulkan miqdordagi mustaqil garovlarni sotib bermaydi, va setka o'lchamini sinovlar soni deb hisoblash sizning optimizatoringizni ham, ahamiyatlilik testingizni ham aldaydi. Backtestni ortiqcha moslashtirish ehtimoli (PBO) haqidagi kelgusi hamroh maqola aynan shu tanlov noto'g'riligiga qayta namunalash tomonidan (CSCV) hujum qiladi, va bu yerdagi hamma narsa bilan tabiiy ravishda juftlashadi: DSR g'olibni baholaydi, PBO esa protsedurani baholaydi.
Halollik izohlari
Uchta ogohlantirish, oddiy tilda aytilgan, chunki nazorat qilinadigan tadqiqotning butun mohiyati uni haddan tashqari maqtamaslikdir.
- Daromadlar sintetik. Kalibrlash va quvvat tajribalari uchun iid Normal, haqiqiy-edge holati uchun rejim-almashinuvchi jarayon — bular nazorat qilinadigan haqiqiy asos uchun tanlangan, bozor haqiqiyligi uchun emas. Haqiqiy daromadlar semiz-dumli, avtokorrelyatsiyalangan va nostatsionar, va PSR'ning asimmetriya/ekssess hadlari aynan shulardan birinchisini hal qilish uchun mavjud. Bu yerdagi yetkazib beriladigan natija — kalibrlangan usul, strategiya emas: biz test soxta kashfiyotlarni nazorat qilishini faqat hech narsa topilmasligini bilgan ma'lumotda uni ishga tushirish orqali isbotlay olamiz. Bu esa haqiqiy asosni ishlab chiqarishni talab qiladi.
- Hech qanday samarali-N baholovchisi kanonik emas — shuning uchun biz beshtasini xabar qildik. O'rtacha-korrelyatsiya bir qatorli formulasi taqrizchi uchun tushunarli va yo'nalish bo'yicha to'g'ri (ko'proq korrelyatsiya ⇒ kamroq samarali sinovlar), lekin bu o'rtacha uchun dispersiya-kamaytirish koeffitsienti — DSR'ning maksimum etaloni bilan funksional nomuvofiqlik — va yaqinida deflatsiyani butunlay o'chiradi. O'ziga xos-qiymat baholovchilari (ishtirok koeffitsienti, PCA-95%, Kayzer) yaxshiroq mos keladi, lekin baribir evristik, va Cheverud-Nyholt tengkorrelyatsiya ostida ortiqcha hisoblaydi. To'liqroq, asosli yondashuv — sinovlarni klasterlash (Bailey va López de Prado'ning DSR 3-ilovasi): sinovlarni korrelyatsiya tuzilishi bo'yicha guruhlash va hammasini bitta skalyarga yig'ish o'rniga klasterlarni sanash. Biz butun bandni aynan tanlov hali hal qilinmagani uchun xabar qildik — barcha beshta baholovchi bo'yicha barqaror xulosa halol da'vo; bitta baholovchini tanlashga bog'liq bo'lgan xulosa esa unday bo'lmasdi.
- Bootstrap — bu studentizatsiyalangan Reality Check, to'liq Xansen SPA emas, va qayta namunalash sonlari tajribaga qarab farqlanadi. Ushbu maqola "SPA-turi" deganda, har bir qoida uchun studentizatsiya bilan Uaytning Reality Check'ini nazarda tutadi; Xansenning to'liq izchil, namunaga bog'liq qayta markazlashtirish esa amalga oshirilmagan. Kalibrlash soxta-kashfiyot darajalari 400 ta qidiruv bo'yicha qidiruv boshiga 500 ta statsionar-bootstrap qayta namunasidan foydalanadi; ikkita holat-tadqiqot RC/SPA-turi p-qiymatlari esa har biri 5000 ta qayta namuna ishlatadi. Butun davomida o'rtacha blok uzunligi 20 (Politis-Romano), , yillik hisoblash uchun yiliga 252 davr. Buni o'zgartirsangiz, uchinchi-o'nlik raqamlari siljiydi; ammo hikoya — sodda 1.000 ga qarshi asosli 0.001-0.057, shovqin chegarasidan biroz yuqorida 50% quvvatga yetadigan S-egri chiziq, va xulosasi samarali-N bandi bo'yicha o'qilishi kerak bo'lgan korrelyatsiyalangan-setka tuzog'i — o'zgarmaydi.
Xulosalar
- Parametrlarni qidirish — bu ko'p martalik testlash mashinasi, sodda ahamiyatlilik testi esa unga ko'r. 1000 ta noledge strategiyada eng yaxshi yillik Sharpe o'rtacha 1.63 ni tashkil qiladi, bitta-test p-qiymati mediani 0.000686 — va "bu ahamiyatlimi?" testi kashfiyotni 100% vaqtda e'lon qiladi (soxta kashfiyotlar darajasi 1.000). Hech narsadan chiqqan ajoyib Sharpe, to'g'ri savol bermagan test tomonidan ahamiyatli deb tasdiqlangan.
- Deflatsiyalangan Sharpe Koeffitsienti maqsad chizig'ini noldan shovqin chegarasiga ko'chiradi. DSR g'olibni nolga emas, balki ga — shu o'lchamdagi qidiruvning omad tufayli kutilgan eng yaxshisiga solishtiradi — bu null holat uchun yillik 1.63 ga tushadi, aynan o'rtacha shovqin g'olibi turgan joyda (hisoblangan: ). Uning null soxta-kashfiyotlar darajasi 0.001; Harvey-Liu "soch olish" (Bonferroni/Holm 0.057, BHY 0.007) va Uaytning Reality Check'i (0.022) boshqa yo'llar orqali xuddi shu nazoratga erishadi.
- U haqiqiy edge'larni saqlaydi. DSR'ning aniqlash quvvati yillik Sharpe ~1.73 da 50% quvvatga yetadigan S-egri chiziqni chizadi — bu 1.63 shovqin chegarasidan biroz yuqorida: haqiqiy yillik Sharpe 0.79 da 0.005, 1.90 da 0.651, 2.54 da 0.998, 3.17 da 1.000, soxta pozitivlar esa butun davomida ~0. Chegaradan past edge'lar to'g'ri ravishda omaddan farqlanmaydigan deb topiladi; undan yuqori edge'lar esa birga yaqinlashuvchi quvvat bilan saqlanadi.
- Korrelyatsiyalangan setkalar xom DSR'ni buzadi — va yagona samarali-N buni tuzata olmaydi; band tuzatadi. 640-kataklik MA kesishuv setkasida (o'rtacha juftlik korrelyatsiyasi ~0.61), xom-hisobli DSR haqiqiy (namuna-ichi tanlangan, yillik 3.92) edge'ni soxta ravishda rad etdi (0.748 < 0.95), chunki 640 ta korrelyatsiyalangan sinov 640 ta mustaqil garov emas. Ammo yechim bitta sehrli emas — eng qo'pol bahoda () deflatsiya deyarli o'chiriladi (chegara ~yillik 0.25) va DSR shunchaki xom ahamiyatlilikni takrorlaydi. Haqiqiy dalil shundaki, edge standart baholovchilarning butun bandi bo'yicha saqlanadi — DSR 1.000/1.000/1.000/0.999, 1.6/2.4/16/21 da, shu jumladan himoyalanadigan PCA-95%/Kayzer o'rta-diapazonida haqiqiy yillik 1.85-2.00 chegarasi bilan — istalgan da omon qoladi, va faqat Cheverud-Nyholt'ning ortiqcha hisoblovchi 370 sida muvaffaqiyatsizlikka uchraydi. Tasodifiy yurish esa har bir baholovchida rad etiladi. Nuqtani emas, bandni o'qing.
- DSR'ni Reality Check bilan juftlashtiring, chunki ular turli savollarga javob beradi. Reality Check va uning SPA-turi (studentizatsiyalangan) qarindoshi haqiqiy edge'ni (p = 0.0024 va 0.0038) hech qanday sinov-soni operatsiyasisiz tasdiqladi — ular bog'liqlikni statsionar bootstrap orqali tabiiy ravishda hisobga oladi, bu esa samarali-N bahsli bo'lganda aynan hakamdir. DSR "g'olib ushbu qidiruv ichida alohidami?" deb so'raydi; RC/SPA-turi "eng yaxshisi ma'lumotlarni titkilashdan keyin naqd puldan ustun keladimi?" deb so'raydi. Ular orasidagi kelishmovchilik — sizning ingiz noto'g'ri ekanining signali. Ikkalasini ham ishga tushiring.
Qidiruv g'olibi aybdor deb hisoblanadi, aybsizligi isbotlanmaguncha. Sodda p-qiymat aybsizlikning isboti emas — bu qidiruvning o'zining shishirilgan guvohligi, u sof shovqinni o'n ikkita nol ishonch bilan tasdiqlaydi. Etalonni omad bera oladigan darajaga deflatsiya qiling, samarali sinovlaringizni halol sanang va ikkinchi fikr uchun maksimumni bootstrap qiling. Uch chegarani ham yenib o'tgan narsa haqiqatan ham haqiqiy bo'lishi mumkin. Faqat soddasini yenib o'tgan narsa esa ming ta tanga-tashlovchining eng balandidir.
To'liq tajriba — null-kalibrlash mashinasi, ekilgan-edge quvvat sweep'i, korrelyatsiyalangan-setka qidiruvlari, va ushbu maqoladagi har bir raqam bitta deterministik skriptdan qayta ishlab chiqarilishi mumkin — bular deflated-sharpe.marketmaker.cc manzilidagi hamroh maqolada, kod va ma'lumotlar esa github.com/suenot/deflated-sharpe-search da.
Authors
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.