Эки октуу параметр мейкиндиги: эмне үчүн сиздин издөөнүн көпчүлүгү дээрлик акысыз болушу керек
"Иллюзиясыз бэктесттер" сериясынын бир бөлүгү.
Өлчөмдүүлүктүн каргышы адатта эскертүү катары айтылат: сиз кошкон ар бир параметр издөө мейкиндигин көбөйтөт, ошондуктан 18 өлчөмдүү стратегияны издөө үмүтсүз. Мындай коюу ар бир өлчөм баалоо үчүн бирдей баа турат деп жай эле болжолдойт. Бирок андай эмес. Биздин кош/үч таймфреймдик кыймылдаткычта параметрлердин үчтөн экиси издөө үчүн дээрлик акысыз, ал эми үчтөн бири бүт эсептөө чыгымын иш жүзүндө көтөрөт. Ошол бөлүнүштү бир көргөндөн кийин "издөө мейкиндиги өтө чоң" деген нааразычылык туура болбой калат. Туура суроо мындай: сиз кайсы өлчөмдөр үчүн төлөп жатасыз?
Кайра эсептөөнү талап кылбаган өлчөм
Биздин параметр издөө бенчмаркыбыз көп таймфреймдик моментум стратегиясын иштетет: Hull жылма орточосу жана анын үч эсе тегизделген варианты (HMA3) эки же үч таймфреймде, багыттуу ажыратуу дарбазасы менен, ал кроссовер аракет кыла турганчалык "таза" болгонун чечет. Үч таймфреймдик вариант үчүн толук издөө мейкиндиги он сегиз өлчөмдүү — ар бир таймфрейм үчүн мезгил жана HMA узундугу, ошондой эле ар бир таймфреймде кирүү жана чыгуу үчүн ажыратуу босоголорунун топтому.
Муну издөөнүн жөнөкөй жолу — бир цикл: параметр векторун тандап, ар бир индикаторду нөлдөн курууп, симуляцияны иштетип, аны баалап, кайра баштоо. Биз ошол жерден баштадык. Ал жай эле, жана ал бир себептен улам жай болчу, ал себеп биз ага ат койгондон кийин уят болуп калды: катар турган сыноолордун басымдуу көпчүлүгү үчүн биз өзгөрбөгөн индикаторлорду кайра эсептеп жаттык.
Кирүү-ажыратуу босогосун 0.03төн 0.035ке жылдырып, кайра иштетиңиз. Бир жылдык 1 мүнөттүк барлардын үстүндөгү Hull MA мурунку сыноо менен бит-бит боюнча бирдей — босого анын аныктамасында эч жерде жок. Ошентсе да жөнөкөй цикл аны баары бир кайра курат, жарым миллиондон ашык бардын үстүнөн, үч таймфрейм тереңдигинде, ар бир жолу. Биз эсептөө бюджетибиздин дээрлик баарын биз чындыгында өзгөртүп жаткан параметрге көз каранды эмес чоңдуктарды кайра чыгарууга сарптап жаттык.
Ошол байкоо — макаланын баары ошол. Кээ бир параметрлер индикаторлорду өзгөрткөнүн, ал эми кээ бирлери туруктуу индикаторлорго колдонулган чечим эрежесин гана өзгөрткөнүн байкаган учурда, параметр мейкиндиги жалпак өлчөмдөр булутун болбой калып, кескин айырмаланган баа таргалары бар эки уяланган катмарга айланат.
Бир эмес, эки ок

