Strasmore Research
শেখা Matt Connorদ্বারা Matt Connor

Open Source Quant Trading বই দিয়ে শেখার পথ

একটি open source quant trading বই data থেকে live order পর্যন্ত পুরো syllabus দেখায়। কোন ধাপে কী শেখায়, beginners কোথায় থামে এবং US stocks-এ কী কাজে লাগে, তা জানুন।

একটি open source quant trading বই হলো একটি বিনামূল্যের জনসাধারণের পাঠ্যক্রম। এতে কাঁচা data থেকে live order পর্যন্ত পুরো প্রক্রিয়াটি লেখা থাকে, যে ক্রমে একজন শিক্ষানবিস সাধারণত বিষয়টি শেখেন সেই ক্রমে। xingwudao-এর GitHub-এ প্রকাশিত XQuant: Everyone Can Be a Quantitative Trader পাণ্ডুলিপিটি এর একটি পরিষ্কার উদাহরণ। August 2026 পর্যন্ত এটি 686 stars পেয়েছে। বইটির নয়টি অধ্যায় প্রায় সব quant পাঠ্যক্রমের অনুসৃত পথটি দেখায়। এই পৃষ্ঠায় সেই পথটি ধাপে ধাপে অনুসরণ করা হয়েছে। প্রতিটি ধাপে থাকা নির্দিষ্ট ব্যর্থতার কারণ চিহ্নিত করা হয়েছে। Chinese A shares থেকে US equities-এ যাওয়ার পর কোন অংশগুলো কার্যকর থাকে, তাও দেখানো হয়েছে।

একটি open source quant trading বইয়ে কী থাকে?

যেকোনও beginner syllabus থেকে branding বাদ দিলে পাঁচটি ধাপ থাকে, এবং সেগুলোর ক্রম একই থাকে: data সংগ্রহ ও পরিষ্কার করা, তা থেকে signal তৈরি করা, historical data-এর বিরুদ্ধে সেই signal পরীক্ষা করা, কত বড় position নেওয়া হবে তা নির্ধারণ করা, তারপর order পাঠিয়ে costs পরিশোধ করা। 14 July 2026-এর 016b66e commit-এ থাকা XQuant-এর সূচিপত্র নয়টি chapter-এ একই বিষয়গুলি কভার করে।

  • Preparation, তারপর chapter one: শুরু থেকে শেষ পর্যন্ত একটি সম্পূর্ণ strategy চালানো।
  • Chapter two, কী কিনবেন: তিনটি ETF দিয়ে শুরু করা।
  • Chapter three, কতটা কিনবেন: তিনটি allocation method-কে পরস্পরের সঙ্গে তুলনা করে মাপা।
  • Chapter four, কখন trade করবেন: rebalancing, stop loss, take profit।
  • Chapter five, কোনও strategy কার্যকর কি না তা বিচার করা: চারটি দৃষ্টিকোণ।
  • Chapter six, দ্রুত সাফল্য ধরে নেবেন না: overfitting প্রতিরোধ করা।
  • Chapter seven, আদর্শ অবস্থা থেকে বাস্তবে: trade execution।
  • Chapter eight, launch-এর পরের পর্যায়: monitoring, diagnosis, iteration।
  • Chapter nine, নতুন সুযোগ খোঁজা: factor research-এর একটি introduction।

এই ক্রমটি বিশেষভাবে গুরুত্বপূর্ণ। Chapter three-তেই position sizing এসেছে, দুইটি backtest chapter-এর আগেই, আর factor research এসেছে একেবারে শেষে। নিজে শেখার পথ সাধারণত এর বিপরীত: আগে factor idea, পরে backtest, আর sizing rule কখনও নয়। একই তারিখে companion exercise repository-তে 333টি star রয়েছে। এটি সম্পূর্ণ code-এর বদলে লিখিত task specification-কে কেন্দ্র করে সাজানো, যেখানে reader একটি AI assistant-কে সেগুলি implement করতে নির্দেশ দেন। আপনি নিজে লেখেননি এমন code পড়তে পারার দক্ষতাই নিচের প্রতিটি বিষয় নির্ধারণ করে, কারণ পরবর্তী প্রতিটি failure একটি implementation detail-এর মধ্যে লুকিয়ে থাকে।

