Дефляцияланган Шарп коэффициенти: Backtest'иңиздеги 'жеңүүчүлөрдүн' канчасы Multiple Testing'ден аман калат?
"Backtests Without Illusions" сериясынын бир бөлүгү.
📄 Бул макала изилдөө макаласына айланды. Төмөндөгү ар бир сан бир детерминисттик скрипттен алынган — ал көзөмөлдөнгөн чындыкты түзөт: таза-шум издөөлөр, орнотулган-артыкчылык издөөлөр жана чыныгы корреляцияланган параметр торчосу — андан кийин Дефляцияланган Шарп коэффициентин, Harvey-Liu multiple-testing "чач кыркуусун" жана White's Reality Check / Hansen's SPA'ды ага карата иштетип, ар бир методдун жалган-ачылыш ставкасын жана аныктоо күчүн түз өлчөйт. Макаланы онлайн окуңуз (интерактивдүү версия + PDF) deflated-sharpe.marketmaker.cc баракчасында, код жана дайындар github.com/suenot/deflated-sharpe-search дарегинде.
Сиз параметрлерди издөө процессин иштетесиз. Он алты тез узундук, кырк жай узундук, moving-average crossover'дун 640 комбинациясы. Тор аяктайт жана бир клетка жаркырайт: жылдык Шарп 3.9, бир жолку тесттин p-мааниси . Он эки нөл маанилүүлүк. Сиз бир нерсе таптыңыз.
Же болбосо сиз эч нерсе тапкан жоксуз, издөө муну сиз үчүн тапты.
Параметрлерди издөө — бул тест эмес. Бул N аракеттин эң ийгиликтүүсүн табуучу машина, жана канчалык көп аракет бересиз, анын жеңүүчүсү ошончолук ийгиликтүү көрүнөт — анын алдында чыныгы артыкчылык бар-жогуна карабастан. Best-of-N Шарп тандоо аркылуу шишип чоңоюп кетет — так эле миң кокус адамдын эң узуну узун болгонсуп: узундук чыныгы болгондуктан эмес, сиз издегениңиз үчүн. Жеңүүчүнүн жанына басылган бир жолку тесттин статистикасы — анын p-мааниси, t-статистикасы, "бул маанилүүбү?" деген суроосу — бир алдын ала катталган гипотеза үчүн иштелип чыккан. Аларга издөөнүн аман калгандарын бересиз да, алар ар бир жолу ишенимдүү түрдө жалганды айтышат.
Бул макала алардын канчалык жаман жалган айтарын так өлчөйт, андан кийин муну оңдогон үч куралды өлчөйт. Баары көзөмөлдөнгөн чындыкка байланыштуу: биз жообун билген кайтарымдарды генерациялайбыз — кээде артыкчылыгы нөл болгон таза шум, кээде белгилүү күчкө ээ орнотулган артыкчылык — ошондуктан "метод туура жооп бердиби?" деген суроо баа берүү эмес, факт болуп калат. Мына негизги жыйынтык алдын ала. Чыныгы жооп ар дайым "жок, ачылыш жок" болгон белгилүү-нөлдүк издөөлөрдө, ар бир тест канчалык жолу жалган үн чыгарат:
| Тест | Белгилүү-нөлдүк издөөлөрдөгү жалган-ачылыш ставкасы | Жыйынтык |
|---|---|---|
| Элементардык "эң жакшы Шарп маанилүүбү?" | 1.000 | ар бир жолу ачылышты белгилейт |
| Дефляцияланган Шарп коэффициенти (DSR ≥ 0.95) | 0.001 | көзөмөлдөнгөн |
| Harvey-Liu чач кыркуусу — Bonferroni | 0.057 | ~көзөмөлдөнгөн |
| Harvey-Liu чач кыркуусу — Holm | 0.057 | ~көзөмөлдөнгөн |
| Harvey-Liu чач кыркуусу — BHY | 0.007 | көзөмөлдөнгөн |
| White's Reality Check (bootstrap) | 0.022 | көзөмөлдөнгөн |
Издөө башына 1000 стратегия, ар бирине 1000 байкоо, 2000 көз карандысыз белгилүү-нөлдүк издөө, чыныгы Шарп бардык жерде = 0. Синтетикалык iid Normal кайтарымдар, seed 0, α = 0.05, жылына 252 период. Элементардык тесттин жалган-ачылыш ставкасы жогору эмес — ал так бирге барабар.
Биринчи саптарды ачыта окуп чыгыңыз. Таза шумда 5% учурда иштеши керек болгон тест 100% учурда иштейт — себеби сиз ага таза шумду көрсөтпөй жатасыз, сиз ага таза шумдун миң тартылышынын максимумун көрсөтүп жатасыз, ал эми миң монета ыргытуучунун максимуму ар дайым генийдей көрүнөт. Калган ар бир сап муну билип, аны оңдогон метод. Бул макаланын бүтүндөй маңызы: эмне үчүн биринчи сап 1.000, эмне үчүн калгандары андай эмес жана жакшы методдорго дагы адилеттикти сактоо үчүн экинчи оңдоо керек болгон бир жер (акыркы бөлүм).
1-акт — Тузак: издөө эч нерседен Шарп өндүрөт