Параметрлерди аларды кайра баалоо сизди эмнени кайра эсептөөгө мажбурлаганы боюнча бөлүңүз:
-
Кымбат ок — индикатор параметрлери. Таймфрейм мезгили жана HMA узундугу. Экөөнүн бирин өзгөрткөндө индикаторду бүт баа сериясынын үстүнөн кайра куруу керек: жогорку таймфреймди кайра дискреттөө, Hull салмактоону иштетүү, кроссовер сериясын жана ар бир кесилиштеги ажыратууну кайра эсептөө. Бул тарыхтын ар бир бары үчүн O(n) издөө, жана сиз аны ар бир айырмаланган комбинация үчүн толук төлөйсүз. Үч таймфреймдик стратегияда бул ок алты параметр: жогорку, орто жана төмөнкү таймфреймдин ар бири үчүн
(period, hma_length). -
Арзан ок — чечим босоголору. Мурунтан эсептелген кроссовер жана ажыратуу серияларынан улам кирүү же чыгуу керекпи деп чечкен багыттуу ажыратуу дарбазалары. Босогону өзгөртсөңүз, эч бир индикатор жылбайт. Сиз алдын ала эсептелген сигналдардын үстүнөн бир гана O(n) өтүүнү кайра иштетесиз, дарбазаларды текшерип, толтурууларды каттайсыз. Үч таймфреймдик стратегияда бул ок он эки параметр (ар бир үч таймфреймде төрт ажыратуу босогосу — кирүү-сатып алуу, кирүү-сатуу, чыгуу-сатып алуу, чыгуу-сатуу). Кош таймфреймдик вариантта сегиз бар (эки таймфреймдин ар биринде төрт босого).
Демек, мейкиндиктин чыныгы формасы: 6 кымбат + 12 арзан = 18 үч таймфрейм үчүн, жана 4 кымбат + 8 арзан = 12 кош таймфрейм үчүн. Өлчөмдүүлүктүн үчтөн экиси арзан окто жашайт. Жана эки ок санда гана эмес — алар бирдик наркы боюнча үч чоңдук тартибинен ашуун айырмаланат, бул макаланын калган бөлүгү ошол сан тууралуу.
Структура катуу уяланган. Кымбат октогу ар бир чекит — ар бир таймфрейм үчүн бир конкреттүү (period, hma_length) — туруктуу сигнал массивдеринин топтомун аныктайт. Ошол туруктуу пайдубалдын үстүндө арзан октун бүт баракчасы жайгашкан: миңдеген босого векторлору, алардын ар бири ошол эле массивдердин үстүнөн тез өтүү. Сиз пайдубал үчүн бир жолу төлөйсүз жана аны бүт баракчага амортизациялайсыз.
Эмне үчүн индикаторлор босогого көз каранды эмес
Кэштөө математикалык фактыдан улам гана иштейт, кокус ишке ашыруу деталынан эмес, жана муну так айткан оң, анткени бул көтөрүүчү болжолдоо. Индикатор массивдери жалгыз (period, hma_length) функциясы. Ажыратуу босоголору алардын аныктамасында эч жерде жок.
Конкреттүү айтканда, ар бир таймфрейм үчүн кыймылдаткыч базалык индекстин үстүнөн төрт тегизделген массивди алдын ала эсептейт: Hull MA hma, анын үч эсе тегизделген hma3, кроссовер сериясы cross (+1 сатып алуу / −1 сатуу / 0) жана ар бир кесилиштеги separation пайызы. Булардын ар бири баалардан жана эки индикатор параметринен алынат. Босого — сиз separation менен салыштырган сан — кийинчерээк, чечим кабыл алуу учурунда колдонулат. Ал массивдерге эч качан тийбейт.
Бул анча-мынча коопсуз кайра тизилиш эмес. Ал биз качан маалымат жеткиликтүү болорун этияттык менен карагандыгыбыздан улам гана коопсуз, бул ушул серияда башка жерде каралган алдыга кароо жаңылыштыгы иши менен байланыштуу маселе. Базалык бар iдеги жогорку таймфреймдик индикатор жабылган жогорку таймфреймдик шамдардан, ошондой эле агымдагы жабылышы азыркы базалык жабылыш close[i]ке барабар болгон түзүлүп жаткан шамдан эсептелет — бул i барында белгилүү болгон маани. Келечектен эч нерсе агып кирбейт. Ошондуктан i барындагы алдын ала эсептелген сигнал — бул жандуу бот i барында так эмнени көрмөк, ошол, жана сиз кийин ага каршы кайсы босогону сынасаңыз да, ал жарактуу бойдон калат. Агып кеткен сигналды кэштөө агып кетүүнү гана кэштейт; себептик сигналды кэштөө чындыгында соода кыла турган нерсени кэштейт.
Бул көз карандысыздык бизге факторизация берет. Бир толук параметр вектору θ = (indicator_params, threshold_params)нын баалоосун мындай жазыңыз:
signals = build_indicators(indicator_params) # EXPENSIVE, depends only on indicator_params
score = simulate(signals, threshold_params) # CHEAP, reuses signals across all thresholds
build_indicators threshold_paramsды окубайт. Ошол бир факты кэшти уруксат берген нерсе: indicator_paramsды туруктуу карман, threshold_paramsды эркин өзгөрт, ошондо signals — сиз бир жолу эсептеген туруктуу.
Архитектура: бир жолу эсептеп, көп жолу изде