প্রথম ধাপ: আগে ডেটা সংগ্রহ করুন, তারপর ইউনিভার্স নির্ধারণ করুন

ডেটা ব্যবস্থাপনার দৃশ্যমান অংশ হলো পরিষ্কারকরণ: ভুল prints, অনুপস্থিত ট্রেডিং সেশন, split এবং dividend adjustment। কোন কোন নাম নিয়ে গবেষণা করবেন, তা নির্ধারণ করা এই কাজের অদৃশ্য অংশ। Survivorship bias এখানেই ঢুকে পড়ে, কৌশলের একটি লাইন কোড লেখারও আগে। জুন মাসের একটি সপ্তাহে, প্রতি বছর ধরে, যেসব US ticker-এ অন্তত একটি trade print হয়েছিল সেগুলো নিন। তারপর দেখুন, 2026 সালের একই সপ্তাহে এর মধ্যে কতগুলো তখনও trading করছিল।

কুয়েরিজুনের একটি সপ্তাহে লেনদেন হওয়া US ticker এবং জুন 2026-এও কতগুলো লেনদেন হয়েছে
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH june_week AS (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
           ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE toMonth(toTimeZone(window_start, 'America/New_York')) = 6
      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 10 AND 16
      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2016 AND 2026
      AND volume > 0
    GROUP BY year, ticker
),
survivors AS (
    SELECT ticker FROM june_week WHERE year = 2026
)
SELECT year,
       uniqExact(ticker) AS tickers_traded,
       uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors)) AS still_trading_2026,
       round(100 * uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors))
             / uniqExact(ticker), 1) AS still_trading_pct
FROM june_week
GROUP BY year
ORDER BY year
Run this yourself

2016-এর ওই সপ্তাহে যেসব 8224 ticker-এ trade হয়েছিল, তাদের মধ্যে 50%টি 2026-এর একই সপ্তাহে তখনও trading করছিল। বাকিগুলো অধিগ্রহণ করা হয়েছে, merger হয়েছে, নাম পরিবর্তন করেছে, অথবা delist হয়েছে। আজকের roster দিয়ে তৈরি backtest কেবল টিকে থাকা নামগুলো নিয়েই গবেষণা করে। ফলে strategy এমন কোম্পানি ধরে রাখার ফলাফল দেখায়, যেগুলো বেছে নেওয়া হয়েছিল ঘটনার পর। একটি beginner feed কোনো সতর্কীকরণ ছাড়াই আপনাকে এই survivor list দেবে: বিনামূল্যের stock market data API নির্দেশিকায় এই feed-গুলোতে কী থাকে এবং কী থাকে না, তা ব্যাখ্যা করা হয়েছে।

দ্বিতীয় ধাপ: ডেটাকে একটি সিগন্যালে রূপান্তর

সিগন্যাল হলো এমন একটি নিয়ম, যা নির্দিষ্ট সময়ে কোনো শেয়ারের স্কোর নির্ধারণ করে। ফ্যাক্টর হলো এমন একটি সিগন্যাল, যা একই সময়ে অনেক শেয়ারের ক্ষেত্রে কার্যকর বলে আপনি মনে করেন। মোমেন্টাম, ভ্যালু এবং কম ভোলাটিলিটি এর প্রচলিত উদাহরণ। এই পর্যায়ে প্রধান ভুল হলো কোনো একটি নিয়ম কাজ না করা পর্যন্ত পরীক্ষা চালিয়ে যাওয়া। একটি সূচকের এক দশকের ডেটায় মুভিং-অ্যাভারেজ ক্রসওভারের twentyটি ভ্যারিয়েন্ট পরীক্ষা করলে সবসময় একটি বিজয়ী পাওয়া যাবে। তবে সেটিই হবে সেই নিয়ম, যা নয়েজের সঙ্গে সবচেয়ে ভালোভাবে খাপ খেয়েছে। প্রতিরোধের উপায়গুলো আকর্ষণীয় নয়, কিন্তু কার্যকর: পরিমাপের আগে নিয়মটি নির্দিষ্ট করে নিন, ইতিহাসের এমন একটি অংশ আলাদা রাখুন যা আপনি কখনো দেখবেন না, পরীক্ষা করা প্রতিটি ভ্যারিয়েন্টের হিসাব রাখুন এবং সমন্বয়যোগ্য সংখ্যার ব্যবহার কম রাখুন। XQuant ফ্যাক্টর গবেষণার আগে এই বিষয়ের ওপর একটি পূর্ণ অধ্যায় রেখেছে। এটিই সঠিক ক্রম।