Эң таза тузактан баштайлы. Кайтарымдары көз карандысыз стандарттык-Normal шум болгон стратегияны генерациялаңыз — эч кандай дрейф, эч кандай чеберчилик, бардыгы үчүн чыныгы Шарп так нөл. Ар биринде байкоо бар. Эми ар бир параметр издөө эмне кыларын жасаңыз: эң жакшысын сактап калыңыз.
Best-of-1000 байкоо башына Шарп орточо эсеп менен 0.1027ге жетет, бул жылдык 1.63ке айланат (чыгарылган: ). Бул жумшак сан эмес. Жылдык Шарп 1.63 — бул стратегияны каржылатып, жазып, бөлүштүрүүчү жыйынтык түрү. Ал дрейфи нөлгө коюлган кокус сан генераторунан келип чыккан.
Эми жеңүүчүнү элементардык маанилүүлүк тестине берели — ар бир backtest китепканасы бекер басып чыгарган тест. Анын Шарпын t-статистикага айландырыңыз (), бир тараптуу p-маанисин алыңыз, эгер болсо ачылыш деп атаңыз:
Бул шум жеңүүчүлөрүнүн орточо бир жолку тесттин p-мааниси 0.000686 — эч кандай артыкчылыгы жок стратегиядан "маанилүүлүктүн" үч нөлү. Жана 2000 көз карандысыз белгилүү-нөлдүк издөөнүн баарында элементардык тест ачылышты жарыялайт: жалган-ачылыш ставкасы 1.000. "Шишик" эмес. "Бир аз жогору" эмес. Курулушу боюнча бир белгилүү-нөлдүк гипотезада эң көп дегенде 5% учурда туура болгон тест издөөнүн жеңүүчүсүндө 100% учурда туура эмес.
Бир жолу аталгандан кийин механизм так эле байкалат. Элементардык тест "бул Шарп нөлдүк гипотезанын алдында кокустан пайда болушу мүмкүнбү?" деп сурайт — маалыматтарды карабай тандаган стратегия үчүн адилет суроо. Бирок сиз бул стратегияны миңдин эң жогорку Шарпы болгондуктан тандадыңыз. Сиз максимумга шарттандырылгансыз, максимумдун селекциялоо бөлүштүрүлүшү бир кайтарымдын селекциялоо бөлүштүрүлүшүнөн такыр башка. Бул биздин look-ahead bias классификациясы башка тараптан диагноз койгон ошол эле оору — анда бир бардын агып чыгуусу шумдан Шарп 15ти өндүргөн; бул жерде эч кандай агуу жок, таза селекциялоо аркылуу издөө шумдан Шарп 1.63түн өндүрөт. Ар башка механизм, бирдей белги: эч нерсени билдирбеген сонун көрүнгөн Шарп.
1.63 саны маанилүү, ошондуктан аны эсиңизде сактаңыз. Бул бул издөө үчүн шум чеги: артыкчылыгы жок 1000 стратегиянын эң ийгиликтүүсүнүн жарыялашы күтүлгөн Шарп. Издөөнүн жеңүүчүсүнүн ар кандай адилеттүү тести аны нөлгө эмес, ушуга — миң жолу карап чыкканда жалгыз ийгилик берген нерсеге салыштырышы керек.
2-акт — Куралдар: издөөнү баалоонун үч жолу