Кыймылдаткыч (scripts/engine_multitf.py, биздин бэктестердеги bfc8aaa коммит) факторизацияны эмне кыларын так айткан эки бөлүк менен ишке ашырат.
SignalCache — кымбат ок, эстеп калынган. Бул (period_bars, hma_length) боюнча ачкычталган сөздүк. Андан таймфреймдин сигналдарын сурасаңыз, ал ошол индикатор комбинациясы мурда курулган болсо кэштелген TFSignalsды кайтарат, антпесе аларды бир жолу куруп, сактайт. Ачкыч индикатор параметрлери гана болгондуктан, индикатор комбинациясын бөлүшкөн ар бир босого конфигурациясы — ал эми калың босого издөөсүндө алар миңдеп болот — ошол эле кэш жазуусуна тийет. Айрыкча жогорку таймфреймдер муну сыйлайт: мисалы, төрт талапкер мезгилге бир нече HMA узундугун көбөйткөн орой торчо аз сандагы айырмаланган кымбат куруу, жана алардын ар бири анын үстүнө топтолгон бүт босого баракчасында кайра колдонулат.
sweep_separations — арзан ок, топтолгон. Ал кэштелген сигнал массивдерин жана босого векторлорунун матрицасын (sps, форма [m, 12]) алат жана алардын баарын бир компиляцияланган ядро аркылуу иштетет. Ар бир сап — бир O(n) өтүү: барларды кыдырып, дарбазаларды колдонуп, open[i+1]деги агып кетпеген толтурууларды каттап, PnLды жана позициядагы убакытты эсептеп. Бул циклдин ичинде эч бир индикатор кайра курулбайт — ал cross менен separationды түз кэштен окуйт. Ички симуляция JIT менен компиляцияланган (Numba), ошондуктан бир жолу ысытылгандан кийин ар бир конфигурациянын наркы Python үстөк чыгымдары эмес, барлардын үстүнөн бир сызыктуу сканирлөө менен басымдуу.
Эки бөлүк табигый уяланган издөөгө биригет: сырткы цикл кымбат окту кыдырат (ар бир итерация бир индикатор комбинациясын курат жана кэштейт), ал эми ички цикл ошол кэштелген массивдердин үстүнөн арзан ок боюнча кең топтомду жайылтат. Кодто форма так ошондой — кең арзан топтомду ороп турган кичине кымбат цикл:
cache = SignalCache(base_close, base_ts) # keyed by (period, hma_length)
for htf_p, htf_h, mtf_p, mtf_h, ltf_p, ltf_h in indicator_grid: # EXPENSIVE axis (coarse)
htf = cache.get(htf_p, htf_h) # built once, then a cache hit forever
mtf = cache.get(mtf_p, mtf_h)
ltf = cache.get(ltf_p, ltf_h)
sps = sample_thresholds(m=4000) # CHEAP axis: [m, 12] threshold vectors
pnl, n_trades, bars_in_pos = sweep_separations( # one compiled batch, no indicator work
base_close, base_open, htf, ltf, sps, mtf=mtf)
Сиз индикатор торчосу уруксат берген өлчөмдө гана кымбат курулмага тийесиз, ал эми көлөмдү арзан издөөгө жасатасыз — эч качан жылбаган массивдерге каршы миңдеген sps саптары. Бул — бүт оптималдаштыруу — жакындоо жок, тактыктын жоготуусу жок, өзгөрбөгөн нерсени кайра эсептөөдөн баш тартуу гана.
"Акысыз" чындыгында канча турат: сандар