তৃতীয় ধাপ: backtest, যেখানে অধিকাংশ beginner থেমে যান

এটি সেই ধাপ, যেখানে self-taught অধিকাংশ project শেষ হয়ে যায়। সেগুলো নীরবে শেষ হয়, একটি আকর্ষণীয় equity curve নিয়ে। উপরের survivorship হলো দুটি ত্রুটির প্রথমটি। Look-ahead bias হলো দ্বিতীয়টি। Strategy এমন একটি সংখ্যা ব্যবহার করে, order দেওয়ার সময় clock সেই সংখ্যা প্রকাশ করেনি। এর সবচেয়ে সাধারণ রূপ হলো আজকের closing price থেকে হিসাব করা একটি rule ব্যবহার করে সেই একই closing price-এ order fill করা। এই অনুমানটি যে দূরত্ব এড়িয়ে যায়, তা পরিমাপ করুন।

কুয়েরিমাসভিত্তিক: এক সেশনের ক্লোজ থেকে পরবর্তী সেশনের ওপেন পর্যন্ত গড় ব্যবধান
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH sessions AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMin(open, window_start) AS session_open,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'NVDA')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
gaps AS (
    SELECT ticker,
           session,
           toFloat64(session_open) AS open_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM sessions
)
SELECT formatDateTime(toStartOfMonth(session), '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(toStartOfMonth(session), 'MMMM yyyy') AS month_label,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'SPY'), 1) AS spy_gap_bps,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'NVDA'), 1) AS nvda_gap_bps
FROM gaps
WHERE prev_close > 0
GROUP BY month, month_label
HAVING countIf(ticker = 'SPY') > 0 AND countIf(ticker = 'NVDA') > 0
ORDER BY month
Run this yourself

July 2026-এ, একটি close এবং পরবর্তী opening print-এর মধ্যকার গড় দূরত্ব SPY-এর জন্য 40.8 basis point এবং NVDA-এর জন্য 107.4 basis point ছিল। একটি basis point হলো percentage point-এর একশ ভাগের এক ভাগ। August 2024 থেকে শুরু করে panel-এর সব 24 মাস শূন্যের ওপরে রয়েছে। যে backtest close-এ সিদ্ধান্ত নিয়ে সেই close-এই order fill করে, সেটি প্রতিটি trade-এ বিনামূল্যে ওই দূরত্বের সুবিধা পায়। কোনো live order তা পায় না। backtesting-এ Look-ahead bias প্রক্রিয়াটি বিশ্লেষণ করে, আর কেন stocks overnight gap করে gap-এর কারণ ব্যাখ্যা করে।

ধাপ চার: কতটা কিনবেন তা নির্ধারণ করুন

এখানে ব্যর্থতার কারণ হলো অনুপস্থিতি। স্বশিক্ষিত অধিকাংশ ট্রেডার কখনও পজিশন সাইজ নির্ধারণের কোনো নিয়ম লিখে রাখেন না। ফলে তাঁদের একটি নিয়ম থাকেই, তবে তা অনিচ্ছাকৃতভাবে তৈরি হয়। সাধারণত প্রতিটি শেয়ারে সমপরিমাণ ডলার বিনিয়োগ করা হয়, অথবা যত নগদ অর্থ অব্যবহৃত থাকে ততটাই বিনিয়োগ করা হয়। সমপরিমাণ ডলার মানেই সমপরিমাণ ঝুঁকি নয়।

কুয়েরিদৈনিক পরিবর্তনের 12 মাস: বার্ষিকীকৃত অস্থিরতা এবং সবচেয়ে খারাপ সেশন, 8টি নাম
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'AAPL', 'NVDA', 'TSLA', 'COIN')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
rets AS (
    SELECT ticker,
           toFloat64(session_close) AS close_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM daily
)
SELECT ticker,
       round(stddevSamp(close_px / prev_close - 1) * sqrt(252) * 100, 1) AS annualized_vol_pct,
       round(abs(min(close_px / prev_close - 1)) * 100, 2) AS worst_day_pct