Көз карандысыз пайда болгон үч изилдөө программасы бирдей чечимге келишет: жеңүүчүнү нөлгө салыштырууну токтотуп, аны ушул өлчөмдөгү издөө ийгилик менен эмне өндүрөрүнө салыштыра баштаңыз. Алар бул салыштырууну кантип түзгөндөрү менен айырмаланышат.
PSR жана Дефляцияланган Шарп коэффициенти (Bailey & López de Prado, 2012 / 2014)
Probabilistic Sharpe Ratio (Ыктымалдуулуктук Шарп коэффициенти) "Шарп оң белекиби?" дегенден да курч суроону берет. Ал: тандоонун узундугун жана кайтарымдардын формасын (кыйшаюу, толук куйруктар) эске алганда, чыныгы Шарп бенчмарктан жогору болушунун ыктымалдуулугу канча деп сурайт.
Мында — стандарттык-Normal CDF, — кыйшаюу, а — эксцесстен ашпаган конвенциядагы куртошность (Normal ⇒ ; бул жерге ашыкча куртошностту 3тү кошпой алмаштырсаңыз, дефляция туура эмес чыгат). коюңуз да PSR жөн эле чектелген-тандоо маанилүүлүк тести болуп калат. Сыйкыр ди туура тандоодо жатат.
Дефляцияланган Шарп коэффициенти — бул PSR нөл болбогон, тескерисинче бүтүндөй издөөнүн күтүлгөн максималдуу Шарпы болгон бенчмаркта бааланган.
мында — бардык N сыноо Шарптарынын дисперсиясы (издөөнүн өзү өндүргөн чачыроо), — Эйлер-Маскерони константасы, ал эми эки тескери-Normal мүчө — стандарттык-Normal тартылыштын күтүлгөн максимумунун 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 — бул ыктымалдуулук. Биз болгондо ачылыш деп жарыялайбыз: жеңүүчүнүн чыныгы Шарпы 95% ишенимдүүлүк менен ийгилик боюнча күтүлгөн эң жакшыны жеңет. ге камтылган жүктөлгөн болжолду белгилеп коюңуз: сыноо көз карандысыз деп каралат. 5-акт толугу менен алар мындай эмес болгондо эмне болорун сүрөттөйт.
Harvey-Liu чач кыркуусу (2015)
Harvey жана Liu бул эле көйгөйгө multiple-testing p-маанисин оңдоо аркылуу чабуул коюшат — "мен M тест өткөрдүм, мени өзүмдү алдоого жол бербе" деген классикалык машина. бир жолку-тесттик p-маанилерди иретте коюп, аларды шишиктирет:
Bonferroni — олдоксон курал (ар бир p-маанини ге көбөйтүп каалаган жалган позитивдин ыктымалдуулугун көзөмөлдөйт); Holm — анын бир текши-күчтүү басып-тушүрүү тыбызагы. Үчүнчүсү, Benjamini-Yekutieli (BHY), жалган-ачылыш ставкасын — четке кагууларыңыздын туура эмес болгон күтүлгөн бөлүгүн — көзөмөлдөйт жана, эң маанилүүсү, буну тесттердин ортосундагы эркин көз карандылыкта гармоникалык нормалдаштыруучуну сурактарда колдонуу менен ишке ашырат:
Бул BHY'нин 1000 сыноонуздун көз карандысыз экенин божомолдобогону үчүн төлөгөн баасы — ал FDR босогосун сыяктуу өскөн көбөйткүчкө шишиктирет. "Чач кыркуу" өзү жыйынтык метрика: оңдолгон p-маанисин Шарпка кайра айландырып, баштапкы Шарптын канчасын кыркышыңыз керек экенин билдирет. 100% чач кыркуу жеңүүчү толугу менен multiple testing менен түшүндүрүлөрүн билдирет; 15% — ал негизинен аман калаарын билдирет.
White's Reality Check жана Hansen's SPA (2000 / 2005)
Үчүнчү курал эч кандай бөлүштүрүү болжолун жасабайт. White'дин Reality Check ар бир эрежесинин чыныгы кайтарымдарын алат, эрежелердин максимумунун статистикасын түзөт жана анын нөлдүк бөлүштүрүлүшүн түз bootstrap менен эсептейт:
мында — эрежесинин бенчмаркка карата орточо ишенимдүүлүгү. Ал кайтарымдарды стационардык bootstrap (Politis-Romano — сериялык корреляция кайра тандоодо сакталышы үчүн кокус узундуктагы блоктор) менен кайра тандайт, ар бир тартылышты нөлдүк гипотезаны курулуш боюнча аткарыш үчүн кайра борборлоштурат, максимумду ар бир тартылышта кайра эсептейт жана p-маанисин байкалган максимумдан ашкан bootstrap максимумдарынын бөлүгү катары билдирет. Hansen'дин SPA RC'ди эки жол менен курчутат: студентификация (ар бир эрежени өз стандарттык катасына бөлүп, бир жапайы жогорку-дисперсиялуу эреже максимумду өз колуна ала албашы үчүн) жана нөлдүк гипотезанын дал келгендик, тандоого көз каранды кайра борборлоштуруусу. Биздин ишке ашыруу студентификацияны кошот, бирок толук дал келгендик-кайра-борборлоштуруу кадамын кошпойт — ошондуктан бул макалада SPA-түрдөгү p-маани деп аталган жерде, аны толук Hansen SPA катары эмес, студентификацияланган Reality Check катары окуңуз. DSR "жеңүүчү бул издөөнүн ичинде өзгөчөбү?" деп сураса, Reality Check "эң жакшы эреже канча эреже сынагымды адилет эсепке алгандан кийин акчадан жогорубу?" деп сурайт — жана ал корреляцияланган эрежелерди bootstrap аркылуу табигый түрдө иштетет, сыноолорду эч качан санабай. Бул айырманы эсиңизде сактаңыз; акыркы бөлүм так ушуга байланыштуу.
3-акт — Калибрлөө — бул толук далил

