Backtesting гэж юу вэ?

2026-05-07

Бид шинэ машин худалдан авах үедээ туршилтын жолоодлого (test drive) хийлгүйгээр худалдан авдаггүй. Шинэ эм зах зээлд гаргахын өмнө хэдэн жилийн клиникийн туршилтаар нотлогдох ёстой байдаг. Барилгын инженер нь байшинд хүн суухаас өмнө хүч тэсвэрлэлтийн тооцоо хийдэг. Гэвч маш олон форекс арилжаанд оролцогчид арилжааны системийнхээ үр дүнг туршихгүйгээр бодит мөнгөөр шалгадаг — энэ нь туршигдаж батлагдаагүй эм хэрэглэхтэй адил эрсдэлтэй зүйл гэдгийг тэр бүр анхаардаггүй.

Backtesting гэж юу вэ?

Backtesting гэдэг нь арилжааны системийн дүрмийг өнгөрсөн үеийн зах зээлийн өгөгдөл дээр ажиллуулж, уг систем тухайн хугацаанд хэрхэн үйлчлэх байсныг тооцоолох процесс юм. "Back" гэдэг нь "өнгөрсөн рүү харах", "testing" гэдэг нь "шалгах" — хамтдаа "өнгөрсөн дээр шалгах" гэсэн утгатай. Системийн мэргэжилтнүүд backtesting-ийг "системийн магадлал"-ын хэмжигдэхүүн гэж тодорхойлдог бөгөөд энэ систем ирээдүйд ажиллах боломжтой эсэхийг өнгөрсөн дахь хэрэгжилтийн статистикаар урьдчилан тодорхойлох оролдлого юм.

Гол зарчим: Backtesting нь "систем ирээдүйд ажиллана" гэдгийг баталдаггүй, харин системийн дүрмийн дагуу арилжаа хийх нь өнгөрсөн хугацаанд ашигтай байсан эсэхийг нотолдог. Ирээдүйн баталгаа биш, магадлалын суурь нотолгоо. Нотолгоогүй систем ашиглахаас нотолгоотой систем ашиглах нь мэдэгдэхүйц эрсдэл бага байдаг.

Backtesting-ийн хэрэгцээ нь маш энгийн. Ихэнх тохиолдолд хүний дурсамж нь сонгомол байдаг. "Энэ стратеги ажилладаг" гэдгийг нотлохын тулд хүн дурсамжиндаа байдаг амжилттай арилжааг санаж, харин алдагдлаа "онцгой нөхцөл байдал" гэж тайлбарлах гэж оролддог. Энэ нь confirmation bias-ийн сонгодог хэлбэр бөгөөд объектив тоон дүн шинжилгээгүйгээр "систем ажилладаг" гэдэг нь зөвхөн сэтгэл зүйн итгэл болж үлдэнэ.

  • Backtesting нь системийн сул талыг эрт илрүүлдэг — ашиг олж байсан систем зах зээлийн тодорхой нөхцөлд (тренд эсвэл range) л ажилладаг гэдгийг бодит мөнгөө алдахаас өмнө мэдэж болно.
  • Системийн параметрүүдийг оновчтой тохируулах (optimization) нь зөвхөн backtesting-ийн орчинд боломжтой — бодит арилжаанд "хамгийн сайн" параметр хайх нь overtrading, системийн тасралтгүй өөрчлөлтийн шалтгаан болдог.
  • Backtesting нь сэтгэл зүыд чухал үүрэг гүйцэтгэдэг — "энэ систем нь өнгөрсөн хугацаанд дөчин хувь нь трендийн зах зээлд алдагдалтай байсан" гэдгийг мэдсэн арилжаанд оролцогч тухайн алдагдлыг "нормал" гэж хүлээн авч, panic хийхгүй байх магадлал өндөр.

Backtesting-ийн үр дүнд хэмжих долоон гол үзүүлэлт

