Maqsad funksiyasini loyihalash: siz optimallashtirgan metrika strategiyangizni yashirincha tanlaydi
"Illyuziyasiz bektestlar" turkumining bir qismi.
📄 Bu maqola ilmiy maqolaga aylandi. Quyidagi har bir raqam nazorat qilinadigan asosiy haqiqatni quruvchi bitta deterministik skriptdan olingan — mo'tadil signal diapazonida ma'lum edge'ga ega va hamma joyda yog'li dumli shovqinga ega sintetik bozor — so'ngra oltita turli maqsad funksiyasi ostida chegara qidiruvini bajaradi va, out of sample, har bir maqsad haqiqatan qaysi strategiyani tanlashini o'lchaydi. Maqolani onlayn (interaktiv versiya + PDF) objective-design.marketmaker.cc saytida o'qing, kod va ma'lumotlar github.com/suenot/objective-design-degeneracy manzilida.
Siz eng yaxshi strategiyani xohlaysiz. Shuning uchun qidiruv o'tkazasiz — chegarani, lookback'ni, stop masofasini skanerlaysiz va eng yuqori ball to'plagan sozlamani saqlab qolasiz. Qidiruv tugaydi va sizga g'olibni beradi. Oqilona. Standart. Bu dunyodagi har bir optimallashtiruvchi, grid search va giperparametr sozlovchisi qiladigan ish.
Lekin fe'lga qarang: eng yuqori ball to'playdi. Nimada eng yuqori? Qidiruv biror narsani toj kiydirishdan oldin, siz unga maksimallashtirishi kerak bo'lgan bitta sonni berishingiz kerak edi — maqsad funksiyasini. PnL. Sharpe. Savdo qilingan barlardagi Sharpe. Maksimal pasayishga nisbatan daromad. Siz shulardan birini terdingiz, ehtimol ko'p o'ylamasdan, va keyin qidiruv million baholashni aynan siz so'ragan narsani bajarishga sarfladi.
O'sha bir tanlov formallik emas. Bu — butun qaror. Qidiruv "yaxshi strategiya"ni topmaydi — bunday narsa mavhum ma'noda mavjud emas. U siz tanlagan skalyarni maksimallashtiradigan strategiyani topadi, turli skalyarlar esa bir xil ma'lumotlarda mutlaqo boshqa strategiyalarga ishora qiladi. Maqsad — rul ustidagi yashirin qo'l, va ko'pincha hech kim unga qaramaydi.
Mana butun maqola bitta jadvalda. Bitta chegara qidiruvi, haqiqiy, ma'lum edge'ga ega bitta sintetik bozor, oltita maqsad — va ular tanlagan oltita strategiya, ajratib qo'yilgan ma'lumotlarda o'lchangan:
| Maqsad (qidiruv nimani maksimallashtiradi) | O'rtacha bozor ekspozitsiyasi | In-sample Sharpe | Out-of-sample Sharpe | Degeneratsiyalangan g'oliblar |
|---|---|---|---|---|
| Raw PnL | 0.859 | 1.76 | 1.61 | 0% |
| Full-Timeline Sharpe | 0.740 | 1.82 | 1.71 | 0% |
| Per-Trade ("faol") Sharpe | 0.286 | 1.00 | 0.70 | 57% |
| Ekspozitsiya pol chegarasi () | 0.740 | 1.82 | 1.71 | 0% |
| Bitimlar soniga asoslangan shrinkage (conf_k) | 0.523 | 1.54 | 1.31 | 20.7% |
| Mustahkam (chegara + conf_k) | 0.675 | 1.78 | 1.70 | 0.2% |
600 mustaqil seed, har birida bar, qidiruv boshiga 80 nomzod chegara, in-sample va out-of-sample mustaqil olingan. Yillik Sharpe (yiliga 252 davr). "Degeneratsiyalangan" = tanlangan g'olib bozorda vaqtning 5%dan kamida bo'lgan, yoki musbat bo'lmagan out-of-sample Sharpe ko'rsatgan. Bu bozorning haqiqiy optimumi — 1.77 yillik out-of-sample Sharpe.
Uchinchi qatorni og'riq sezguncha o'qing. Per-Trade Sharpe — faoliyatga bog'liq metrikalarning butun oilasining vakili (per-trade Sharpe, expectancy, van Tarpning SQN'i, g'alaba tezligi), barchasi faqat savdo qilingan barlarda hisoblangan — out of sample boshqalarning yarmidan yomonroq strategiyani tanlaydi va buni 57% holatda degeneratsiyalangan tarzda qiladi. Bu biroz yomonroq maqsad emas. Bu ma'lumotlarda bu — tuzoq, va qidiruv unga yarmidan ko'proq holatda tushadi. Endi undan yuqoridagi qatorni o'qing: oddiy Full-Timeline Sharpe hech qachon degeneratsiyalanmaydi va out of sample 1.71 ball to'playdi. Bu butun ta'mirlashning yakuni, erta ochib berildi — halol yechim shunchaki butun vaqt o'qi bo'yicha o'lchash; pastki qatorlardagi murakkabroq tuzatishlar, eng yaxshi holatda ham, faqat shu songa tenglashadi, hech qachon undan oshmaydi. Bu maqola — o'sha tuzoq va uning ta'mirlanishining anatomiyasi, asosiy haqiqat butun davomida ma'lum bo'lgani uchun "maqsad to'g'ri strategiyani tanladimi?" degan savol fikr emas, fakt bo'ladi.
1-parda — Yashirin qaror: Goodhart qonuni — bu qidiruv