FROM rets
WHERE prev_close > 0
GROUP BY ticker
ORDER BY annualized_vol_pct DESC
Run this yourself

31 July 2026-এ শেষ হওয়া 12 মাসে, COIN-এর বার্ষিকীকৃত volatility ছিল 68%। প্যানেলের স্থিতিশীল প্রান্তে থাকা SPY-এর ক্ষেত্রে তা ছিল 12.7%। COIN-এর সবচেয়ে খারাপ একক সেশনে আগের ক্লোজের তুলনায় পতন হয়েছিল 13.34%। বিপরীতে, SPY-এর সবচেয়ে খারাপ দিনে পতন ছিল 2.69%। প্রতিটি শেয়ারে একই পরিমাণ ডলার বিনিয়োগ করলে দৈনিক ওঠানামার পরিমাণ সম্পূর্ণ ভিন্ন হয়। একজন শিক্ষানবিশ বাস্তবে যে বিষয়টি অনুভব করেন, তা হলো এই ওঠানামা—সিগন্যাল নয়। Kelly criterion অনুযায়ী position sizing একটি আনুষ্ঠানিক উত্তর দেয়। concentration risk অনানুষ্ঠানিক উত্তরের কাঠামোটি দেখায়।

ধাপ পাঁচ: এক্সিকিউশন এবং ব্যাকটেস্টে বাদ পড়া খরচ

দুটি খরচ আছে, তবে দৃশ্যমান একটি। কমিশন এবং নিয়ন্ত্রক ফি স্টেটমেন্টে দেখা যায়। স্লিপেজ দেখা যায় না। এটি স্ক্রিনে দেখা মূল্য এবং আপনি যে মূল্যে লেনদেন সম্পন্ন করেন, তার পার্থক্য। এর সর্বনিম্ন সীমা হলো bid-ask spread—সেই মুহূর্তে সেরা ক্রয়মূল্য এবং সেরা বিক্রয়মূল্যের কোটের ব্যবধান। ক্রেতারা ask মূল্যে কেনেন এবং বিক্রেতারা bid মূল্যে বিক্রি করেন। তাই একটি round trip-এ spread দুবার অতিক্রম করতে হয়। Spread স্থির নয়।

কুয়েরিET অর্ধঘণ্টা অনুযায়ী গড় কোটেড স্প্রেড: AAPL এবং KO, শুক্রবার 17 জুলাই 2026
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH quotes AS (
    SELECT ticker,
           toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE) AS bucket,
           toFloat64(ask_price - bid_price) / toFloat64((ask_price + bid_price) / 2) * 10000 AS spread_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'KO')
      AND sip_timestamp >= toDateTime('2026-07-17 13:00:00')
      AND sip_timestamp < toDateTime('2026-07-17 21:00:00')
      AND bid_price > 0
      AND ask_price > bid_price
)
SELECT formatDateTime(bucket, '%H:%i') AS et_time,
       round(avgIf(spread_bps, ticker = 'AAPL'), 2) AS aapl_spread_bps,
       round(avgIf(spread_bps, ticker = 'KO'), 2) AS ko_spread_bps
FROM quotes
WHERE spread_bps > 0 AND spread_bps < 500
GROUP BY et_time
HAVING countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'KO') > 0
ORDER BY et_time
Run this yourself

