உங்கள் Backtest, Live Trading-உடன் பொருந்தாததற்கு ஒன்பது காரணங்கள்
இந்தக் கட்டுரை ஆங்கிலத்திலிருந்து மொழிபெயர்க்கப்பட்டது. மூலக் கட்டுரையை ஆங்கிலத்தில் படியுங்கள்
ஒரு backtest-ம் live strategy-யும் வேறுபடுவதற்கு அடையாளம் காணக்கூடிய ஒன்பது காரணங்கள் உள்ளன. Slippage அவற்றில் ஒன்று மட்டுமே. பெரிய காரணங்கள் இவை: fill price, நீங்கள் model செய்யாத செலவுகள், backtest பார்க்க முடியாத ஒரு bar-க்குள் நடக்கும் price நகர்வுகள், மற்றும் எந்த simulation-ம் மீண்டும் உருவாக்க முடியாத live நடத்தை, உதாரணமாக reject ஆன order-கள், partial fill-கள். நீங்கள் எந்தக் காரணத்தைப் பார்க்கிறீர்கள் என்று தெரிந்தால், இந்த இடைவெளியின் பெரும்பகுதியை அளவிட முடியும்.
Strategy-ஐ live-ஆக ஓட்டிய ஒவ்வொரு trader-க்கும் இந்த அனுபவம் வந்திருக்கும். Backtest ஒரு சுத்தமான equity curve காட்டியது. ஆறு வாரம் கழித்து live account வேறு எங்கோ இருக்கிறது, ஆனால் strategy-யில் ஒரு வரி கூட மாறவில்லை.
வழக்கமான விளக்கம் "slippage". அது உண்மை, ஆனால் கிட்டத்தட்ட பயனற்றது. முழுப் பட்டியல் இதோ, ஒவ்வொன்றும் எவ்வளவு சேதம் செய்கிறது என்ற தோராயமான வரிசையில்.
ஒன்பது காரணங்கள் ஒரே பார்வையில்
| # | காரணம் | யாரை அதிகம் பாதிக்கிறது |
|---|---|---|
| 1 | Fill price | Thin strike-கள், பெரிய order-கள் |
| 2 | ஒரு bar-க்குள் நடக்கும் நகர்வுகள் | இறுக்கமான stop, target-கள், scalping |
| 3 | விடுபட்ட செலவுகள் | High-frequency strategy-கள் |
| 4 | Result தரவே கூடாத run-கள் | பழைய report-களை புதியவற்றுடன் ஒப்பிடும் எவரும் |
| 5 | வெளியிலிருந்து வரும் signal-கள் | TradingView, webhook, API மூலம் trigger ஆகும் strategy-கள் |
| 6 | Liquidity, partial fill-கள், freeze limit-கள் | Far OTM option-கள், multi-leg position-கள், பெரிய size |
| 7 | Broker பக்கப் பிரச்சினைகள் | எல்லோரும், பெரும்பாலும் volatile நாட்களில் |
| 8 | Overfitting மற்றும் look-ahead bias | அதிகமாக tune செய்யப்பட்ட strategy-கள் |
| 9 | Contract மாறிவிட்டது | Lot size அல்லது expiry மாற்றத்துக்கு முன் test செய்த எதுவும் |
1. Fill price தான் வேறுபாட்டின் மிகப்பெரிய ஒற்றை மூலம்
Backtest உங்கள் trade-ஐ historical bar data-விலிருந்து எடுத்த ஒரு price-ல் fill செய்கிறது. Live-ல், உங்கள் order வந்து சேரும் அந்த நொடியில் order book என்ன தருகிறதோ அதுதான் கிடைக்கும். Money-க்கு அருகில் உள்ள liquid NIFTY option-ல் அந்த இரண்டு எண்களும் நெருக்கமாக இருக்கலாம். Thin strike-ல் அப்படி இருக்காது.
2. ஒரு bar-க்குள் நடக்கும் price நகர்வுகள் கண்ணுக்குத் தெரியாது
Tick-களுக்குப் பதிலாக bar-களை replay செய்யும் engine, ஒவ்வொரு bar-லும் சில price-களை மட்டுமே பார்க்கிறது, அவற்றுக்கு இடையிலான பாதையைப் பார்ப்பதில்லை. ஒரு bar-க்குள் சிறிது நேரம் மட்டும் தொட்ட level முழுவதுமாகத் தவறவிடப்படலாம். உங்கள் stop-ம் target-ம் ஒரே bar-ன் range-க்குள் இருந்தால், எது முதலில் hit ஆனது என்று backtest-க்குத் தெரியாது.
ஒரே bar, எதிரெதிர் முடிவுகள். Bar data-வால் அவற்றை வேறுபடுத்த முடியாது
இது bar data-வின் இயல்பு, குறைபாடு அல்ல. ஆனால் இது ஒரு குறிப்பிட்ட வகை strategy-ஐ உண்மையைவிட நன்றாகக் காட்டுகிறது: இறுக்கமான target-உடன் இறுக்கமான stop, scalping, மற்றும் entry-யும் exit-ம் ஒரே bar-ல் trigger ஆகக்கூடிய எதுவும்.
3. நீங்கள் on செய்யாத செலவுகள்
எந்த result-ஐயும் நம்புவதற்கு முன் செலவுகளை அமையுங்கள். Report-ன் cost settings brokerage, slippage, STT, exchange கட்டணங்கள், SEBI கட்டணங்கள், GST, stamp duty ஆகியவற்றை உள்ளடக்குகின்றன, மேலும் gross, net result-களை அருகருகே காட்டுகின்றன.
மாதம் சில ஆயிரம் ரூபாய் இலக்கு வைக்கும் strategy-க்கு, இது ஒரு rounding error அல்ல. இதுவே strategy. மேலும் விவரங்கள் slippage-ஐப் புரிந்துகொள்வது-ல்.
4. எதுவும் தராத run உங்களுக்கு ஏதோ சொல்கிறது
ஒரு backtest ஒரு trade கூட fill செய்யாமல் முடியலாம். முந்தைய engine-ல், அப்படிப்பட்ட run-கள் முழுமையானவை போலத் தோன்றித் திரும்பி வரலாம், ஒரு மெலிந்த report-ஐ failure என்று அல்லாமல் மெலிந்த result என்று படிக்கக்கூடும்.
FastBT அதற்குப் பதிலாக மறுக்கிறது: ஒரு run நேர்மையான report தர முடியாவிட்டால், அது அதைச் சொல்கிறது, credit தானாகவே refund ஆகிறது. முன்பு report தந்த strategy இப்போது குறைவான result-களைத் தந்தால், அல்லது மறுக்கப்பட்டால், அது engine அதிக உண்மையாக இருப்பதால், திறன் குறைந்ததால் அல்ல. பழைய report-ஐ புதியதுடன் ஒப்பிடும்போது, strategy பலவீனமாகிவிட்டது என்று முடிவு செய்வதற்கு முன் இதை முதலில் சரிபாருங்கள்.
5. சில strategy-களை backtest செய்யவே முடியாது
உங்கள் strategy வெளியிலிருந்து அனுப்பப்படும் signal-களில் fire ஆனால், உதாரணமாக TradingView alert, custom webhook அல்லது third-party API, replay செய்ய எதுவும் இல்லை. Historical price data இருக்கிறது; உங்கள் signal வரலாறு இல்லை. அதற்காக நீங்கள் உருவாக்கும் எந்த backtest-ம் signal-ன் ஒரு தோராயத்தை test செய்கிறது, signal-ஐ அல்ல.
இவற்றை Live Offline-ல் ஓட்டி சரிபாருங்கள்: strategy ஓடி ஒவ்வொரு trade-ஐயும் பதிவு செய்கிறது, ஆனால் exchange-க்கு எதுவும் அனுப்பப்படுவதில்லை. உண்மையான trigger பாதையைச் சோதிக்கும் ஒரே சூழல் இதுதான். நீங்கள் TradingView பயன்படுத்தினால், TradingView strategy-களை Tradetron-உடன் இணைப்பது பாருங்கள்.
6. Liquidity, partial fill-கள் மற்றும் freeze limit-கள்
உங்கள் order fill ஆகும் என்று backtest கருதுகிறது. Live-ல், அது பாதி fill ஆகலாம், தாமதமாகலாம், அல்லது fill ஆகாமலே போகலாம். இது far out-of-the-money option-களிலும், volatility நகரும்போது strategy தேர்ந்தெடுக்கும் illiquid strike-களிலும், size-ஐ அதிகரிக்கும் எதிலும் அதிகம் பாதிக்கிறது. Exchange-ன் freeze quantity-க்கு மேல் ஒரே order reject ஆகிறது, அதைப் பிரிக்க வேண்டும், இது உங்கள் average price-ஐயும் timing-ஐயும் மாற்றுகிறது.
Multi-leg position-கள் இதை இன்னும் மோசமாக்குகின்றன. நான்கு leg அமைப்பில் ஒரு leg fill ஆகத் தவறினால், நீங்கள் test செய்த strategy-ஐ இனி ஓட்டவில்லை; எதிர்பாராத ஒரு position-ஐ வைத்திருக்கிறீர்கள். உங்கள் strategy அந்த நிலையைக் கையாள்கிறதா என்று உறுதி செய்யுங்கள்.
7. Broker பக்க யதார்த்தம்
உங்கள் strategy-க்கும் exchange-க்கும் நடுவில் ஒரு broker இருக்கிறார், அவருக்கென்று சொந்த failure வகைகள் உள்ளன: order rejection-கள், margin பற்றாக்குறை, expire ஆன session-கள், rate limit-கள், அவ்வப்போது latency. Backtest-ல் இவை எதுவும் இல்லை; ஒவ்வொரு order-ம் உடனே ஏற்கப்படுகிறது.
எனவே live result-களில் நடக்காத, அல்லது தாமதமாக நடந்த trade-களின் ஒரு வால் இருக்கும், அவை சமமாகப் பரவியிருக்காது. Margin மிக இறுக்கமாகவும் order flow மிக அதிகமாகவும் இருக்கும் volatile நாட்களில் அவை குவிகின்றன, அவைதான் பெரும்பாலும் உங்கள் strategy நம்பியிருக்கும் நாட்கள்.
8. Overfitting, look-ahead bias, அவற்றை எப்படிக் கண்டுபிடிப்பது
Backtest நன்றாகத் தெரியும் வரை settings-ஐ மாற்றிக்கொண்டே இருந்தால், அந்தக் குறிப்பிட்ட வரலாற்றுக் காலத்துக்கு strategy-ஐ ஓரளவு fit செய்துவிட்டீர்கள். மூன்று அறிகுறிகள்:
- Trade எண்ணிக்கை. முப்பது trade-களில் கட்டப்பட்ட result, chart அணிந்த வெறும் noise.
- Regime coverage. Trending market-ன் ஆறு மாதங்கள் ஒரே ஒரு regime-ஐ மட்டுமே test செய்கின்றன.
- Look-ahead bias. Rule fire ஆகும் நேரத்தில் கிடைக்காத தகவலைப் பயன்படுத்தும் rule, பெரும்பாலும் அதே bar அல்லது session-ல் பின்னால் வரும் ஒரு மதிப்பு. Tradetron போன்ற no-code builder, நீங்கள் arbitrary code-க்குப் பதிலாக நிலையான building block-களிலிருந்து condition-களை அமைப்பதால், அமைப்பிலேயே இதைக் கட்டுப்படுத்துகிறது, ஆனால் இது முழு உத்தரவாதம் அல்ல. Repainting indicator, அதாவது பின்னால் கடந்த மதிப்புகள் மாறும் indicator, இதே அறிகுறியை உண்டாக்கும்.
ஒரு backtest வழக்கத்துக்கு மாறாகச் சுத்தமாகத் தெரிந்தால், ஏதாவது condition எதிர்காலத் தகவலைக் கொண்டு மட்டுமே கணக்கிடப்பட்டிருக்க முடியுமா என்று சரிபாருங்கள். பிறகு test window-ஐ விரிவாக்குங்கள்: பல வருட data கிடைக்கும்போது ஆறு மாதம் மட்டும் test செய்ய பெரிய காரணம் இல்லை. Overfitting உங்களை எப்படி ஏமாற்றுகிறது என்று தவிர்க்க வேண்டிய backtesting தவறுகள் காட்டுகிறது.
9. உங்கள் backtest வேறொரு contract-ஐ விவரிக்கலாம்
Contract விவரக்குறிப்புகள் மாறுகின்றன. NSE, January 2026 series முதல் index derivative lot size-களை மாற்றியது: NIFTY 75-லிருந்து 65 ஆகவும், BANK NIFTY 35-லிருந்து 30 ஆகவும். Weekly expiry-களும் மாறியுள்ளன: NSE-ல் இப்போது ஒரே ஒரு weekly index expiry (NIFTY, செவ்வாய்க்கிழமை) உள்ளது, BANK NIFTY-க்கு monthly expiry-கள் மட்டுமே. பழைய காலங்களுக்கான backtest, பழைய contract size-களில் ரூபாய் எண்களைக் காட்டுகிறது, இப்போது இல்லாத expiry-களில் trade செய்யலாம். சதவீத result-கள் பொதுவாகப் பயனுள்ள தகவல் தருகின்றன; முழுமையான லாபம், நஷ்டம், drawdown எண்கள் அப்படி இல்லை. Lot size மாற்றத்துக்குப் பிறகு என்ன சரிபார்க்க வேண்டும் பாருங்கள்.
Coverage முன்பு போல் பெரிய கட்டுப்பாடு அல்ல: FastBT, NSE F&O மற்றும் cash, BSE, MCX, crypto, US market-களில் ஓடுகிறது, custom Python மற்றும் list அடிப்படையிலான strategy-களையும் support செய்கிறது. பழைய engine cover செய்யாத ஒரு market-க்காக முன்பு ஏதாவது மாற்று வழி பயன்படுத்தியிருந்தால், அந்த மாற்று வழி இப்போது பிழையைக் கூட்டிக்கொண்டிருக்கலாம்.
இடைவெளியை எப்படிக் குறைப்பது
- Run செய்வதற்கு முன்: செலவுகளை on செய்யுங்கள், வழக்கமானதை விட pessimistic ஆன slippage assumption பயன்படுத்துங்கள்.
- Run செய்வதற்கு முன்: Strategy-ஐ பாதித்திருக்க வேண்டிய ஒரு காலத்தையும் சேர்க்கும் வரை window-ஐ விரிவாக்குங்கள்.
- Run செய்த பிறகு: அர்த்தமுள்ள எண்ணிக்கையில் trade-கள் சேரும் அளவுக்கு Live Offline-ல் test செய்யுங்கள். Rejection-கள், partial fill-கள், தாமதங்கள், வெளி signal-களைக் காட்டும் ஒரே படி இதுதான்.
- Run செய்த பிறகு: மிகச் சிறிய உண்மையான size-ல் live போங்கள், size-ஐ அதிகரிக்கும் முன் live fill-களை backtest fill-களுடன் trade by trade ஒப்பிடுங்கள்.
Live strategy-ஐ அதன் backtest-உடன் எப்படி ஒப்பிட்டுச் சரிபார்ப்பது
கிட்டத்தட்ட யாரும் இதைச் செய்வதில்லை, ஆனால் தெளிவற்ற ஏமாற்றத்தை, நடவடிக்கை எடுக்கக்கூடிய ஒரு எண்ணாக இது மாற்றுகிறது. அதே காலத்துக்கான உங்கள் backtest report-ன் trade-களையும் உங்கள் live trade log-ஐயும் download செய்யுங்கள், பிறகு நான்கு கேள்விகளை வரிசையாகப் பாருங்கள்:
| கேள்வி | பதில் இல்லை அல்லது பெரியது என்றால் | அதன் அர்த்தம் |
|---|---|---|
| அதே trade-கள் trigger ஆனதா? Entry நேரங்களை ஒப்பிடுங்கள். | Live வேறு அல்லது குறைவான trade-களை எடுத்தது | இது signal அல்லது execution பிரச்சினை, cost பிரச்சினை அல்ல. செலவுகளை மாற்றுவது இதைச் சரி செய்யாது |
| Fill வித்தியாசம் எவ்வளவு? ஒவ்வொரு trade-க்கும் சராசரி live fill கழித்தல் backtest fill. | நிலையான ஒரு இடைவெளி | இந்த strategy-க்கான உங்கள் உண்மையான slippage அதுதான். அதைச் செலவுகளில் போட்டு மீண்டும் run செய்யுங்கள்; பெரும்பாலும் இடைவெளியின் பெரும்பகுதி இங்கே மூடிவிடும் |
| மீதி என்ன இருக்கிறது? | சிறிய, நிலையான மீதம் | பொதுவாக partial fill-கள் அல்லது strategy deploy செய்யப்பட்ட விதம். சிறியதாக இருந்தால் எதிர்பார்க்கக்கூடியதே |
| Volatility-உடன் மீதம் வளர்கிறதா? | Market அதிகம் நகர்ந்த நாட்களில் மிக மோசம் | Liquidity மற்றும் broker விளைவுகள் (காரணங்கள் 6 மற்றும் 7). Logic-ஐ மீண்டும் எழுதுவதால் அல்ல, size மற்றும் order handling மூலம் சரி செய்யுங்கள் |
Report-ஐயே படிப்பதற்கு, backtesting வழிகாட்டி மற்றும் ஒரு strategy-யின் performance-ஐ எப்படி மதிப்பிடுவது பாருங்கள். இந்த pattern-கள் platform முழுவதும் எப்படி நடக்கின்றன என்று எங்கள் State of Retail Algo Trading in India 2026 report காட்டுகிறது.
அடிக்கடி கேட்கப்படும் கேள்விகள்
என் backtest லாபம் காட்டுகிறது, ஆனால் live trading ஏன் லாபம் தரவில்லை?
மிகப் பொதுவான காரணங்கள்: model செய்யப்படாத செலவுகள், fill price-ல் வித்தியாசங்கள், மற்றும் partial fill-கள், reject ஆன order-கள் போன்ற எந்த simulation-ம் மீண்டும் உருவாக்க முடியாத live நடத்தை. அது slippage தான் என்று கருதுவதற்குப் பதிலாக, எது பொருந்துகிறது என்று கண்டுபிடிக்க trade by trade ஒப்பிடுங்கள்.
Tradetron-ன் backtest-ல் worst price-ஐ assume செய்ய முடியுமா?
இல்லை. Best price, worst price, bid-ask average ஆகியவை deploy செய்த strategy-க்கான live order-execution settings, backtest option-கள் அல்ல. அதற்குப் பதிலாக slippage cost மூலம் pessimistic fill-ஐ model செய்யுங்கள்.
Backtest-ல் brokerage மற்றும் வரிகள் சேர்க்கப்படுமா?
சேர்க்கலாம். Brokerage, slippage, STT, exchange கட்டணங்கள், SEBI கட்டணங்கள், GST, stamp duty ஆகியவற்றை உள்ளடக்கிய செலவுகளை அமையுங்கள், report gross, net result-களை அருகருகே காட்டும்.
என் strategy முன்பை விட ஏன் குறைவான backtest result-களைத் தருகிறது?
FastBT நேர்மையாக உருவாக்க முடியாத report-ஐத் தர மறுக்கிறது, fill எதுவும் இல்லாத முழுமையானது போல் தெரியும் run-ஐத் தருவதற்குப் பதிலாக credit-ஐ தானாக refund செய்கிறது. அந்த நிலையில் குறைவான result-கள் என்றால் engine அதிகத் துல்லியமாக இருக்கிறது என்று அர்த்தம்.
TradingView alert-களில் ஓடும் strategy-ஐ backtest செய்ய முடியுமா?
அர்த்தமுள்ள வகையில் முடியாது. வெளியிலிருந்து trigger ஆகும் strategy-கள், வரலாற்றில் ஒருபோதும் பதிவு செய்யப்படாத signal-களில் fire ஆகின்றன, எனவே replay செய்ய எதுவும் இல்லை. அதற்குப் பதிலாக அவற்றை Live Offline-ல் test செய்யுங்கள்.
எவ்வளவு slippage assume செய்ய வேண்டும்?
ஊகிப்பதற்குப் பதிலாக அளவிடுங்கள். சிறிய size-ல் strategy-ஐ live-ஆக ஓட்டுங்கள், ஒவ்வொரு live fill-ஐயும் backtest fill-உடன் ஒப்பிடுங்கள், சராசரி வித்தியாசத்தைப் பயன்படுத்துங்கள்.
January 2026-க்கு முந்தைய backtest result-கள் இன்னும் செல்லுபடியாகுமா?
சதவீத result-கள் பொதுவாகப் பயனுள்ள தகவல் தருகின்றன, ஆனால் ரூபாய் எண்கள் பழைய lot size-களைப் பிரதிபலிக்கின்றன, test செய்த சில expiry-கள் இப்போது இல்லை. Capital-ஐ size செய்ய அவற்றைப் பயன்படுத்தும் முன் மீண்டும் run செய்யுங்கள்.