Биз эки окту демо жүктөмүндө өлчөдүк: 1 мүнөттүк ETHUSDT барларынын толук бир жылы (~527 миң бар), үч таймфрейм, индикаторлор ысытылган жана JIT компиляцияланган таймингден чыгарылган.
Арзан окто sweep_separations секундасына ~5 600 босого-конфигурациясын кармап турат. Бул толук симуляция — дарбазалар, толтуруулар, PnL, экспозиция — ар бир конфигурация үчүн, жарым миллиондон ашык бардын үстүнөн, конфигурация үчүн болжол менен 180 микросекунда. Анын ушунчалык тез боло алышынын себеби — ал нөлдүк индикатор жумушун жасайт: ар бир конфигурация ошол эле кэштелген cross жана separation массивдерин окуйт.
Эми альтернативаны баалаңыз. Үч таймфреймдик индикатор топтомун бир жолу куруу бир нече жүз миллисекунда (~0.3 с) тартибинде болот — үч таймфреймди кайра дискреттөө, Hull салмактоо, бүт жылдын үстүнөн кроссовер жана ажыратуу чыгаруу. Эгер сиз индикаторлорду конфигурация циклинин ичинде кайра эсептесеңиз — жөнөкөй бир циклдик дизайн — секундасына ошол 5 600 конфигурациянын ар бири анын ордуна толук индикатор куруусун төлөмөк. Ар бир конфигурациянын наркы ~180 микросекундадан ~0.3 секундага чейин чоңоёт:
| Ар бир конфигурациянын наркы | Секундасына конфигурация | |
|---|---|---|
| Арзан ок (кэштелген сигналдар) | ~180 µs | ~5 600 |
| Ар бир конфигурация үчүн индикаторлорду кайра эсептөө | ~0.3 s | ~3.4 |
Катышы ~1 600 эсе. Кэштелген сигналдардын үстүнөн арзан окту издөө ар бир босого вектору үчүн индикаторлорду кайра курган жөнөкөй дизайндан болжол менен үч чоңдук тартибине арзан. Конкреттүү айтканда: кэштелген жолдо бир секундадан аз убакытта бүткөн бир нече миң босого конфигурациясынын топтому, эгер ар бир конфигурация индикаторлорун кайра курса, бир сааттын дээрлик көбүн алмак. Бирдей натыйжалар, бирдей тактык, математикада жол кыскартуу жок — жалгыз айырмасы: бири көз карандысызды кайра эсептейт, экинчиси жок.
Бул сиз аягында гана сээп кете турган микро-оптималдаштыруу эмес. Ал кайсы издөөлөр мүмкүн экенин өзгөртөт. 5 600 cfg/s ылдамдыгында босого огу туура изилдөө үчүн жетишерлик калың — сиз индикатор комбинациясы боюнча майда торчону же узун кокус/QMC үлгүсүн көтөрө аласыз — ал эми кымбат ок атайын орой бир нече куруу бойдон калат. Эсептөө бюджети параметрлер чындыгында бир нерсеге турган жерге агат.
Өлчөмдүүлүктүн каргышы, кайра бааланган