Backtesting хийгдсэний дараа тоон үр дүнг зөв уншиж, зөв дүгнэлт гаргах нь тусдаа ажил юм. Win rate ганцаараа системийн ашигтай байдлыг нотолдоггүй — шаардлагатай үзүүлэлтүүдийг нэгтгэн харснаар л системийн бодит "үр дүн" тодорхойлогдоно.

  1. Үзүүлэлт 01: Win rate — ялалтын хувь: Нийт арилжааны хэдэн хувь нь ашигтай байсныг харуулна. 35%-ийн win rate ч risk/reward харьцаа 1:3 байвал ашигтай систем байж болно. Ялсан арилжаа ÷ Нийт арилжаа
  2. Үзүүлэлт 02: Profit factor — ашгийн коэффициент: Нийт ашгийг нийт алдагдалд харьцуулна. 1.5-аас дээш сайн, 2.0-аас дээш маш сайн гэж тооцогддог. 1.0 = тэнцвэрт байдал, 1.0-аас доош = алдагдалтай систем. Нийт ашиг ÷ Нийт алдагдал
  3. Үзүүлэлт 03: Max drawdown — дээд хугарал: Дансны өндрөөс доод цэг хүртэлх хамгийн том уналтыг харуулна. 20%-аас доош байх нь зохимжтой. Max drawdown нь системийн "хамгийн муу тохиолдол"-ын тусгал. Peak ба Trough-ийн зөрүүний хувь
  4. Үзүүлэлт 04: Sharpe ratio — эрсдэлд тохируулсан өгөөж: Нэгж эрсдэл дэх ашгийн хэмжээ. 1.0-аас дээш сайн, 2.0-аас дээш маш сайн. Хоёр систем адил ашигтай ч Sharpe ratio өндөр нь тогтвортой гэдгийг харуулна. (Өгөөж − Эрсдэлгүй хувь) ÷ Стандарт хазайлт
  5. Үзүүлэлт 05: Average R/R — дундаж эрсдэл/ашгийн харьцаа: Нэг арилжааны дундаж ашиг ба дундаж алдагдлын харьцаа. Win rate болон profit factor-тэй нэгтгэн харвал системийн бүтэн дүр зурагт хүрнэ. Дундаж ашиг ÷ Дундаж алдагдал
  6. Үзүүлэлт 06: Recovery factor — нөхөн сэргэлтийн хүч: Нийт ашгийг max drawdown-д харьцуулна. 2.0-аас дээш байх нь систем drawdown-оос хурдан нөхдөг гэсэн утгатай. Урт хугацааны тогтвортой байдлын чухал үзүүлэлт. Нийт ашиг ÷ Max drawdown
backtesting-ийн үр дүн — EUR/USD day trading систем, 2 жил

Дээрх жишээн дэх систем нь win rate зөвхөн 43.7% байгаа ч profit factor 1.68, Sharpe 1.31 гэх мэт бусад үзүүлэлтүүд нь системийн ашигтай байдлыг нотолж байна. Энэ нь win rate-ийг "ашигтай байдлын цорын ганц шалгуур" гэж боддог олон арилжаанд оролцогчдод хамгийн чухал сургамж агуулдаг жишээ юм.

Backtesting хийх хэрэгслүүд

Backtesting хийх хоёр үндсэн арга байдаг: гараар хийх буюу manual backtesting, болон программ хангамжаар автоматаар хийх. Хоёул тус тусдаа давуу талтай бөгөөд зөв сонголт нь таны арилжааны арга барил, техник ур чадвар, ашиглаж буй платформоос хамаарна.

  1. TradingView: Гараар болон Pine Script-ээр автоматаар backtesting хийх боломжтой. Хамгийн хэрэглэгчдэд ээлтэй интерфейс. Олон хосын түүхийн өгөгдөл нэг дор. Үнэгүй / Про хувилбартай
  2. MT4/MT5 Strategy Tester: Expert Advisor (EA) хэлбэрийн автомат систем шалгахад хамгийн өргөн хэрэглэгддэг. Tick-by-tick нарийвчлалтай шалгах боломжтой. MQL4/5 код шаарддаг. Кодчилолын мэдлэг шаардлагатай
  3. Forex Tester 5: Гараар backtesting хийхэд зориулагдсан тусгай программ. Цагийн хурдыг удирдах, зах зээлийг "replay" хийх, арилжааны журнал автоматаар хөтлөх боломжтой. Төлбөртэй
  4. Python (backtrader, zipline): Хамгийн уян хатан, хамгийн нарийн backtesting хийх боломж. Ихэнх мэргэжлийн алгоритмийн арилжааны оролцогчид энийг ашигладаг. Програмчлалын мэдлэг шаардлагатай. Програмчлал шаарддаг
  5. Excel / Google Sheets: Гараар хийсэн арилжааны дүн шинжилгээ, энгийн системийн тооцоо хийхэд хангалттай. Код мэдлэг шаарддаггүй, хэн бүхэнд хүртээмжтэй эхлэлийн хэрэгсэл. Үнэгүй
  6. Quant Connect / QuantLib: Мэргэжлийн түвшний backtesting, multi-asset, portfolio-д зориулсан платформ. Хэдэн арван жилийн өндөр чанарын өгөгдөл дагалддаг. Мэргэжлийн түвшинд