1975-yilda iqtisodchi Charlz Goodhart o'zining boshqa barcha ishlaridan uzoqroq yashagan gapni yozdi:
"Any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes."
Ko'pincha Marilin Strathernga tegishli deb hisoblangan mashhur parafraza aniqroq: o'lchov maqsadga aylanganda, u yaxshi o'lchov bo'lishdan to'xtaydi.
Parametr qidiruvi — Goodhart qonunining eng toza mumkin bo'lgan namunasi. Maqsad funksiyasi — o'lchov. Qidiruv — bosim — o'sha o'lchovni imkon qadar yuqoriga surish uchun minglab, millionlab urinishlar. Va qidiruvga siz o'sha o'lchov bilan nimani nazarda tutganingiz mutlaqo befarq. Unga faqat son muhim. Agar sonni kattalashtirishning haqiqiy, savdo qilinadigan edge'ga hech qanday aloqasi bo'lmagan usuli bo'lsa — kamdan-kam savdo qilish, ko'p vaqt tekis turish, bir nechta baxtli chetlanishlarni ushlab olish — qidiruv o'sha usulni topadi, chunki maksimumni topish uning yagona qurilish maqsadidir.
Bu AI-xavfsizlik adabiyoti reward hacking deb ataydigan aynan o'sha xatolik: siz xohlagan narsaning proksisini optimallashtiruvchi agent proksi va maqsad o'rtasidagi har bir bo'shliqni ishlatadi. Sizning qidiruvingiz — o'sha agent. "Sharpe ratio" — o'sha proksi. "Keyingi chorakda haqiqiy pulni ishonib topshira oladigan strategiya" — haqiqiy maqsad. Ular orasidagi tafovut — butun fanning yashaydigan joyi.
O'sha tafovut ochilishini ko'rish uchun bizga haqiqatni bilgan dunyo kerak. Shuning uchun biz uni quramiz.
Bozor. Har bir davrda bashoratchi (standart normal signal) keladi, undan keyin u qisman bashorat qiladigan daromad keladi. Edge haqiqiy, lekin cheklangan — u faqat mo'tadil signal diapazonida mavjud, undan tashqarida yo'qoladi:
Ikkita loyihalash tanlovi muhim. Birinchidan, edge mo'tadil diapazonda yashaydi: ekstremal signallar hech qanday bashoratli ma'lumot olib yurmaydi, shuning uchun strategiya o'rtani savdo qilib, dumlarni o'tkazib yuborishi kerak. Ikkinchidan, shovqin yog'li dumli (4 erkinlik darajasiga ega Student-, haqiqiy daromadlarda haqiqatan mavjud bo'lgan og'ir dum turi) — lekin bu ingredient bu yerda realizm uchun, mexanizm uchun emas. Yog'li dumlar tuzoqni mumkin qiluvchi narsa deb aytish jozibali, va biz nazoratni o'tkazguncha aynan shunday deb taxmin qildik: bu bozorning gauss shovqinli versiyasi (natijalarda gaussian_control, 300 seed) tuzoqni deyarli o'zgarishsiz takrorlaydi — per-trade maqsadi gauss shovqinida hali ham 55.7% vaqtda degeneratsiyalanadi, yog'li dumlar bilan **57.0%**ga nisbatan, va uning out-of-sample Sharpe'i 0.71, 0.70ga nisbatan. Demak, tuzoq yog'li dumlarga tegishli emas. Bu sof kichik namuna-plyus-tanlov effekti: ~20 past ekspozitsiyali chegaralar orasidan, bir necha kuzatuvda hisoblangan Sharpe'ning maksimumini oling, va qandaydir baxtli burchak har doim ajoyib ko'rinadi. Har qanday shovqin taqsimoti buni qiladi; bozorda faqat bir necha bar bo'lgan strategiya sof omad bilan bir necha qulay harakatlarni bosib o'tib, hech narsani anglatmaydigan in-sample sonni berishi mumkin. Biz yog'li dumlarni saqlaymiz, chunki haqiqiy daromadlarda ular bor, tuzoqqa ular kerak bo'lgani uchun emas.
Strategiya. Bir parametrli oila. Signal yo'nalishida savdo qiling, uning kattaligi chegara dan past bo'lganda, aks holda tekis turing:
Juda kichik faqat eng kichik, eng sezilmaydigan signallarda savdo qiladi — kamdan-kam bitimli lotereya, bozorda deyarli hech qachon yo'q. Diapazon chetiga yaqin butun haqiqiy edge'ni ushlaydi va yaxshi ekspozitsiyalangan. Juda katta hamma narsani savdo qiladi, hech qanday edge'ga ega bo'lmagan, faqat shovqin qo'shadigan diapazondan tashqari barlarni ham qo'shib.
def gen_dataset(T, rng, beta=0.30, band=1.0, tail_df=4):
s = rng.standard_normal(T)
edge = beta * np.where(np.abs(s) <= band, s, 0.0) # edge ONLY inside |s| <= 1
t = rng.standard_t(tail_df, T) / np.sqrt(tail_df / (tail_df - 2.0)) # fat tails, unit var
return s, edge + t
def simulate(s, r, theta):
pos = np.where(np.abs(s) <= theta, np.sign(s), 0.0) # trade the band, skip outliers
strat = pos * r
active = pos != 0.0
exposure = active.mean() # fraction of bars in a position
sharpe_full = strat.mean() / strat.std(ddof=1) # on the WHOLE timeline
sharpe_active = strat[active].mean() / strat[active].std(ddof=1) # on ONLY the active bars
return dict(exposure=exposure, n_trades=int(active.sum()),
sharpe_full=sharpe_full, sharpe_active=sharpe_active, pnl=strat.sum())
Bozorni o'zimiz qurganimiz uchun, haqiqatni to'g'ridan-to'g'ri hisoblay olamiz — 600 seed bo'yicha har bir chegarada o'rtacha samaradorlik, out of sample. Haqiqiy optimum da joylashgan: aynan signal diapazoni chetida, bozorda vaqtning taxminan **70%**ida (chiqarilgan: standart normal signal ichiga ehtimollik bilan tushadi), yillik out-of-sample Sharpe 1.77 beradi. Bu — har bir maqsad topishga harakat qilayotgan son. Uni esda tuting: θ≈1.04, OOS Sharpe 1.77, vaqt o'qining taxminan 70%i bozorda. Maqsad bundan uzoq tanlagan har qanday narsa — maqsadning muvaffaqiyatsizligi, bozorning qiyinligi emas.
2-parda — Tuzoq: sakkizta omadli bitim, 21ga teng Sharpe, sarob