প্যানেলে একটি শুক্রবারের 16টি আধা-ঘণ্টার bucket দেখানো হয়েছে। এগুলো বাজার খোলার ঘণ্টাধ্বনির আগের 09:00তম bucket থেকে বাজার বন্ধ হওয়ার পরের 16:30তম bucket পর্যন্ত বিস্তৃত। প্রথম bucket-এ AAPL-এর quoted spread ছিল 10.53 basis points এবং শেষ bucket-এ 3.27 basis points। KO-এর ক্ষেত্রে তা ছিল যথাক্রমে 28.87 এবং 8.04। দিনের সবচেয়ে tight quote চার্টের মাঝামাঝি অংশে, এই দুই প্রান্তের মধ্যে রয়েছে। বাজারের সবচেয়ে liquid দুটি নামের ক্ষেত্রে open-এ লেনদেন করা একটি strategy, দিনের মাঝামাঝি সময়ে একই strategy-র তুলনায় ভিন্ন খরচ বহন করে। আর zero-cost assumption-সহ একটি backtest কোনোটিরই সঠিক মূল্য নির্ধারণ করে না। Bid-ask spread সংখ্যাটি নির্ধারণ করে, open-এ spread কেন বাড়ে curve-টির ব্যাখ্যা দেয়, এবং একটি stock trade করতে কত খরচ হয় একটি পূর্ণ round trip-এর মোট খরচ হিসাব করে। একটি পরিষ্কার backtest এবং real money ব্যবহারের মধ্যে আরও একটি ধাপ রয়েছে: real money ব্যবহারের আগে paper trading

A শেয়ারের কারিকুলামের কোন অংশ US স্টকে প্রয়োগ করা যায়?

XQuant এবং এর সমপর্যায়ের পদ্ধতিগুলো চীনের A শেয়ার ও ETF-এর জন্য তৈরি। পদ্ধতিটি মূল কাঠামোসহ প্রয়োগ করা যায়: ধাপগুলোর ক্রম, সংজ্ঞাগুলো, অতিরিক্ত ফিটিং নিয়ন্ত্রণের শৃঙ্খলা, খরচকে পরে বিবেচনা না করে আলাদা line item হিসেবে লেখার অভ্যাস, এবং position sizing-এর সব গাণিতিক হিসাব। Price bar সর্বত্রই price bar। তবে এগুলোর চারপাশের বিধিনিয়ম একইভাবে প্রযোজ্য নয়।

  • A শেয়ারে প্রকৃত T+1 বিধিনিষেধ আছে: আজ কেনা স্টক পরবর্তী সেশন পর্যন্ত বিক্রি করা যায় না। US-এর T+1 হলো settlement-এর প্রচলিত নিয়ম; এটি intraday লেনদেনে কোনো বাধা সৃষ্টি করে না। তবে pattern day trader rule $25,000-এর কম অর্থ থাকা margin account-এ পাঁচটি business day-তে সর্বোচ্চ তিনটি day trade সীমাবদ্ধ করে।
  • Main-board A শেয়ারে দৈনিক মূল্যপরিবর্তন 10%-এ সীমাবদ্ধ। Growth board-এ এই সীমা 20%। US স্টকে দৈনিক কোনো সীমা নেই। সেখানে volatility band এবং news halt-এর কারণে trading pause হয়।
  • A শেয়ারের order 100 শেয়ারের lot-এ লেনদেন হয়। অনেক US broker fractional share পূরণ করে। ফলে position sizing-এর কোনো নিয়ম বাস্তবে কীভাবে প্রকাশ করা যাবে, সেটিই বদলে যায়।
  • চীন বিক্রির দিকে stamp duty আরোপ করে। US-এ বিক্রেতারা ভিন্ন মাত্রা ও কাঠামোর সামান্য regulatory fee পরিশোধ করেন।
  • Session structure-ও ভিন্ন। Shanghai ও Shenzhen-এ midday break রয়েছে। US stock market hours বিরতিহীনভাবে চলে এবং closing auction-এ শেষ হয়।

কোনো course থেকে cost বা timing-এর ধ্রুবক নিজের code-এ কপি করা হলে, প্রথম live order দেওয়ার সময় সেটি সমস্যার কারণ হওয়ার অপেক্ষায় থাকা একটি bug।

README নয়, রেফারেন্স পিন করুন