Эч нерсени белгилебеген метод дагы жалган-ачылыш ставкасы нөл болмок — жана пайдасыз болмок. Ошондуктан бул куралдардын жалгыз маанилүү тести эки тараптуу: белгилүү-нөлдүк маалыматтарда алар жалган ачылыштарды же андан төмөн деңгээлде көзөмөлдөшү керек, ал эми белгилүү-артыкчылыктуу маалыматтарда (кийинки бөлүм) алар дагы деле иштеши керек. Бул бөлүм биринчи жарымы.
2000 көз карандысыз издөөнү, ар бирин артыкчылыгы нөл болгон 1000 стратегияда, иштетип, ар бир метод канчалык жолу ачылыш деп жарыялаганын эсептеңиз. Ал сан, 2000ге бөлүнгөндө, жалган-ачылыш ставкасы — чындык артыкчылык жок болгондуктан, ар бир ачылыш жалган:
| Тест | Жалган-ачылыш ставкасы (α = 0.05) |
|---|---|
| Элементардык маанилүүлүк | 1.000 |
| Дефляцияланган Шарп коэффициенти | 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 чач кыркуусу андан бир аз жогору, DSR/BHY/RC андан төмөн — элементардык тест 100до тургандыктан. (Bonferroni жана Holm бул жерде бирдей 0.057ди чыгарат, бул кокустук эмес: жалгыз эң жакшы стратегия үчүн Holm'дун биринчи кадамы , курулушу боюнча Bonferroni'ге бирдей, ошондуктан бул эки эмес, бир ырастоо.) Бирок бүтүндөй изилдөөнүн эң терең саны бул таблицада эмес — ал DSR тилкесин өндүргөн дефляцияланган бенчмарк. Белгилүү-нөлдүк издөөлөр боюнча орточо алганда, байкоо башына 0.1030гa барабар, ал жылдык 1.63кe айланат (чыгарылган: ) — орточо шум жеңүүчүсү жарыялаган ошол эле 1.63 (1.63). Бул кокустук эмес; бул бүтүндөй идеянын иштеп жатканын билдирет:
Дефляцияланган бар шум чегинде так турат. DSR издөө жеңүүчүсүнөн нөлдү жеңүүнү сурабайт. Ал жеңүүчүдөн ушул өлчөмдөгү издөө ийгилик менен өндүргөн эң жакшы упайды жеңүүнү сурайт — бул жерде жылдык 1.63. Шум чегине жетишкен эле жеңүүчү DSR ≈ 0.5 (монета ыргытуу) деп бааланат, ошондуктан орточо белгилүү-нөлдүк DSR 0.495, эч нерсе эмес. Ачылыш болуш үчүн, жеңүүчү 1.63түн андан ары ашышы керек — PSR'ди 0.95тен ашыруу үчүн жетиштүү.
Бул бүтүндөй машыгууну кайра карайт. Элементардык тест нөлдөн аралыкты өлчөйт; ар бир издөө бул планканы жеңил ашат, ошондуктан ал пайдасыз. DSR шум чегинен аралыкты өлчөйт, жана бул планканы ашуу чын эле кыйын — ошондой болушу керек. Harvey-Liu чач кыркуусу жана Reality Check ошол эле көзөмөлгө ар башка жолдор менен жетишет ( BHY үчүн шишиктирүү, RC үчүн bootstrap максимум-бөлүштүрүлүшү), жана ошол эле кошунага түшөт: 0.001дeн 0.057гe чейин, гa же жакын жерде. Bonferroni/Holm'дун 0.057си 5% сызыгынан бир чач жогору, бирок эле бир аз гана: 2000 Monte-Carlo издөө менен 0.05гe жакын FDR баасынын стандарттык катасы болжол менен 0.005, ошондуктан 0.057 дан болжол менен 1.4 стандарттык ката жогору турат — бул Monte-Carlo шуму, бузулган кепилдик эмес. "FWER'ди көзөмөлдөйт" деген дагы асимптотикалык убада, гo так дал келген эмес.
4-акт — Күч: ал чыныгы артыкчылыктарды сактайбы?

Жалган ачылыштарды көзөмөлдөө тесттин жарымы гана — баарын четке каккан коркоо метод так 0.000 упай алат жана баркысыз болот. Экинчи жарым: чыныгы артыкчылык бар болгондо, DSR аны табабы?
Аны орнотуп көрөлү. 1000 стратегиядан турган талаада, 25төрдү чыныгы белгилүү күчкө ээ артыкчылыкка ээ кылып, калгандарын шум катары калтырыңыз, андан кийин издөөнү иштетип, DSR жеңүүчүнү белгилейби деп сураңыз. Орнотулган артыкчылыкты алсыздан күчтүүгө чейин жылдырыңыз, аныктоо күчү таза S-ийрилигин сызат (жалган-позитивдик ставка бүт убакытта ~0 деңгээлинде турат):
| Орнотулган чыныгы Шарп (жылдык) | 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 |
Ийрилик кайда бурулаарын карагыла. Шум чегинен төмөн — жылдык чыныгы Шарп 0.79, 1.63төн бир топ төмөн — DSR 0.5% учурда иштейт, аны туура эместикке чакырбай туура четке кагат: мынчалык алсыз артыкчылык 1000-сыноолук издөө өндүргөн ийгиликтен чын эле айырмаланбайт, жана муну башкача элестетүү ак ниеттик эмес, күчтүүлүк да эмес болмок. Чектин так айланасында ийрилик тик көтөрүлөт (1.27дe 0.09, 1.90дo 0.65). Жылдык Шарп 2.54тe күч 0.998; 3.17дe ал так 1.000гo жетет. Күчтүү артыкчылыктар дээрлик ар бир жолу сакталып калат, жалган позитивдер нөлгө жабышып калат, жана 50%-күч кесилиш чекити жылдык Шарп болжол менен 1.73тe турат (1.27 жана 1.90 саптарынын ортосунда интерполяция менен чыгарылган) — 1.63 шум чегинен дал жогору, так эле адилет планка коюшу керек болгон жерде: издөө 1000 сыноодо ойлоп тапкан нерседен артыкчылык чын эле озуп кете баштаган чекит.
Бул сиз чынында каалаган касиет, S-ийрилиги катары айтылганда: шум чегинен төмөн артыкчылыктар туура түрдө ийгилик деп эсептелип, четке кагылат; андан жогору жайгашкан артыкчылыктар бирге жакындаган күч менен сакталып калат. Элементардык тест, айырма үчүн, чыныгы Шарп 0.79до да орнотулган артыкчылыкты 67% учурда "аныктайт" — бирок бул сан эч нерсени билдирбейт, себеби биз анын жок артыкчылыкты 100% учурда аныктаарын мурунтан эле көрдүк. Баарын белгилеген тесттин күчү жок; анын дискриминациясы жок. DSR жиберим-артыкчылыктарга (0.79 жана 1.27 саптары) бир аз сезгичтикти маанилүү нерсеге алмаштырат: анын ачылыштары чыныгы.
5-акт — Практиктин тузагы: корреляцияланган торлор