Endi bu bozorning aniq tortilishiga sodda maqsadni bo'shatib qo'yamiz — seed 6. Seed haqida to'liq ochiqlik: u birinchi tortilish ham, tasodifiy ham emas edi. Biz aniq degeneratsiyalangan per-trade g'olibni izlab, seed'larni skanerladik va aynan shuni tanladik, mexanizm e'tibordan chetda qolmasligi uchun. Uning ko'rsatadigan natijasi to'liq odatiy — 3-parda tasdiqlaganidek, per-trade maqsadi barcha seed'larning 56%ida 5%dan past ekspozitsiyaga ega lotereyani tanlaydi — lekin seed 6ning kattaligi o'sha taqsimotning ekstremal chetida turadi. Uni keng tarqalgan muvaffaqiyatsizlikning ayniqsa yorqin namunasi sifatida o'qing, o'rtacha sifatida emas. Biz Per-Trade Sharpeni optimallashtiramiz: strategiya haqiqatan pozitsiyada bo'lgan barlarda gina hisoblangan Sharpe koeffitsienti. Buni xabar qilish juda tabiiy narsa. "Savdo qilganda, uning bitimlari qanchalik yaxshi?" Bu ko'nikmani faolsizlikdan ajratayotgandek tuyuladi. U aksincha qiladi.
Mana Per-Trade Sharpe seed 6da toj kiydiradigan strategiya:
- Chegara — u faqat eng kichik signallarda savdo qiladi.
- Bozor ekspozitsiyasi 0.4% — vaqtning 99.6%ida tekis.
- Sakkizta bitim. Sakkizta. 2000 bar ichida.
- In-sample per-trade yillik Sharpe: 21.09.
- In-sample full-timeline Sharpe: 0.82.
- Out-of-sample full-timeline Sharpe: 0.13.
Per-trade metrikasi 21.09 ko'rsatadi — hech qanday haqiqiy strategiya hech qachon ko'rsatmagan son, fondni ishga tushiradigan ko'rsatkich. Va bu to'liq sarob. O'sha sakkizta bitim tasodifan bir necha qulay harakatlarni ushlab oldi; faqat o'sha sakkizta bar bo'yicha o'lchaganda, o'rtacha va standart og'ish nisbati astronomik. Lekin butun vaqt o'qida — strategiya vaqtning 99.6%ida tekis yotganda — o'sha "edge" deyarli hech narsa qo'shmaydi: in-sample'da 0.82 full-timeline Sharpe, yangi ma'lumotlarda 0.13gacha qulaydi. Maqsad tanlagan g'olib, barcha savdo maqsadlari uchun, tekis.
Va bu o'sha chegarada haqiqiy edge ham emas. Bozorni eslang: edge diapazonida yashaydi, va aynan o'rtada, signal eng zaif joyda turadi. dagi haqiqiy out-of-sample egri chizig'i −0.01 — noldan farqlanmaydi (asosiy haqiqat egri chizig'idan chiqarilgan). Qidiruv kichik haqiqiy edge topmadi. U shovqinning sakkizta omadli tortilishini topdi va ularni 21ga teng Sharpe sifatida xabar qildi.
Bu kichik tuzoq: Per-Trade Sharpe strategiyani imkon qadar kamdan-kam savdo qilgani uchun mukofotlaydi, chunki qancha kam barda tursangiz, ularning bir nechtasining omadli bo'lishi shuncha oson, va metrika hech qachon "lekin siz haqiqatan bozorda edingizmi?" deb so'ramaydi. Seed 6ning kattaligi tanlab olingan — biz atayin yorqinini izladik — lekin uning turi undaymas. Barcha 600 seed bo'yicha Per-Trade Sharpe **57%**ida degeneratsiyalangan g'olibni tanlaydi (kam savdo qiladigan yoki out of sample yutqazadigan), aniqrog'i **56%**ida 5%dan past ekspozitsiyaga ega lotereyani. Odatiy degeneratsiyalangan tanlov seed 6ning 21ga teng Sharpe'idan ancha yumshoqroq: barcha 600 seed bo'yicha o'rtacha olganda, per-trade maqsadining g'olibida in-sample per-trade Sharpe 4.58 va o'rtacha ekspozitsiya 0.286 bor — hali ham ko'p vaqt tekis, faqat 99.6% tekis emas. Seed 6 mexanizmni dramatizatsiya qiladi; 56% sizni tashvishlantirishi kerak bo'lgan qism. Yarmidan ko'proq holatda, bu kundalik metrika sizga lotereya chiptasini berib, uni strategiya deb ataydi.
3-parda — Statistik haqiqat: oltita maqsad, 600 seed