Бул макала ачылган коюуга кайрылалы. Өлчөмдүүлүктүн каргышы издөө мейкиндиги параметрлердин санына экспоненциалдуу түрдө өсөт дейт, ошондуктан көбүрөөк өлчөм категориялык түрдө начар. Бул торчонун өлчөмү тууралуу чын. Аны каптоонун наркы тууралуу жаңылыш, анткени ал ар бир өлчөмдү бирдей баалайт.
Октоорду бир жолу ажыратканда сан башкача окулат. Үч таймфреймдик стратегия 18 өлчөмдүү, бирок ошол өлчөмдөрдүн 6ы гана кымбат. Калган 12си — арзан ок өлчөмдөрү, алар эсептөө чыгымын эч кандай олуттуу түрдө кеңейтпей эле торчону кеңейтет — сиз аларга бир нече тыйынга миңдеген конфигурацияны ыргыта аласыз. Кош таймфреймдик стратегия 12 өлчөмдүү, 4 кымбат өлчөм жана 8 арзан менен. Эки учурда тең "каргыштын" көпчүлүгү издөө үчүн дээрлик эч нерсеге турбаган окто топтолгон.
Демек, издөө наркы тууралуу ойлонуунун чынчыл жолу "канча параметр" эмес, "канча кымбат параметр, жана алардын торчосу канчалык орой боло алат". Кымбат ок — экспоненциал чындыгында ооруткан жер, жана ал сиз кичине, жакшы тандалган торчо каалаган жер — бир нече талапкер мезгил, HMA узундугунун орточо диапазону — балким, биз башка жерде колдонгон адаптивдүү-чечилиштеги терен-казуунун рухунда оройдон майдага чейин тактап. Арзан ок — сиз мол боло алган жер, анткени ар бир кошумча босого конфигурациясы 180 микросекунда.
Бул кайра баалоо биздин HMA стратегиясынан алда канча тышкары жалпыланат. Үлгү — кээ бир параметрлер белгилерди өзгөртөт, көпчүлүк параметрлер туруктуу белгилерге колдонулган эрежени өзгөртөт — системалуу соодада бардык жерде кайталанат. Индикатор узундуктары, кайра дискреттөө жыштыктары жана артка кароо терезелери кымбат; кирүү/чыгуу босоголору, стоп аралыктары, позиция өлчөмдөө көбөйткүчтөрү жана ырастоо дарбазалары арзан. Параметр туруктуу эсептелген сигналдардын үстүнөн чечим чек арасын гана кайра калыптандырган ар кандай учурда, ал арзан окко таандык, жана аны ошол жерде издөө керек. Ошол эле үй-бүлөдөн болгон окшош кэштөө жеңиштери көп таймфреймдик parquet кэштөө жана кеңири кыймылдаткыч ылдамдык тепкичи кабарланат.
Акысыз түшкү тамактын эсеби бар жерде
Арзан ок эсептөө жагынан арзан. Ал статистика жагынан арзан эмес, жана экөөнү чаташтыруу — өндүрүмдүүлүк жеңишин ашыкча тууралоо машинасына айландыруунун жолу.
Сиз баалаган ар бир босого конфигурациясы — сыноо, жана бир маалымат топтомунда миңдеген сыноо иштеткениңизде, алардын мыктысы жарым-жартылай ийгиликтен улам жакшы көрүнөт. Ошол сыноолорду 1 600 эсе арзандатуу ийгиликти жоготпойт — ал аны топтоону жеңилдетет. Калың босого издөө — так ошол көп сыноо инфляциясы эң катуу тиштеген кырдаал: көп талапкер, бир тарых, жана максимумду кабарлаган тандоо эрежеси. Дүйнөдөгү эң тез кыймылдаткыч сизге сыноо терезеңиздин шумуна кооз дал келип, үлгүдөн тышкары ишке ашпаган босого векторун кубаныч менен берип коет.
Ошондуктан тартип ылдамдык менен бирге масштабдалышы керек. Сыноонун эсептөө наркы нөлгө карай түшкөн учурда, статистикалык эсептик байланыштыруучу чектөө болуп калат, жана сиз аны ачык төлөшүңүз керек:
- Сыноо саны үчүн дефляциялаңыз. Жеңүүчүнү нөлгө каршы эмес, канча конфигурация сынаганыңызга каршы баалаңыз. Дефляцияланган Шарп катышы жана бэктест ашыкча тууралоо ыктымалдыгы так ушул үчүн бар — алар "биз 4 000 босого векторун сынадык" дегенди кабарланган артыкчылыктагы кыркуучка айландырат.
- Ар бир катмар боюнча үлгүдөн тышкары ырастаңыз. Арзан издөө баары бир чынчыл алдыга-жүрүүчү бөлүнүштүн ичинде иштетилиши керек; үлгүдө гана жеңген босого аны канчалык тез тапсаңыз да баа жок. Биздин кыймылдаткыч толтурууларды агып кетпеген (
open[i+1]) кармайт, так арзан ок карап туруп өндүрүмдүүлүк сатып ала албашы үчүн. - Чокуларга караганда платолорду артык көрүңүз. Босого огу калың жана тез болгондуктан, сиз анын жооп бетин карталай аласыз, анын argmax эле эмес. Баары иштеген босоголордун кеңири аймагы — чыныгы артыкчылык; жалгыз курч максимум — тууралган артефакт — так ушул биз сүрөттөп жаткан ылдамдык менен арзандатылган плато-каршы-чоку айырмасы.
Эки октуу структураны туура окуңуз: ал сизге көбүрөөк ишеним сатып бербейт, ал сизге ар бир сыноодо бирдей ишеним наркы менен көбүрөөк сыноо сатып берет. Бул чынында баалуу — арзан октун калың каптоосу сизге платолорду табууга жана бетти мүнөздөөгө уруксат берген нерсе — бирок статистикалык дептерди чынчыл кармасаңыз гана. Ылдамдык кылдаттык менен издебөө үчүн эсептөө шылтоосун алып салат; ал кылдат издөө тапкан нерсени дисконттоо милдетин алып салбайт.
Өз издөөңүздү кантип түзсө болот
Муну өз стратегияңызга колдонуу үчүн, жумуш көбүнчө классификация — параметрлериңизди туура окко иргөө — андан кийин уяланган цикл:
- Ар бир параметрди аны кайра эсептөөгө эмнеге мажбурлаганы боюнча белгилеңиз. Аны өзгөрткөндө индикатор/белги массиви өзгөрсө, ал кымбат. Эгер ал туруктуу массивдерге колдонулган салыштырууну, босогону же өлчөмдөө эрежесин гана өзгөртсө, ал арзан. Күмөн санасаңыз, сураңыз: бул параметр индикатордун аныктамасынын ичинде эч жерде пайда болобу? Эгер жок болсо, ал арзан.
- Кымбат окто гана кэшти ачкычтаңыз. Белги курулушун анын индикатор параметрлери боюнча эстеп калыңыз (
SignalCache(period, hma_length)боюнча кылгандай). Индикатор комбинациясын бөлүшкөн катар турган сыноолор ошондо ошол эле массивдерди акысыз кайра колдонот. - Кэштелген белгилердин үстүнөн арзан окту топтоңуз. Босого конфигурацияларын толук кайра баалоо катары эмес, алдын ала эсептелген сигналдардын үстүнөн бекем компиляцияланган цикл катары иштетиңиз. Бул жерден сиздин өткөрүмдүүлүгүңүз — жана биздин учурда ~5 600 cfg/s — келип чыгат.
- Циклдерди уялаңыз: кымбат сырткы, арзан ички. Кымбат торчону кичине жана атайын кармаңыз (орой, же оройдон майдага); арзан издөө калың болсун. Бюджетти параметрлер бир нерсеге турган жерге сарптаңыз.
- Сыноолорду сааткка каршы эмес, ашыкча тууралоого каршы бюджеттеңиз. Эми саат чектөө болбогондуктан, дефляцияланган Шарп / PBO болсун. Канча арзан ок сыноосун статистикалык көтөрө аларыңызды чечиңиз жана жеңүүчүнү үлгүдөн тышкары ырастаңыз.
Инженердик пайда жана статистикалык корголуш — бир идеянын эки жагы: октоорду ажыратуу сизге арзан өлчөмдөрдү толук издөөгө уруксат берет, ал так ошондуктан сиз кийин канчалык толук издегениңизди дисконттошуңуз керек.
Негизги ойлор
- Бардык өлчөмдөр бирдей турбайт. Стратегиянын параметрлери кымбат окко (индикаторлор — бүт сериянын үстүнөн кайра эсептелет) жана арзан окко (босоголор — алдын ала эсептелген сигналдардын үстүнөн O(n) өтүү) бөлүнөт. Биздин кыймылдаткычта бул үч таймфрейм үчүн 6 кымбат + 12 арзан, кош таймфрейм үчүн 4 + 8.
- Индикаторлор босогого көз каранды эмес, жана ошол көз карандысыздык — бүт оптималдаштыруу. Белги курулушу индикатор параметрлерине гана көз каранды, ошондуктан сиз бир жолу курасыз,
(period, hma_length)боюнча кэштейсиз жана комбинацияны бөлүшкөн ар бир босого конфигурациясы боюнча кайра колдоносуз. - Арзан ок ~1 600 эсе арзан иштейт. Кэштелген сигналдарда секундасына ~5 600 босого-конфигурациясы (~180 µs ар бири), индикаторлорду ар бир жолу кайра курса конфигурация үчүн ~0.3 с менен салыштырганда. Бирдей тактык — жалгыз айырмасы: көз карандысызды кайра эсептөөдөн баш тартуу.
- Өлчөмдүүлүктүн каргышы чындыгында кымбат өлчөмдүүлүктүн каргышы. Параметр санынын көпчүлүгү издөө үчүн дээрлик акысыз болгон окто жашайт. Кымбат торчону орой кармаңыз; арзан огунда мол болуңуз.
- Ылдамдык байланыштыруучу чектөөнү эсептөөдөн статистикага жылдырат. Калың, тез издөө — көп сыноо машинасы. Сыноо саны үчүн дефляциялаңыз, ар бир катмар боюнча ырастаңыз жана чокуларга караганда платолорду артык көрүңүз — акысыз түшкү тамак чын, бирок статистикалык эсеп милдеттүү эмес нерсе эмес.
Толук кыймылдаткыч — SignalCache, sweep_separations, агып кетпеген көп таймфреймдик симуляция жана аны жандуу түзүлүп жаткан шам семантикасына бекитүүчү паритет сынагы — биздин бэктестердеги scripts/engine_multitf.pyте (коммит bfc8aaa) жашайт. Кимдир бирөө сизге 18 параметрлүү стратегия издөө үчүн өтө чоң деп кийинки жолу айтканда, андан ошол параметрлердин канчасы чындыгында индикаторлорду жылдырарын сураңыз. Адатта алардын үчтөн бири, калгандары дээрлик акысыз.
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.