Ушул убакытка чейинки бардыгы көз карандысыз стратегияларды колдонду — эң таза орнотуу, жана DSR'дин көз карандысыздык болжолу так аткарылган жери. Чыныгы параметр торлору мындай эмес, жана бул жерде наивдик колдонулган курал жаңы туура эместикке айланат.
Адилет moving-average crossover издөөсүн алалы: 16 тез узундук 40 жай узундук сыноо, ар бирине 755 байкоо. Мындай тор корреляция менен чылымталанган: fast=45/slow=120 жана fast=45/slow=125 дээрлик бир эле стратегия, ошондуктан алардын кайтарым тизмектери бирге кыймылдайт. 640 сыноо боюнча орточо жуп-корреляция өлчөнгөндө: болжол менен 0.61. Булар 640 көз карандысыз тыгыл эмес. Такыр эмес.
A учуру — кокус басуу (артыкчылык жок): ар бир метод аны туура өлтүрөт
Торду таза кокус басууда иштетиңиз. Жеңүүчү азгырат: параметрлер fast=45/slow=120, эң жакшы жылдык Шарп 0.81, бир жолку-тест p-мааниси 0.081. Ар бир метод аны көрөт:
| Метод | Жыйынтык | Жыйынтык |
|---|---|---|
| DSR (чийки K = 640) | 0.431 | четке кагуу (< 0.95) |
| Reality Check p | 0.570 | четке кагуу |
| SPA-түрдөгү p (студентификацияланган RC) | 0.569 | четке кагуу |
| Harvey-Liu чач кыркуусу | 100% | четке кагуу |
Эч кандай дефляциясыз да белгилүү нерседен баштайлы: бул жеңүүчүнүн оңдолбогон чектелген-тандоо маанилүүлүгү, -vs-нөл, болгону 0.918 — 640 сыноонун бирин дагы оңдоордон мурун эле 0.95тен төмөн. Дефляция аны андан ары көмөт: бенчмарк байкоо башына , жылдык ~0.91 (чыгарылган: ) — жеңүүчүнүн 0.81инен жогору. Эң жакшы стратегия шум чегине да жетпейт, DSR ≈ 0.43 (монета ыргытуудан начар), жана Reality Check, SPA-түрдөгү тест, жана 100% чач кыркуу баары бирдей: эч нерсе жок. Мыкты. Бул жеңил учур, жана ал иштейт — жана биз көргөндөй, ал ар бир эффективдүү-сыноо санында четке кагылган бойдон калат.
B учуру — чыныгы режим артыкчылыгы: чийки DSR аны туура эмес аныктайт
Эми ошол эле торду чыныгы, пайдалануучу артыкчылыкка ээ режим-которулуучу катар боюнча иштетиңиз. Жеңүүчү таасирдүү: параметрлер fast=3/slow=55, эң жакшы жылдык Шарп 3.92 — бул издөө тарабынан селекциялоо аркылуу шишиктирилген тандоо-ичи, тандалган Шарп (чыныгы же тандоодон тышкаркы артыкчылык эмес), бирок астындагы режим эффекти чыныгы — бир жолку-тест p-мааниси жана оңдолбогон маанилүүлүк -vs-нөл негизинен 1.000. Бул жерде чыныгы артыкчылык бар жана жеңүүчү аны тапты. Чийки DSR аны бирок кантип четке кагаарын карагыла:
| Метод | Жыйынтык | Жыйынтык |
|---|---|---|
| DSR (чийки K = 640) | 0.748 | четке кагуу (< 0.95) ✗ ашыкча дефляцияланган |
| Reality Check p | 0.0024 | ырастоо ✓ |
| SPA-түрдөгү p (студентификацияланган RC) | 0.0038 | ырастоо ✓ |
| Harvey-Liu чач кыркуусу | 15% | ырастоо ✓ |
Чийки DSR 0.748 — бул чыныгы артыкчылыктын жалган четке кагылышы. Себеби көз карандысыздык болжолунда, эми катуу бузулган: DSR 640 корреляцияланган сыноону 640 көз карандысыз тартылыш катары карап, дефляцияланган бенчмаркты түзгөн, бул күтүлгөн-максимум гo байкоо башына 0.221гe чейин шишиктирет — жылдык ~3.51 (чыгарылган: ). 3.51 бенчмаркка карата, 3.92 жеңүүчү аны бир аз гана ашат, жана DSR 0.748тe турат — 0.95тен төмөн. Бул планканы эки нерсе көтөрөт: чийки эсеп (гипотетикалык көз карандысыз тыгылдардын аз тобунун ордуна 640 карап чыгуу), жана сыноолордун арасындагы чыныгы чеберчилик чачыроосу — кээ бир параметр жуптары режим катарында чын эле жакшы, бул ди кеңейтип, ди таза ийгиликтин берерин эле ашкан деңгээлге көтөрөт. Эки нерсе тең бир багытта түртөт, жана бенчмарк өтө жогору болуп калат, себеби издөө эч качан чын эле 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))
жана менен, бул тор эффективдүү сыноого кулайт (чыгарылган: ), жана DSR 1.000гo секирет. Бирок бул санды майрамдоодон мурун токтоңуз, себеби ал бул бөлүмдөгү эң алсыз далил. дa дефляцияланган бенчмарк жылдык гo кулайт — негизинен сыноо орточо чоңдугу, негизинен нөл. Ошол жерде дефляция өчүрүлгөн: дaгы DSR жеңүүчүнүн оңдолбогон чектелген-тандоо маанилүүлүгүн (-vs-нөл ) кайра билдирет. Жыйынтык multiple-testing оңдоо тарабынан өндүрүлгөн эмес, чийки маанилүүлүктөн мурастоолонгон. Кокус-басуу тарабындагы күзгүлүү каведат: анын дaгы четке кагылышы ошол жеңүүчү баштапкыдан эле маргиналдуу болгондуктан гана бекем (-vs-нөл ). Бүтүндөй тыянакты 1.6гa байланыштырсаңыз, скептик ийинин куушу туура болмок: сиз оңдоону өчүрүп, астыда эмне бар болсо ошону билдиргенсиз.
Ошондуктан бир баалоочуга байланыштырбаңыз. Ак ниет кадам — жана күчтүүрөөгү — ди беш ар башка стандарттык жол менен эсептеп, жыйынтыкты бүтүндөй диапазондон окуу. Мына ошол эле 640-сыноолук сигнал торуна колдонулган беш баалоочу, ар биринин туюндурган дефляцияланган бенчмаркы жана өндүргөн DSR'и менен:
| Эффективдүү-сыноо баалоочусу | Дефляцияланган бенчмарк (жылдык) | 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 | четке кагуу |
Баалоочулар: орточо корреляция — жогорудагы бир сап-тик; катышуу катышы жана PCA-95%/Kaiser эсептери эффективдүү өлчөмдүктү корреляция матрицасынын өздүк маанилеринен окушат; Cheverud-Nyholt — генетика адабиятынан алынган өздүк-маанилердин-дисперсиясы баалоочусу, жакын-теңкорреляцияда ашыкча эсептеери белгилүү.
Эми чекит окулат, жана бул "каалаган оңдоо сактайт" дегендик эмес. Коргоого болорлук ортого — PCA-95% () жана Kaiser () карагыла. Булар дефляция-өчүрүлгөн режим эмес; алар чыныгы жылдык бенчмаркын 1.85дeн 2.00гo чейин таасир этет — 16-21 эффективдүү карап чыгуу үчүн олуттуу чач кыркуу, шумдан бир кыйла жогору. Жана 3.92 артыкчылык аны дагы деле ашат (DSR 1.000 жана 0.999). Сигнал DSR'ди 144.8дeн (кесилиш чекитинен чыгарылган) төмөн болгон каалаган үчүн аман калат; ал жалгыз Cheverud-Nyholt'дун астында гана начар болот — сыноолор жакын-теңкорреляцияланганда далилденген түрдө ашыкча эсептеген баалоочу — жана чийки, оңдолбогон 640 эсеп дагы DSR'ди 0.748гo чейин гана түшүрөт, нөлгө эмес. Ошол эле беш баалоочу аркылуу иштетилген кокус-басуу жеңүүчүсү ар бир баалоочуда четке кагылат (ал 1дeн жогорку эч кандай үчүн аман калбайт). Бул чыныгы жыйынтык: бир бактылуу сан эмес, тескерисинче стандарттык эффективдүү-сыноо баалоочуларынын бүтүндөй диапазонунда туруктуу жыйынтык — бул алардын бирине ишенгенден алда канча күчтүүрөөк далил.
Эң одоно баалоочу боюнча бир техникалык каведат, себеби ал эмне үчүн жумшак четте турганын түшүндүрөт: чын эле корреляцияланган өзгөрмөлөрдүн орточо мааниси үчүн дисперсия-азайтуу көбөйткүчү (корреляция астында орточолоо канча пайда берерин). DSR'дин бенчмаркы экстремалдык-маани чоңдугу — сыноолордун максимумунун күтүлгөн мааниси — ошондуктан анын сыноо саны катары орточо-дисперсиялык кичирейтүүнү колдонуу функционалдык дал келбестик: багыты боюнча туура (корреляцияланган ⇒ аз эффективдүү сыноо), бирок максимумдун бөлүштүрүлүшү чын эле көз каранды чоңдук эмес. Так ошондуктан диапазондун ортосундагы өздүк-маани-негизделген баалоочулар ишенимдүүрөөк окуу болуп, диапазон, чекит эмес, натыйжа болуп калат.
Сабак: эки куралды колдонуңуз, жана DSR'гe туура N бериңиз