Bitta seed hech narsani isbotlamaydi; u faqat ko'rsatadi. Maqsadni o'lchash uchun biz uning o'rtacha nimani tanlashini, ko'plab mustaqil bozorlar bo'yicha so'rashimiz va o'sha tanlovni qidiruv hech qachon ko'rmagan ma'lumotlarda baholashimiz kerak. Shunday qilib: 600 seed, har biri bozorning mustaqil tortilishi; har birida, har bir maqsad ostida 80-chegara qidiruvini bajaramiz; ekspozitsiyani, tanlangan narsaning in-sample va out-of-sample Sharpe'ini, o'sha tanlov degeneratsiyalangan yoki yo'qligini yozib olamiz.
| Maqsad | O'rtacha ekspozitsiya | In-sample Sharpe | Out-of-sample Sharpe | IS→OOS tushish (abs.) | Degeneratsiyalangan |
|---|---|---|---|---|---|
| Raw PnL | 0.859 | 1.76 | 1.61 | 0.15 | 0.0% |
| Full-Timeline Sharpe | 0.740 | 1.82 | 1.71 | 0.11 | 0.0% |
| Per-Trade Sharpe | 0.286 | 1.00 | 0.70 | 0.30 | 57% |
| Ekspozitsiya pol chegarasi () | 0.740 | 1.82 | 1.71 | 0.11 | 0.0% |
| conf_k shrinkage () | 0.523 | 1.54 | 1.31 | 0.23 | 20.7% |
| Mustahkam (chegara + conf_k) | 0.675 | 1.78 | 1.70 | 0.08 | 0.2% |
"IS→OOS tushish" ustuni — yillik Sharpe'ning in-sample'dan out-of-sample'gacha bo'lgan mutlaq pasayishi (masalan, 0.30 pasayish), foiz emas. Va "Ekspozitsiya pol chegarasi" qatori "Full-Timeline Sharpe" bilan bayt-ba-bayt bir xil ekaniga e'tibor bering: bu tasodif emas, 5-parda buning sababini tushuntiradi.
Uchta fakt darhol ko'zga tashlanadi, va har biri saboq.
Per-Trade Sharpe — degeneratsiyalanadigan yagona sodda maqsad. Uning o'rtacha ekspozitsiyasi 0.286 — u ko'p vaqt tekis turadigan strategiyalarni tanlaydi — va uning in-sample Sharpe'i 1.00 0.30ga tushib, out-of-sample 0.70ga yetadi, sohadagi eng yomoni. Belgiga e'tibor bering: uning in-sample soni (1.00) hatto ta'sirli ham emas, lekin har qanday individual seed'da u 21ga teng per-trade ko'rsatkichni xursandchilik bilan xabar qiladi. O'rtacha qiymat yo'qoladi, chunki omadli oynalar tasodifiy yo'nalishlarga ishora qiladi; out-of-sample'gacha qolgan narsa faqat 0.70, va individual tanlovlarning 57%i to'liq yaroqsiz.
Ekspozitsiyani hisobga oladigan maqsadlar tabiiy ravishda xavfsiz. Raw PnL va Full-Timeline Sharpe hech qachon degeneratsiyalanmaydi (0.0%). Sabab strukturaviy: ikkalasi ham butun vaqt o'qi bo'yicha o'lchanadi, shuning uchun vaqtning 99.6%ida tekis turadigan strategiya ular ostida deyarli hech narsa topmaydi. To'liq vaqt o'qi metrikasini kamdan-kam savdo qilish orqali aldab bo'lmaydi — tekis turish to'g'ridan-to'g'ri va avtomatik ravishda jazolanadi, chunki tekis barlar maxrajda turadi. Bu maqolaning eng muhim g'oyasi, va biz 6-pardada unga qaytamiz.
Raw PnL xavfsiz, lekin optimal emas — u ortiqcha ekspozitsiyalaydi. Diqqat bilan qarang: Raw PnL'ning o'rtacha ekspozitsiyasi 0.859, barchasining ichida eng yuqorisi, va uning out-of-sample Sharpe'i (1.61) full-timeline Sharpe'dan (1.71) va haqiqiy optimumdan (1.77) bir daraja past. PnL bozorda bo'lishni mukofotlaydi, shuning uchun qidiruv ni juda yuqori suradi (seed 6da, raw PnL optimal 1.04 o'rniga tanlaydi), bu hech qanday edge'ga ega bo'lmagan, faqat shovqin qo'shadigan diapazondan tashqari barlarni tortadi. U portlamaydi — lekin per-trade tuzog'iga qarama-qarshi yo'nalishda haqiqiy optimumdan oshib ketadi. Boshqa maqsad, boshqa noto'g'rilik, bir xil saboq: metrika strategiyani tanladi.
Biz hali muhokama qilmagan ikkita qator — ekspozitsiya pol chegarasi va conf_k — ta'mirlash hisoblanadi. Bu keyingi parda.
4-parda — Nima uchun sakkizta bitimga hech qachon ishonib bo'lmaydi

Tuzoqni ta'mirlashdan oldin, sakkizta bitim nima uchun hech narsani anglatmaydigan 21ga teng Sharpe ishlab chiqarishini aniq tushunish muhim — chunki yechim to'g'ridan-to'g'ri shu sababdan kelib chiqadi.
Sharpe koeffitsienti — baho, va baholarning xato chegaralari bor. Endryu Loning 2002-yilgi natijasi kuzatuvdan baholangan Sharpe koeffitsientining standart xatosini eng saxiy mumkin bo'lgan taxmin ostida beradi (IID gauss daromadlari):
Xato faqat bo'yicha kamayadi. Buni tuzoqqa qo'llaymiz. Seed 6dagi per-trade Sharpe yillik , bu kuzatuv boshiga , bar bo'yicha hisoblangan. Standart xato
(Lo formulasidan chiqarilgan). Nuqta bahosi — ; uning bir-sigma xato chegarasi taxminan — buni illyustrativ tartib sifatida o'qing, kalibrlangan ishonch oralig'i sifatida emas, chunki formula bizning yog'li dumli shovqinimiz buzadigan IID gauss daromadlarini taxmin qiladi. Shunga qaramay, xabar aniq: "21ga teng Sharpe" — deyarli hech qanday ma'lumot olib yurmaydigan shu qadar keng taqsimotdan olingan son — va bu saxiy hisob-kitob, chunki Mertens kengaytmasi yog'li dumlar va qiyshiqlik standart xatoni yanada shishirishini ko'rsatadi. Kamdan-kam bitimli bektestning Sharpe'i uning nuqta qiymatidan barcha yo'nalishda bir vaqtda ishonchsizroq: juda kam kuzatuv, va noto'g'ri taqsimot.
Bu aynan Minimum Track Record Length rasmiylashtirgan narsa (Bailey & López de Prado, 2012). U savolni teskari qiladi — ishonch bilan shu o'lchamdagi Sharpe'ga ishonish uchun menga qancha kuzatuv kerak? —
"kam bitimli bektestlarga kamroq ishoning" degan g'oyani bitimlarning aniq, tekshiriladigan soniga aylantiradi. Maqsad loyihalash uchun chuqur nuqta shu: yaxshi maqsad ichkaridan minimal track record'ni talab qilishi kerak, insonga g'olib sakkizta kuzatuvda turganini keyin payqashiga ruxsat bermasdan. Per-Trade Sharpe aksincha qiladi — u kuzatuv sonini minimumga surish orqali maksimallashadi. Optimumi "imkon qadar kam bitim"da bo'lgan har qanday maqsad, qurilishi bo'yicha, o'zining eng ishonchsiz bahosini izlaydigan maqsaddir.
Tuzoqda ikkita muvaffaqiyatsizlik birlashadi, ikkalasini ham nomlash bizga uni qanday tuzatishni aytadi. Birinchidan, kichik namuna shovqini: sakkizta kuzatuv hech qanday nisbatni mahkamlay olmaydi. Ikkinchidan, tanlov: o'sha sakkizta bar bizga berilmagan — qidiruv ularga tushgan chegarani tanladi, qisman ular omadli bo'lgani uchun. Qidiruv — maksimallashtiruvchi; u har doim shovqin tasodifan signalga o'xshab ko'rinadigan makon burchagini topadi. Buni yaxshiroq nuqta bahosi bilan chetlab o'tib bo'lmaydi. "Eng yaxshi" degan narsaning ma'nosini o'zgartirish kerak, omadli burchak maksimum bo'lmasligi uchun.
5-parda — Ta'mirlash: ekspozitsiya pol chegarasi va bitimlar soniga asoslangan shrinkage