Хэрэгслээ сонгосны дараа backtesting аргачлалын алхмуудыг дагах нь чухал. Алхмыг алгасах нь backtesting-ийн үр дүнг найдваргүй болгох хамгийн нийтлэг шалтгаан юм.

  1. Системийн дүрмийг баримт бичиг болго Нэвтрэх нөхцөл, гарах нөхцөл, stop-loss байршуулалт, position sizing — бүгдийг маш нарийн, "хэрхэн ч тайлбарлаж болохгүй" түвшинд бичгийн баримт болго. "EMA давталт гарвал" гэдэг нь хангалтгүй — "EMA 20 нь EMA 50-г дээш огтлоод M15 candle хаагдах үед" гэх түвшинд байх ёстой.
  2. Өгөгдлийн хугацааг тодорхойл ба хуваарил Нийт өгөгдлийг "туршилтын" (in-sample) болон "батлагдах" (out-of-sample) гэж хуваарил. Жишээ нь: 2019–2022 он туршилтанд, 2023 он батлагдахад. Out-of-sample өгөгдлийг системийг оновчтой болгоход огт ашиглахгүй — энэ нь "шалгалтын хуудас"-ын үүрэгтэй.
  3. In-sample дата дээр дүрмийг ажиллуул Системийн дүрмийн дагуу яг тэр арилжааг хийж байсан мэтээр бүх арилжааг тэмдэглэ. Гараар хийвэл Forex Tester эсвэл TradingView-ийн "replay" горимыг ашигла — ирээдүйн мэдлэгийг ашиглахгүйн тулд зах зээлийн өнгөрсөн хэсгийг харж хийх шаардлагатай.
  4. Үзүүлэлтүүдийг тооцоолж, дүгнэлт хий Win rate, profit factor, max drawdown, Sharpe ratio-г тооцоолоод системийн "эрүүл мэнд"-ийг дүгнэ. Хэрэв profit factor 1.0-аас доош буюу max drawdown 30%-аас дээш бол системийн дүрмийг засаж, дахин туршилт хий — гэвч нэг хувьсагч нэгэн цагт өөрчил.
  5. Out-of-sample дата дээр баталга In-sample дүрмийг out-of-sample хугацаанд ажиллуулж, in-sample-тэй адил төстэй үр дүн гарвал — систем хэт оновчтой болоогүй ("overfit" болоогүй) гэсэн чухал нотолгоо. In-sample-с их зөрөөтэй бол overfit хийгдсэн гэж үзнэ.

Backtesting-ийн үед тохиолдох түгээмэл 3 алдаа ба тэдгээрийн засварлах