B учурунан эки нерсе келип чыгат, жана экөө тең жүктөлгөн:
- Сыноолор корреляцияланган болгондо чийки тор өлчөмү DSR үчүн туура эмес N — жана бир жалгыз эффективдүү-N дагы туура эмес. 640ды көз карандысыздыкты болжогон формулага кийирүү ашыкча дефляцияланат: ал издөө чын эле жеткен деңгээлден бир кыйла бийик шум чегин жасайт жана чыныгы артыкчылыктарды анын астына көмөт. DSR'гe эффективдүү сыноо саны керек — бирок чечим бир баалоочуга ишенүү эмес (эң одоносуна анча да эмес, анда оңдоо гe жакын жерде өчүп калат). Чечим — жыйынтыкты стандарттык баалоочулардын бүтүндөй диапазонунан (бул жерде 1.6дaн 370гo чейин) окуп, ал туруктуубу же жокпу карап чыгуу. Бул артыкчылык үчүн ал туруктуу болду: дефляция чын эле активдүү болгон жерде дайыма сакталды (-дe чыныгы 1.85-2.00 жылдык бенчмарк), жалгыз ашыкча эсептеген баалоочу астында гана начар болду. Диапазон боюнча туруктуу жыйынтык каалаган жалгыз сандан алда канча күчтүү.
- DSR'ди Reality Check менен айкалыштырыңыз. Reality Check жана анын SPA-түрдөгү (студентификацияланган) тыбызагы B учурун эч кандай сыноо-эсеп операциясыз эле туура аныктаганын байкагыла (p = 0.0024 жана 0.0038) — алар көз карандылыкты стационардык bootstrap аркылуу табигый түрдө иштетишет, себеби алар гипотетикалык көз карандысыз тыгылдарды санабай, чыныгы корреляцияланган кайтарым тизмектерин кайра тандайт. Бул бүтүндөй эффективдүү-N чаташуусу үчүн айырма чечкич: RC'гe керек эмес. DSR жана RC ар башка суроолорго жооп беришет: DSR "жеңүүчү бул издөөнүн ичинде өзгөчөбү?" деп сурайт (жана издөө канча эффективдүү карап чыгууну алганын билиши керек); RC/SPA-түрдөгү "эң жакшы эреже маалыматтарды карап-чыгуудан кийин акчадан жогорубу?" деп сурайт (жана көз карандылыкты маалыматтардын өзүнөн окушат). Экөөнү тең колдонуңуз. Алар макул болбогондо — чийки-эсептик DSR жана RC бул жерде кылгандай — макул болбоо диагностикалык: адатта бул сиздин туура эмес экенин билдирет.
Бул биздин ылдамдык-баскычы жана IPC-салыгы изилдөөлөрү инженердик тараптан урунган ошол эле структуралык эскертүү — чоң корреляцияланган торду иштеткен тез издөө сизге чоң санда көз карандысыз тыгылдарды сатып бербейт, жана тор өлчөмүн сыноо саны катары кароо сиздин оптимизаторуңузду да, маанилүүлүк тестиңизди да алдайт. Жакында чыгуучу backtest overfitting ыктымалдуулугу (PBO) боюнча коштоочу макала ошол эле селекциялоо жаңылыгын кайра тандоо тарабынан (CSCV) чабуул кылат, жана бул жердеги баары менен табигый түрдө айкалышат: DSR жеңүүчүнү баалайт, PBO процедураны баалайт.
Ак ниеттик эскертүүлөр
Ачык айтылган үч каведат, себеби көзөмөлдөнгөн изилдөөнүн бүтүндөй маңызы аны ашыкча мактабоо.
- Кайтарымдар синтетикалык. Калибрлөө жана күч эксперименттери үчүн iid Normal, чыныгы-артыкчылык учуру үчүн режим-которулуучу процесс — көзөмөлдөнгөн чындык үчүн тандалган, рынок реализми үчүн эмес. Чыныгы кайтарымдар толук куйруктуу, автокорреляцияланган жана стационардык эмес, жана PSR'дин кыйшаюу/куртошность мүчөлөрү так биринчисин иштетүү үчүн бар. Бул жердеги жыйынтык калибрленген метод, стратегия эмес: биз тесттин жалган ачылыштарды көзөмөлдөрүн эч нерсе жок экенин билген маалыматтарда иштетип гана далилдей алабыз. Бул чындыкты жасалма түзүүнү талап кылат.
- Эч бир эффективдүү-N баалоочусу канондук эмес — ошондуктан биз бешин билдирдик. Орточо-корреляция бир сап-тиги рецензент үчүн окулуучу жана багыт боюнча туура (көбүрөөк корреляция ⇒ азыраак эффективдүү сыноо), бирок ал орточо маани үчүн дисперсия-азайтуу көбөйткүчү — DSR'дин максимум бенчмаркы менен функционалдык дал келбестик — жана гe жакын жерде дефляцияны толугу менен өчүрөт. Өздүк-маани баалоочулары (катышуу катышы, PCA-95%, Kaiser) жакшыраак дал келет, бирок дагы деле эвристикалык, жана Cheverud-Nyholt теңкорреляцияда ашыкча эсептейт. Толугуроок, принциптүү мамиле — сыноо кластерлештирүү (Bailey & López de Prado'нун DSR тиркемеси 3): сыноолорду корреляция структурасы боюнча топтоп, баарын бир скалярга кыйсынтпай, кластерлерди эсептеңиз. Биз бүтүндөй диапазонду так ошондуктан билдирдик, себеби тандоо чечилген эмес — беш баалоочунун баарында туруктуу жыйынтык ак ниет тыянак; жалгыз баалоочуну тандоого көз каранды жыйынтык андай болмок эмес.
- Bootstrap — толук Hansen SPA эмес, студентификацияланган Reality Check, жана кайра тандоо саны эксперимент боюнча ар башка. Бул макалада "SPA-түрдөгү" деп аталган жерде, ал ар эреже боюнча студентификацияланган White'дин Reality Check'ин билдирет; Hansen'дин толук дал келгендик, тандоого көз каранды кайра борборлоштуруусу ишке ашырылган эмес. Калибрлөө жалган-ачылыш ставкалары 400 издөө боюнча издөө башына 500 стационардык-bootstrap кайра тандоону колдонот; эки учур-изилдөөнүн RC/SPA-түрдөгү p-маанилери ар бири 5000 кайра тандоону колдонот. Орточо блок узундугу 20 бүт убакытта (Politis-Romano), , жылдандыруу үчүн жылына 252 период. Буларды өзгөртсөңүз, үчүнчү ондук орундагы сандар жылат; окуя — элементардык 1.000 принциптүү 0.001-0.057гa каршы, шум чегинен дал жогору 50% күчкө жеткен S-ийрилиги, жана жыйынтыгы эффективдүү-N диапазонунан окулушу керек болгон корреляцияланган-тор тузагы — өзгөрбөйт.
Негизги тыянактар
- Параметр издөө — бул multiple-testing машина, ал эми элементардык маанилүүлүк тести аны көрбөйт. 1000 артыкчылыгы нөл болгон стратегияда эң жакшы жылдык Шарп орточо эсеп менен 1.63кe жетет, бир жолку-тест p-мааниси медианасы 0.000686, ал эми "маанилүүбү?" тести ачылышты 100% учурда жарыялайт (жалган-ачылыш ставкасы 1.000). Эч нерседен пайда болгон сонун Шарп, эч качан туура суроо бербеген тест тарабынан маанилүү деп ырасталган.
- Дефляцияланган Шарп коэффициенти дарбазаны нөлдөн шум чегине жылдырат. DSR жеңүүчүнү нөлгө эмес, гa — ушул өлчөмдөгү издөөнүн ийгилик боюнча күтүлгөн эң жакшысына — салыштырат. Ал белгилүү-нөлдүк учур үчүн жылдык 1.63кe жетет, орточо шум жеңүүчүсү турган так жерде (чыгарылган: ). Анын нөлдүк жалган-ачылыш ставкасы 0.001; Harvey-Liu чач кыркуусу (Bonferroni/Holm 0.057, BHY 0.007) жана White'дин Reality Check'и (0.022) ошол эле көзөмөлгө башка жолдор менен жетишет.
- Ал чыныгы артыкчылыктарды сактайт. DSR'дин аныктоо күчү жылдык Шарп ~1.73тe 50% күчкө жеткен S-ийрилигин сызат — 1.63 шум чегинен дал жогору: чыныгы жылдык Шарп 0.79до 0.005, 1.90до 0.651, 2.54то 0.998, 3.17дe 1.000, бүт убакытта жалган позитивдер ~0. Чектен төмөн артыкчылыктар туура түрдө ийгиликтен айырмаланбайт деп табылат; андан жогору жайгашкандар бирге жакындаган күч менен сакталат.
- Корреляцияланган торлор чийки DSR'ди бузат — жана бир жалгыз эффективдүү-N аны куткарбайт; диапазон куткарат. 640-клеткалуу MA crossover'дo (орточо жуп-корреляция ~0.61), чийки-эсептик DSR чыныгы (тандоо-ичи тандалган, жылдык 3.92) артыкчылыкты жалган түрдө четке какты (0.748 < 0.95), себеби 640 корреляцияланган сыноо 640 көз карандысыз тыгыл эмес. Бирок чечим бир сыйкырдуу эмес — эң одоно баада () дефляция негизинен өчүрүлгөн (бенчмарк ~жылдык 0.25) жана DSR жөн эле чийки маанилүүлүктү кайталайт. Чыныгы далил — артыкчылык стандарттык баалоочулардын бүтүндөй диапазонунда сакталып калат — DSR 1.000/1.000/1.000/0.999, 1.6/2.4/16/21 үчүн, ал ичинде коргоого болорлук PCA-95%/Kaiser орто диапазонунда чыныгы жылдык бенчмарк 1.85-2.00 болот — болгон каалаган учурда аман калат, жалгыз Cheverud-Nyholt'дун ашыкча эсептеген 370 астында начар болот. Кокус басуу ар бир баалоочуда четке кагылат. Чекитти эмес, диапазонду окуңуз.
- DSR'ди Reality Check менен айкалыштырыңыз, себеби алар ар башка суроолорго жооп беришет. Reality Check жана анын SPA-түрдөгү (студентификацияланган) тыбызагы эч кандай сыноо-эсеп операциясыз чыныгы артыкчылыкты ырастады (p = 0.0024 жана 0.0038) — алар көз карандылыкты стационардык bootstrap аркылуу табигый түрдө иштетишет, бул эффективдүү-N талашка түшкөндө так айырма чечкич. DSR "жеңүүчү бул издөөнүн ичинде өзгөчөбү?" деп сурайт; RC/SPA-түрдөгү "эң жакшысы маалыматтарды карап-чыгуудан кийин акчадан жогорубу?" деп сурайт. Алардын ортосундагы карама-каршылык сиздин туура эмес экенин билдирген сигнал. Экөөнү тең иштетиңиз.
Издөөнүн жеңүүчүсү айыпталуучу, ал айыпсыздыгы далилденгенге чейин. Элементардык p-мааниси айыпсыздыктын далили эмес — бул издөөнүн өзүнүн шишиктирилген күбөлүгү, жана ал таза шум үчүн он эки нөл ишенимдүүлүк менен күбөлөндүрөт. Бенчмаркты ийгилик берген нерсеге дефляциялаңыз, эффективдүү сыноолорду ак ниет менен эсептеңиз, жана экинчи пикир үчүн максимумду bootstrap кылыңыз. Бардык үч планканы аткарган нерсе чын эле чыныгы болушу мүмкүн. Жалгыз элементардык планканы гана аткарган нерсе — миң монета ыргытуучунун эң узуну.
Толук эксперимент — нөлдүк-калибрлөө машинасы, орнотулган-артыкчылык күч чубалышы, корреляцияланган-тор издөөлөрү, жана бул макаладагы ар бир сан бир детерминисттик скрипттен кайра пайда болушу мүмкүн — deflated-sharpe.marketmaker.cc дарегиндеги коштоочу макалада, код жана дайындар менен github.com/suenot/deflated-sharpe-search дарегинде жайгашкан.
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.