Bizda ikkita nomlangan kasallik bor — juda kamdan-kam savdo qiladi va juda kam kuzatuvda turadi — shuning uchun biz ikkita davo yozamiz, har birini bittasiga qaratib.
1-davo: ekspozitsiya pol chegarasi. Eng sodda mumkin bo'lgan yechim. Bozorda kamida vaqt bo'lmagan har qanday strategiyani to'g'ridan-to'g'ri rad eting — agar u kamdan-kam savdo qilsa, uning bali bo'ladi va qidiruv uni tanlay olmaydi. Lekin nima chegaralanishida halol nuance bor, va bu butun ushbu maqolaning jim saboqi. Mustaqil maqsad sifatida biz Full-Timeline Sharpe'ni chegaraladik, va bu bozorda bu mutlaqo hech narsani o'zgartirmaydi: Full-Timeline Sharpe'ning o'z g'olibi allaqachon ~74% ekspozitsiyada, shuning uchun 20% chegara hech qachon ishlamaydi. Aynan shuning uchun yuqoridagi jadvallarda "ekspozitsiya pol chegarasi" va "Full-Timeline Sharpe" qatorlari bayt-ba-bayt bir xil — allaqachon xavfsiz metrikaga chegara o'rnatish shunchaki to'liq Sharpe'ni qayta chiqaradi. Chegara faqat boshqacha burchakka yugurib ketadigan metrikani himoya qilganda ko'rinadigan ish qiladi: per-trade metrikasi, quyidagi mustahkam maqsaddagidek. Boshqacha aytganda, "ekspozitsiyani talab qilish" va "butun vaqt o'qi bo'yicha o'lchash" bu ma'lumotlarda bitta aralashuvning ikki nomi.
2-davo: bitimlar soniga asoslangan shrinkage — "conf_k". Per-trade metrikasi bilan qolgan va qattiq kesish o'rniga yumshoq tuzatish xohlagan hollar uchun: Sharpe'ni u qancha bitimga tayanishiga qarab doimiy ravishda chegirmalang. ga ko'paytiring, bu yerda — bitimlar soni, esa doimiy "ishonch konstantasi" — qidiruvdan oldin tanlangan bitimga teng prior kuchi:
bo'lganda, ball, xom Sharpe qanchalik katta bo'lmasin, nolga qarab siqiladi; bo'lganda ball xom Sharpe'ga yaqinlashadi. Bu MinTRL va 4-pardaning standart xatosi bilan bir xil tuzatuvchi mantiq — kichik namuna bahosini uning namuna hajmining kamayuvchi funksiyasi sifatida nolga qarab qisqartirish — post-hoc filtr sifatida qo'llash o'rniga to'g'ridan-to'g'ri maqsadga joylashtirilgan. Eng yaqin nomlangan prezedent — van Tarpning System Quality Numberi (), u ham per-trade sifat metrikasini bitimlar soni ga qarab masshtablaydi — garchi funksional shakl farqli bo'lsa ham ( cheksiz o'sadi, esa 1da to'yinadi). Shakli bo'yicha bizniki bayes aniqlik bilan tortilgan / empirik-bayes uslubidagi shrinkage; bu ushbu muammo uchun bizning qurilishimiz, adabiyotdan olingan nomlangan baholovchi emas.
def obj_active_sharpe(m): # the trap: Sharpe on only the active bars
return m["sharpe_active"]
def _shrink(n, conf_k): # trade-count shrinkage n / (n + k)
return n / (n + conf_k) if (n + conf_k) > 0 else 0.0
def obj_confk(m, conf_k=40.0): # few trades -> little credit
return m["sharpe_active"] * _shrink(m["n_trades"], conf_k)
def obj_robust(m, e_min=0.20, conf_k=40.0): # both cures at once
if m["exposure"] < e_min: # floor: reject strategies that barely trade
return -np.inf
return m["sharpe_active"] * _shrink(m["n_trades"], conf_k)
Endi halol qism: qancha chegara, qancha shrinkage? Ikkalasini ham skanerlab, butun yuzani o'qing. Har bir katak 600ning uchdan bir qismi bo'lgan 200 seed bo'yicha o'rtacha out-of-sample Sharpe (ikki o'lchovli skanerlashni arzon saqlash uchun), yonida degeneratsiya darajasi bilan:
| \ conf_k | |||
|---|---|---|---|
| 0.00 | 0.66 (59.5%) | 1.26 (22.5%) | 1.47 (11.5%) |
| 0.05 | 1.43 (10.0%) | 1.53 (6.0%) | 1.60 (4.0%) |
| 0.10 | 1.64 (1.5%) | 1.65 (1.0%) | 1.67 (1.0%) |
| 0.20 | 1.71 (0.0%) | 1.71 (0.0%) | 1.71 (0.0%) |
| 0.35 | 1.73 (0.0%) | 1.73 (0.0%) | 1.73 (0.0%) |
O'rtacha yillik out-of-sample Sharpe, qavs ichida degeneratsiya darajasi. Yuqori chap katak — xom per-trade Sharpe — chegarasiz, shrinkage'siz: OOS 0.66, degeneratsiyalangan 59.5%. Bu 3-pardaning per-trade qatori bilan bir xil maqsad, u 0.70 / 57% o'qigan; kichik farq to'liq seed to'plamidan: bu skanerlash 200 seed ishlatadi, Monte-Karlo barcha 600ni ishlatgan. Bir xil metrika, kichikroq namuna.
Yuza uch o'qishda tiniq hikoya aytadi.
Har bir davo yolg'iz ishlaydi. Yuqori qator bo'ylab o'ngga siljing (shrinkage qo'shish, chegarasiz): OOS ga ko'tariladi va degeneratsiya ga tushadi. Chap ustunda pastga siljing (chegara qo'shish, shrinkage'siz): OOS ga ko'tariladi va degeneratsiya ga tushadi. Har qanday tugma, yolg'iz burilganda, out-of-sample samaradorlikni mustaqil ravishda ko'taradi va degeneratsiyani yo'q qiladi. Ekspozitsiya pol chegarasi bu yerda kuchliroq yolg'iz richag, chunki u tuzoqning belgilovchi xususiyatiga — nolga yaqin ekspozitsiyaga — to'g'ridan-to'g'ri hujum qiladi.
Birgalikda ular platoga yetadi — va plato aynan Full-Timeline Sharpe. da qator barcha shrinkage darajasida OOS 1.71da, 0% degeneratsiya bilan tekis; gacha itarilganda 1.73gacha ko'tariladi. Lekin o'sha 1.71 nima ekaniga diqqat bilan qarang: bu oddiy Full-Timeline Sharpe 3-pardada chegarasiz va hech qanday shrinkage'siz ko'rsatgan aynan o'sha ball. Eng yaxshi holatda, tuzatishlar Full-Timeline Sharpe'dan oshmaydi — ular uni qayta quradi. Va to'liq tuzatilgan mustahkam maqsad hatto to'liq yetib bormaydi: barcha 600 seed bo'yicha u OOS 1.70ga 0.17% qoldiq degeneratsiya bilan tushadi, to'liq Sharpe'ning 1.71 / 0%idan bir tuk past — u sodadaroq metrika tomonidan zaif ustunlik qilinadi. O'rtacha oraliq sozlama, va bilan, OOS 1.65ga 1% degeneratsiya bilan yetadi — per-trade metrikasi majburiy berilsa foydali, lekin uni afzal ko'rish uchun hech qachon sabab emas.
Aniq raqamlar masshtabga bog'liq — shakl natijadir. Bu bozorni to'liq tuzatuvchi aniq qiymatlar , shu ma'lumot yaratish jarayoniga moslashtirilgan; boshqa savdo chastotasi va dum qalinligiga ega boshqa bozorda plato boshqa joyda turadi. Umumlashadigan narsa koordinatalar emas, yuza: ikkala yo'nalishda ham monoton ko'tarilish, degeneratsiya nolga qarab yuritilgan, haqiqatdagi plato. Siz yuqoridagidek skanerlash orqali o'z koordinatalaringizni topasiz.
Ikkala davoni birga qo'ying — mustahkam maqsad, chegara 0.20 plyus conf_k 40 — va seed 6ga qaytamiz. Tuzoq , sakkizta bitim, 0.13ning full-timeline OOS Sharpe'ini toj kiydirgan edi. Mustahkam maqsad esa ni tanlaydi: bozor ekspozitsiyasi 0.66, 447 bitim, yillik out-of-sample Sharpe 1.77. O'sha haqiqiy optimum dan bitta panjara nuqtasiga past, shuning uchun u aynan markazga tegish o'rniga optimalga yaqin, yaxshi ekspozitsiyalangan chegarani tiklaydi — uning yagona seed'dagi out-of-sample Sharpe'i (1.77) tasodifan populyatsiya optimumi bilan mos keladi. Bir xil ma'lumotlar, bir xil qidiruv, bir xil 80 nomzod chegara. Faqat "eng yaxshi"ning ta'rifi o'zgardi, va bu g'olibni tekis sakkizta bitimli sarobdan haqiqiy, yaxshi ekspozitsiyalangan edge'ga surdi — bu, qiziqarlisi, shu seed'da oddiy Full-Timeline Sharpe tanlagan aynan o'sha chegara.
Skanerlash aniq ko'rsatadigan ogohlantirish: bu bozorda conf_k yolg'iz yetarli emas. Chegarasiz da, degeneratsiya seed'lar bo'yicha hali ham 22.5%da — va aynan seed 6da, conf_k yolg'iz ni tanlaydi, 35 bitim, out-of-sample Sharpe −0.06. O'ttiz beshta bitim shrinkage'dan g'alaba qozonish uchun yetarli qolgan ball bilan omon qoladi. Ekspozitsiya pol chegarasi o'sha oxirgi bo'shliqni yopadigan narsa, chunki u tuzoqning haqiqiy imzosiga — tekis turishga — to'g'ridan-to'g'ri nishon oladi, bitimlar sonini uning proksisi sifatida ishonish o'rniga.
6-parda — Chuqurroq saboq: butun vaqt o'qi bo'yicha o'lchash