2026 সালের August পর্যন্ত repository-তে কোনো tagged release নেই। তাই স্থায়ী citation হিসেবে ব্যবহারযোগ্য হলো একটি commit: 016b66e, যার তারিখ July 14, 2026। এখনও লেখা হচ্ছে এমন একটি বইয়ের ক্ষেত্রে এটি গুরুত্বপূর্ণ। অধ্যায়ের নম্বর বদলে যেতে পারে, README file পুনর্লিখিত হতে পারে, heading সরানো হতে পারে, এবং chapter seven-এ নির্দেশ করা একটি link নীরবে অন্য কিছুর দিকে নির্দেশ করতে পারে। commit ও তারিখ উল্লেখ করুন, অধ্যায়ের নম্বরের বদলে আপনি যে title পড়েছেন তা লিখে রাখুন, তাহলে এক বছর পরেও আপনার নোট যাচাই করা যাবে। Manuscript-টি CC BY-NC-SA 4.0-এর অধীনে প্রকাশিত হয়েছে, আর build script-গুলো MIT-এর অধীনে। একই শৃঙ্খলাই syllabus-এর শেষ শিক্ষাও: pinned data snapshot থেকে যে strategy পুনরায় চালানো যায় না, সেটি result নয়, কেবল একটি গল্প।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

বিনামূল্যের open source বই থেকে কি quant trading শেখা যায়?

পদ্ধতির রূপরেখার জন্য যায়। আর open manuscript থাকলে আপনি প্রতিটি দাবির উৎসের সঙ্গে মিলিয়ে দেখতে পারেন। তবে কোনো বই আপনার নিজস্ব বাজারের data, খরচ এবং নিয়ম সরবরাহ করতে পারে না। এখানেই একটি নির্দিষ্ট exchange-এর জন্য লেখা syllabus আপনার broker-এর সঙ্গে আর সামঞ্জস্যপূর্ণ থাকে না।

Quant curriculum-এর কোন পর্যায়ে অধিকাংশ শিক্ষানবিশ আটকে যান?

Backtest পর্যায়ে। সেখানে দুটি ত্রুটি ফলাফলকে অতিরিক্ত ভালো দেখায়। একটি হলো survivorship bias, যেখানে পরে তৈরি করা universe ব্যবহার করা হয়। অন্যটি হলো look-ahead bias, যেখানে clock-এ price print হওয়ার আগেই সেই price-এ order fill করা হয়। 2016-এর ওই জুন সপ্তাহে trading হওয়া ticker-গুলোর মাত্র 50% এক দশক পরও trading করছিল।

Survivorship bias এবং look-ahead bias-এর মধ্যে পার্থক্য কী?

Survivorship bias হলো universe-সংক্রান্ত সমস্যা। যে নামগুলো পরীক্ষায় নেওয়া হয়েছে, সেগুলো টিকে থাকার ভিত্তিতে বাছাই করা হয়েছিল। Look-ahead bias হলো timing-সংক্রান্ত সমস্যা। Strategy এমন একটি সংখ্যা ব্যবহার করে, order দেওয়ার কথা যে সময়ে, তখন সংখ্যাটি বিদ্যমান ছিল না। প্রথমটি roster-কে কৃত্রিমভাবে বড় দেখায়, দ্বিতীয়টি fill-কে কৃত্রিমভাবে ভালো দেখায়।

Chinese A share quant course কি US stocks-এর ক্ষেত্রে কার্যকর?

পদ্ধতিটি কার্যকর। কিন্তু market rules একই নয়। ধাপগুলোর ক্রম, overfitting নিয়ন্ত্রণ এবং cost accounting বজায় রাখুন। এরপর কোনো অর্থ বিনিয়োগের আগে data plumbing, T+1 selling restriction, daily price limits এবং lot sizes-এর US সমতুল্য ব্যবহার করুন।


উপরের প্রতিটি panel একটি stored query, যার নিচে SQL দেওয়া আছে। একটি খুলে ticker বা তারিখ বদলান এবং Strasmore terminal-এ নিজেই চালান।

#quant#learning path#backtesting#open source#beginners