Backtesting хийсэн ч буруу аргачлалаар хийвэл бодит арилжаанд ажиллахгүй төөрөлтэй системийг бий болгодог. Форекс мэргэжлийн арилжааны оролцогчид backtesting-ийн нийтлэг алдааг дараах 3 гэж үздэг бөгөөд эдгээр нь олон туршлагатай арилжаанд оролцогчдыг ч төөрөгдүүлдэг.

  1. Lookahead bias — ирээдүйн мэдлэг ашиглах Backtesting хийж буй хүн тухайн хугацааны дараа юу болсныг мэддэг — энэ мэдлэг нь дурсамжиндаа байгаагүй боловч шийдвэр гаргалтад нөлөөлдөг. Жишээ нь: "Энэ хэв маяг гарсан, дараа нь маш том өгсөлт байсан, тиймд арилжаа нээнэ" гэж шийддэг. Гэвч тухайн мөчид тэр "том өгсөлт"-ийг мэдэхгүй байсан. Засвар: replay горим ашиглах, ирээдүйн свинг, хэв маягийг харж байгаа эсэхийг байнга шалгах.
  2. Overfitting — хэт оновчтой болгох Системийн параметрүүдийг (EMA хугацаа, RSI түвшин, stop-loss зай) in-sample дата дээр хэт нарийн тохируулах нь тухайн өгөгдлийн онцлогийг "цээжилсэн" систем үүсгэдэг — ирээдүйн өгөгдөлд огт ажиллахгүй. "95% ашиглалт" гэх мэт гайхалтай in-sample үр дүн нь ихэнхдээ overfitting-ийн дохио. Засвар: out-of-sample батлагдах өгөгдөл, walk-forward analysis ашиглах.
  3. Spread ба spillage тооцоогүй байдал Олон backtesting систем нь spread, slippage, swap зардлыг оруулдаггүй эсвэл бодитоос бага тооцдог. Ялангуяа scalping систем дээр бодит spread-ийг оруулахад "ашигтай" систем шууд алдагдалтай болдог. Засвар: брокерийн бодит spread-ийг тусгах, мэдээний үеийн slippage-ийг дор хаяж 2–5 pip нэмж тооцох.

Walk-forward analysis тухай: Walk-forward analysis нь backtesting-ийн хамгийн дэвшилтэт хэлбэр юм. Өгөгдлийг жил жилээр хөдөлдөг цонхоор хуваарилж, тухайн жилийн дата дээр оновчтой болгоод, дараагийн жилд шалгадаг. Энэ нь overfit хийгдсэн эсэхийг хамгийн найдвартай тодорхойлдог, гэвч энэ нь хамгийн их цаг, хүч шаарддаг аргачлал юм.

Backtesting нь "зах зээл ийм байсан тул ийм байна" гэдгийг нотолдоггүй. Зах зээлийн нөхцөл байдал өөрчлөгдөх бөгөөд өнгөрсөн дахь ашигтай систем ирээдүйд ашиггүй болж болно. Backtesting бол нотолгооны хэрэгсэл, баталгааны гэрчилгээ биш. Тийм учраас backtesting-ийн дараа дор хаяж 3 сарын demo арилжаа, дараа нь хамгийн бага хэмжээний бодит данс ашигладаг гурван шат дарааллыг дагах нь хамгийн зөв хандлага юм.

Зах зээлийн нөхцөл өөрчлөгдөхөд систем нь "ажиллахаа больсон" шинж тэмдэг гарч эхэлдэг: profit factor буурч, max drawdown нэмэгдэж, win rate тасралтгүй буурч байвал систем шинэ нөхцөлд дасаагүй гэсэн дохио юм. Тэр үед дахин backtesting хийж, системийг шинэчлэх буюу шинэ систем хөгжүүлэх мөчлөг эхэлдэг. Мэргэжлийн арилжааны оролцогчид энэ мөчлөгийг "арилжааны системийн мөчлөг" гэж тодорхойлдог.

Дүгнэлт

Backtesting нь арилжааны системийг бодит мөнгөө алдахаас өмнө өнгөрсөн өгөгдөл дээр шалгах аргачлал юм. Win rate, profit factor, max drawdown, Sharpe ratio зэрэг зургаан гол үзүүлэлтийг нэгтгэн харж, lookahead bias, overfitting, spread тооцоогүй байдал гурван нийтлэг алдаанаас зайлсхийж, out-of-sample батлагдах өгөгдлөөр хаалт хийвэл backtesting нь арилжааны системийн хамгийн найдвартай "туршилтын жолоодлого" болох болно.

Ижил төстэй блог

Backtesting гэж юу вэ? | My Blog