Ta'mirlashdan bir qadam orqaga chekining va xavfsiz maqsadlarni tuzoqdan haqiqatan nima ajratganiga e'tibor bering. Bu murakkablik emas edi. Raw PnL va Full-Timeline Sharpe Per-Trade Sharpe'dan soddaroq, va ular hech qachon degeneratsiyalanmagan — 600 seed bo'yicha 0% — chegarasiz, shrinkage'siz, hech qanday sozlashsiz.
Bo'linish chizig'i bitta xususiyat: metrika qaysi oynani o'lchaydi? Per-Trade Sharpe faqat strategiya turishni tanlagan barlarni o'lchaydi — qidiruv xohlagancha qisqartira oladigan o'zi tanlagan oyna. Full-Timeline Sharpe va umumiy PnL butun vaqt o'qini, tekis barlar bilan birga o'lchaydi. Va siz to'liq vaqt o'qi metrikasini kamdan-kam savdo qilish orqali hech qachon kattalashtira olmaysiz, chunki tekis turgan har bir soat — hech narsa topmaydigan maxrajdagi soatdir. Ekspozitsiya pol chegarasi va conf_k, oxir-oqibat, per-trade metrikasini to'liq vaqt o'qi metrikalari bepul olgan ekspozitsiya ongi bilan tuzatish usullaridir — va skanerlash bizga o'sha tuzatishning shifti nima ekanini allaqachon aytgan: eng yaxshi holatda u Full-Timeline Sharpe bilan tenglashadi (OOS 1.70 ga qarshi 1.71), hech qachon undan oshmaydi. Agar siz oynani tanlashda erkin bo'lsangiz, butun vaqt o'qini tanlang va tuzatishni butunlay o'tkazib yuboring.
Shunday qilib loyihalash tamoyili, aniq ifodalangan:
Maqsadni kamdan-kam omadli bitimlar bilan aldab bo'lmaydigan qilib loyihalang. Sizda taxminiy afzallik tartibida uchta vosita bor:
- Butun vaqt o'qi bo'yicha o'lchang. Deyarli hech qachon chetga chiqmasligi kerak bo'lgan standart. Full-Timeline Sharpe va umumiy daromad qurilishi bo'yicha ekspozitsiya ongiga ega — faolsizlik avtomatik ravishda jazolanadi, chunki tekis barlar hisoblanadi. Agar o'zingizni "faqat biz faol bo'lgan barlarda" hisoblangan metrikani xabar qilayotganingizni sezsangiz, to'xtang va qidiruv o'sha barlarni tanlash erkinligi bilan nima qilishini so'rang.
- Ekspozitsiyani talab qiling. Agar sizga faoliyatga bog'liq metrikadan foydalanish kerak bo'lsa, ekspozitsiyani chegaralang, shunda qidiruv kamdan-kam savdo qiladigan strategiyani tanlay olmaydi. Bu ushbu aniq tuzoqqa qarshi eng kuchli yolg'iz richag.
- Bitimlar soniga qarab qisqartiring. Har qanday nisbatni ga chegirmalang, shunda bir necha kuzatuvda turgan Sharpe minglab kuzatuvda turadigan Sharpe'ning kreditining faqat bir qismini topadi. Bu Minimum Track Record Length'ning maqsad darajasidagi bajarilishi: kam kuzatuvdan olingan son ishonchsiz (4-parda), shuning uchun halol maqsad o'sha ishonchsizlikni insonga keyin payqashiga ishonish o'rniga oldindan bahoga kiritadi.
Bularning hech biri qidiruvni aqlliroq qilmaydi. Bu maqsadni halol qiladi, shunda qidiruv har doim qiladigan narsani aynan qilganda — maksimumni topganda — o'sha maksimum siz haqiqatan xohlaydigan strategiya bo'ladi.
Halollik eslatmalari
Uchta ogohlantirish, aniq ifodalangan, chunki nazorat qilinadigan tadqiqot o'z xulosalarini faqat chegaralarini nomlaganida munosib bo'ladi.
- Bozor sintetik, va atayin. Standart normal signal, bilan chegaralangan chiziqli edge, yog'li dumli Student-() shovqini — nazorat qilinadigan asosiy haqiqat uchun tanlangan, bozor realizmi uchun emas. Biz maqsad noto'g'ri strategiyani tanlashini faqat uni qaysi strategiya to'g'ri ekanini bilgan ma'lumotlarda ishga tushirish orqali isbotlay olamiz. Haqiqiy bozorlar statsionar emas, avtokorrelyatsiyalangan va rejim almashtiruvchi. Yog'li dumlar biz saqlagan realistik ingredient, lekin — tabiiy birinchi taxminga qarama-qarshi, va aynan shu maqolaning avvalgi loyihasiga qarama-qarshi — ular tuzoqni quvvatlantiruvchi narsa emas: gauss shovqinli nazorat (300 seed) bu yerdagi **57.0%**ga nisbatan 55.7% vaqtda degeneratsiyalanadi, out-of-sample Sharpe 0.71ga nisbatan 0.70 bilan. Tuzoq og'ir dumlar bilan yoki ularsiz omon qoladigan kichik namuna-plyus-tanlov artefaktidir. Yetkazib beriladigan mahsulot — diagnoz va ta'mirlash naqshi, strategiya yoki universal konstanta emas.
- Ta'mirlash qiymatlari masshtabga bog'liq. Tuzoqni to'liq yopadigan aniq chegara va shrinkage shu ma'lumot yaratish jarayoniga — uning savdo chastotasiga, dum qalinligiga, edge o'lchamiga — moslashtirilgan. Boshqa ma'lumotlarda plato siljiydi. O'tkaziladigan narsa — skanerlash yuzasining shakli (ikkala tugmada ham monoton ko'tarilish, degeneratsiya nolga, haqiqatdagi plato) va o'z koordinatalaringizni topish usuli: ikkalasini ham skanerlab, yuzani o'qing, raqamlarni ko'chirmang.
- conf_k bizning qurilishimiz, nomlangan baholovchi emas. Bitimlar soniga asoslangan shrinkage — biz ushbu muammo uchun qurgan bayes aniqlik bilan tortilgan / empirik-bayes uslubidagi qurilma; uning asoslanishi tekshirilgan Lo/Mertens standart xato natijasiga va Bailey–López de Prado MinTRL'iga tayanadi, va uning eng yaqin nomlangan qarindoshi van Tarpning System Quality Number'i (, boshqa funksional shakl), lekin biz ning o'zi adabiyotda bir nom ostida paydo bo'ladi deb da'vo qilmaymiz. Uning hamrohi davolari — ekspozitsiya pol chegarasi, to'liq vaqt o'qida o'lchash — aniq ifodalangan standart amaliyot. Va bu yerda qaysi maqsadlar allaqachon xavfsiz bo'lganiga e'tibor bering: Raw PnL va Full-Timeline Sharpe hech qachon ta'mirlashga muhtoj bo'lmagan, chunki ular boshidanoq ekspozitsiya ongiga ega — shu qadarki, Full-Timeline Sharpe'ni chegaralash shunchaki Full-Timeline Sharpe'ga qaytadi, uning g'olibi allaqachon har qanday oqilona chegaradan oshadi. Tuzoq aniq Per-Trade / faol Sharpe — va hatto to'liq tuzatilgan per-trade maqsad ham faqat Full-Timeline Sharpe bilan tenglashadi (OOS 1.70 ga qarshi 1.71), hech qachon undan oshmaydi. Asosiy saboq ta'mirlash emas; bu boshidanoq butun vaqt o'qi bo'yicha o'lchash.
Asosiy xulosalar
- Maqsad — qaror, formallik emas. Qidiruv "yaxshi strategiya"ni topmaydi — u siz bergan har qanday skalyarning maksimallashtiruvchisini topadi, va turli skalyarlar bir xil ma'lumotlarda mutlaqo boshqa strategiyalarni tanlaydi. Maqsadni tanlash — strategiyani tanlash demakdir; oqim bo'ylab qolgan hamma narsa faqat hisob-kitob. Bu — Goodhart qonuni: sizning metrikangiz qidiruvning maqsadiga aylangan zahoti, qidiruv uning va siz nazarda tutgan narsa o'rtasidagi har bir bo'shliqni ishlatadi.
- Per-Trade Sharpe — tuzoq. Faqat strategiya savdo qiladigan barlarda o'lchangan, u imkon qadar kamdan-kam savdo qilish orqali maksimallashadi — kuzatuv qancha kam bo'lsa, bir necha omadli harakatning nisbatni shishirishi shuncha oson (gauss nazorati yog'li dumlar kerak emasligini tasdiqlaydi; bu kichik namuna-plyus-tanlov effekti). 600 seed bo'yicha u ularning **56%**ida 5%dan past ekspozitsiyaga ega lotereyani tanlaydi va **57%**da degeneratsiyalanadi; odatiy degeneratsiyalangan tanlov o'rtacha 4.58 in-sample per-trade Sharpe'ni beradi. Atayin tanlangan yorqin seed'da, u sakkizta bitimli, 0.4% ekspozitsiyaga ega strategiyani 21.09 in-sample per-trade Sharpe bilan toj kiydirgan, u 0.13 full-timeline out-of-sample Sharpe'ga qulaydi. Sakkizta kuzatuvda qurilgan nisbatning taxminan ±7.7 yillik standart xatosi bor (4-parda) — u hech qachon ma'lumot bo'lmagan.
- Ekspozitsiyani hisobga oladigan maqsadlar tabiiy ravishda xavfsiz. Raw PnL va Full-Timeline Sharpe hech qachon degeneratsiyalanmagan (0%), chunki ular butun vaqt o'qini o'lchaydi va faolsizlik avtomatik ravishda jazolanadi. To'liq vaqt o'qi metrikasini kamdan-kam savdo qilish orqali aldab bo'lmaydi. Raw PnL'ning yagona kamchiligi qarama-qarshi noto'g'rilik — u ortiqcha ekspozitsiyalaydi (o'rtacha ekspozitsiya 0.859, OOS 1.61 haqiqiy 1.77ga nisbatan), ni bozorda ko'proq bo'lish uchun optimumdan oshirib yuboradi.
- Ta'mirlashlar ishlaydi — lekin ular sizni faqat Full-Timeline Sharpe'ga qaytaradi. Ekspozitsiya pol chegarasi va bitimlar soniga asoslangan (conf_k) shrinkage har biri mustaqil ravishda out-of-sample Sharpe'ni ko'taradi va degeneratsiyani nolga qarab yuritadi; birgalikda ular platoga yetadi. Lekin o'sha plato Full-Timeline Sharpe hisoblanadi: degeneratsiya da **59.5%**dan da **0%**ga tushadi va OOS Sharpe 0.66dan 1.71ga ko'tariladi — oddiy to'liq Sharpe yordamsiz ko'rsatgan aynan o'sha son, va to'liq tuzatilgan mustahkam maqsad aslida undan bir tuk past tushadi (OOS 1.70, 0.17% degeneratsiya: zaif ustunlik qilingan). Seed 6da mustahkam maqsad optimalga yaqin, yaxshi ekspozitsiyalangan chegarani tiklaydi (, haqiqiy dan bitta panjara nuqtasiga past; 447 bitim; OOS Sharpe 1.77). conf_k'ni per-trade metrikasi majburiy berilgan holat uchun zaxira sifatida ko'ring, butun vaqt o'qini o'lchashdan yuqori yangilanish sifatida emas. Aniq koordinatalar masshtabga bog'liq; yuzaning shakli o'tkaziladigan natijadir.
- Maqsadni kamdan-kam omadli bitimlar bilan aldab bo'lmaydigan qilib loyihalang. Afzallik tartibida: butun vaqt o'qi bo'yicha o'lchash (standart), ekspozitsiyani talab qilish (eng kuchli yolg'iz richag), bitimlar soniga qarab qisqartirish (maqsad darajasidagi Minimum Track Record Length). Bularning hech biri qidiruvni aqlliroq qilmaydi — bu maqsadni halol qiladi, shunda qidiruv muqarrar ravishda topadigan maksimum siz haqiqatan savdo qiladigan strategiya bo'ladi.
Parametr qidiruvi — itoatkor jin. U siz ifoda etgan aniq istakni bajaradi, siz nazarda tutgan narsani emas — va "shu metrikani maksimallashtir" — o'sha istak. Uni per-trade Sharpe sifatida ifodalang, u sakkizta omadli bitimni chaqirib, ularni boylik deb ataydi. Uni tekis turish jazolanadigan va bir necha bitim faqat bir necha kredit topadigan qilib ifodalang, va o'sha jin, bir xil ma'lumotlarda, sizga haqiqiy edge'ni beradi. Siz joylashtirgan strategiya maqsadni terganingiz zahoti tanlangan edi. Uni atayin tanlang.
To'liq eksperiment — sintetik bozor, oltita maqsad, 600-seed Monte-Karlo, va ta'mirlash-skanerlash yuzasi, har bir son deterministik skriptdan qayta yaratilishi mumkin — objective-design.marketmaker.ccdagi hamroh maqolada, kod va ma'lumotlar github.com/suenot/objective-design-degeneracy manzilida.
Bu bizning boshqa tadqiqotlarimiz turli burchaklardan olib boradigan bir xil urushning bir jabhasidir. Deflated Sharpe Ratio ko'p marta sinovdan keyin qidiruvning g'olibiga narx qo'yadi — bu maqola maqsad birinchi navbatda to'g'ri strategiyani tanladimi deb so'rasa, DSR tanlangan strategiya faqat omaddan ustun keladimi deb so'raydi. Kelayotgan probability of backtest overfitting tadqiqoti o'sha tanlov noto'g'riligiga qayta namunalash tomonidan hujum qiladi, g'olib o'rniga protsedurani baholaydi. Va look-ahead bias taxonomy yolg'on Sharpe yaratuvchi yana bir katta manbani katalogga kiritadi — kelajakdan oqib chiqish — u mutlaqo boshqa mexanizm orqali aynan o'sha alomatni (jonli paytida o'ladigan ajoyib bektest) yaratadi. Maqsad loyihalash, deflyatsiya, ortiqcha moslashish ehtimoli, look-ahead: bitta fanning to'rt nomi — o'z bektestingizdan aldanmaslik.
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.