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

AI trading track record কীভাবে যাচাই করবেন

প্রকাশ্য AI trading track record যাচাই করতে 6টি প্রমাণ দেখুন: timestamp, benchmark, trading cost ও sample length কেন জরুরি, এবং 1 live quarter কেন যথেষ্ট নয়।

AI trading-এর track record তখনই যাচাইযোগ্য, যখন কোনো অপরিচিত পাঠক ফলাফল প্রকাশের আগেই বিদ্যমান রেকর্ড থেকে সেটি পুনর্গঠন করতে পারেন। অনলাইনে প্রকাশিত খুব কম রেকর্ড এই মানদণ্ড পূরণ করে। নিচের checklist-টি পাঠক প্রায় 2 মিনিটে প্রয়োগ করতে পারেন। এর 4টি বিষয়ে market data ব্যবহার করা হয়েছে: benchmark, timestamp, trading cost এবং sample length।

কী একটি AI trading track record-কে যাচাইযোগ্য করে?

6টি বৈশিষ্ট্য। প্রতিটি বিষয়ই এমন কিছু, যা আপনি খুঁজে দেখতে পারেন; এটি মতামতের বিষয় নয়।

  1. ফলাফল জানা হওয়ার আগে entry প্রকাশিত হয়েছে। Timestamp এমন কোথাও থাকতে হবে, যেখানে লেখক পরে তা বদলাতে পারবেন না—যেমন সেই সময়ে push করা commit বা broker statement। অতীতের trade-এর তালিকা অতীত সম্পর্কে একটি দাবি, trade-এর রেকর্ড নয়।
  2. একটি benchmark, শুরুতেই নির্ধারিত এবং পরে অপরিবর্তিত। নির্দিষ্ট সময়সীমায় নির্দিষ্ট fund-এর সঙ্গে তুলনা না করা পর্যন্ত “বাজারকে হারানো” কথাটির কোনো অর্থ নেই।
  3. প্রতিবেদিত সংখ্যার মধ্যে cost অন্তর্ভুক্ত। এর মধ্যে commission, regulatory fee, short position-এর borrow cost এবং entry ও exit—উভয় ক্ষেত্রেই দেওয়া spread থাকতে হবে।
  4. সম্পাদনা করা নয়, version করা runbook। কোনো public repository record-টির ভিত্তি হলে কার্যকর link-টি tagged release বা commit hash-এ যেতে হবে। Default branch-এর link আজকের strategy দেখায়। মার্চে যে strategy trade করেছে, সেটি আজকের strategy নাও হতে পারে।
  5. ক্ষতিগ্রস্ত position-সহ প্রতিটি position এবং প্রতিটি account। চলমান 5টি account-এর মধ্যে 1টির ফল প্রকাশ করা selection।
  6. Fill বাস্তবসম্মত হওয়ার মতো পর্যাপ্ত starting capital। কয়েকশো ডলারের notional-এ এমন position “ধরে রাখা” যায়, যা কোনো বাস্তব order প্রকাশিত দামে পূরণ করত না।

এই বিষয়গুলোর কোনো একটি অনুপস্থিত থাকলেই record-টি স্বয়ংক্রিয়ভাবে অসৎ হয় না। তবে এটি unverifiable। এটাই বেশি প্রচলিত এবং পাঠকের জন্য সমানভাবে অকার্যকর।

কেন benchmark আগে থেকেই নির্ধারিত হতে হবে

ফলাফল প্রকাশের পর benchmark বেছে নেওয়া finance-এর সবচেয়ে সহজ সুবিধা। একই 2026 সালের 6 মাসে 6টি বিস্তৃত US index fund-এর শুধু price change:

কুয়েরিছয়টি US ইনডেক্স ফান্ড, একই সময়সীমা: মূল্য রিটার্ন, January 2 থেকে June 30, 2026
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH rets AS (
    SELECT ticker,
           round(100 * (toFloat64(argMax(close, window_start))
                        / toFloat64(argMin(close, window_start)) - 1), 2) AS return_pct
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'DIA', 'RSP', 'MDY')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker
)
SELECT ticker,
       return_pct,
       round(return_pct - min(return_pct) OVER (), 2) AS points_above_worst
FROM rets
ORDER BY return_pct DESC
Run this yourself

IWM ফেরত দিয়েছে 21.12% এবং DIA ফেরত দিয়েছে 8.42%। ফলে অভিন্ন সময়সীমায় 6-এর সর্বোচ্চ ও সর্বনিম্ন ফলাফলের মধ্যে 12.7 পয়েন্ট ব্যবধান রয়েছে। সময়সীমা শেষ হওয়ার পর কোনটির সঙ্গে তুলনা করা হবে তা বেছে নেওয়া মানে পুরো ব্যবধানটি পাওয়া, কোনো strategy-কে কিছু না করেই। এগুলো dividend-এর আগের price return। আরেকটি measurement rule শুরুতেই উল্লেখ করা উচিত (মাসিক return কীভাবে মাপা হয়-এ total-return arithmetic ব্যাখ্যা করা হয়েছে)।

কেন entry timestamp-ই পুরো দাবির ভিত্তি

দাম ওঠার পরে দেখা entry একটি chart-এর বর্ণনা মাত্র। একটি session-এর মধ্যে বাজার যে দূরত্ব অতিক্রম করে, তা এতটাই বড় যে “09:35-এ প্রকাশিত” এবং “15:55-এ প্রকাশিত”—এই দুই সময়ের পার্থক্য অধিকাংশ দাবিকৃত edge-কে ছাপিয়ে যায়। 2026 সালের প্রথমার্ধে প্রতিটি session-এর প্রথম print থেকে মাপা সেই দূরত্ব নিচে দেওয়া হলো:

কুয়েরি2026-এর প্রথমার্ধে ET-এর প্রতি আধঘণ্টায়, উদ্বোধনী মূল্যের তুলনায় SPY কত দূর এগোয়
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH minute_px AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           toTimeZone(window_start, 'America/New_York') AS et,
           toFloat64(close) AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
opens AS (
    SELECT session_date, argMin(px, et) AS open_px
    FROM minute_px
    GROUP BY session_date
),
buckets AS (
    SELECT session_date,
           toStartOfInterval(et, INTERVAL 30 MINUTE) AS bucket,
           argMax(px, et) AS bucket_px
    FROM minute_px
    GROUP BY session_date, bucket
)
SELECT formatDateTime(b.bucket, '%H:%i') AS et_time,
       count() AS session_count,
       round(quantileDeterministic(0.5)(abs(100 * (b.bucket_px / o.open_px - 1)),
                                        cityHash64(b.session_date)), 3) AS median_abs_move_pct
FROM buckets AS b
INNER JOIN opens AS o ON b.session_date = o.session_date
GROUP BY et_time
ORDER BY et_time
Run this yourself

09:30 ET bucket-এ median session তার opening print থেকে 0.216% দূরে শেষ হয়েছে। 15:30 bucket-এ median distance ছিল 0.415%। Open-এর সময় কোনো agent যা জানত, তা এই movement-এর প্রায় পুরো অংশকেই বাদ দেয়। Commit history বা dated public feed প্রকাশের ক্রমের প্রমাণ দেয় (AI daily market research reports একই বৈশিষ্ট্যের ওপর নির্ভর করে সফল বা ব্যর্থ হয়)। Equity curve-এর screenshot এ বিষয়ে কোনো প্রমাণ দেয় না।

সংখ্যার মধ্যে কী কী থাকতে হবে

Gross return এমন একটি portfolio-কে বর্ণনা করে, যা কেউ বাস্তবে ধরে রাখতে পারেনি। প্রতিটি entry এবং exit-এ bid-ask spread অতিক্রম করতে হয়। এটি কেনার সেরা দাম ও বিক্রির সেরা দামের ব্যবধান। প্রতিটি security-তে এই ব্যবধান এক নয়:

কুয়েরিমধ্যাহ্ন সময়ে, July 15, 2026: উদ্ধৃত স্প্রেডের মধ্যমা এবং $25,000-এর রাউন্ড ট্রিপের খরচ
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
       round(quantileDeterministic(0.5)(20000 * (toFloat64(ask_price) - toFloat64(bid_price))
                                        / (toFloat64(ask_price) + toFloat64(bid_price)),
                                        cityHash64(sip_timestamp)), 2) AS median_spread_bps,
       round(25000 * quantileDeterministic(0.5)(2 * (toFloat64(ask_price) - toFloat64(bid_price))
                                                / (toFloat64(ask_price) + toFloat64(bid_price)),
                                                cityHash64(sip_timestamp)), 2) AS round_trip_cost_per_25k_usd
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'MSTR')
  AND sip_timestamp >= toDateTime('2026-07-15 15:00:00')
  AND sip_timestamp < toDateTime('2026-07-15 16:00:00')
  AND bid_price > 1
  AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps DESC
Run this yourself

ওই এক ঘণ্টার midday period-এ quoted spread-এর median ছিল 10.08 basis point, MSTR-এর ক্ষেত্রে, আর 0.27 ছিল SPY-এর ক্ষেত্রে। 1 basis point হলো percentage point-এর একশতাংশ। $25,000 position-এ ওই spread একবার buy ও একবার sell—দুই দিকেই অতিক্রম করলে, commission বাদ দিয়ে, এই তালিকার বেশি spread-এর ক্ষেত্রে খরচ হয় $25.2 এবং কম spread-এর ক্ষেত্রে $0.66। সপ্তাহে একবার পুরো book turnover হলে বছরে প্রায় 50 বার এই খরচ দিতে হয়। যে record এটি বাদ দেয়, সেটি নীরবে ওই অর্থ নিজের ফলাফলে যোগ করে (একটি stock trade করতে কী খরচ হয়-এ বাকি খরচগুলো ব্যাখ্যা করা হয়েছে)।

Live result অর্থবহ হওয়ার আগে কত সময় প্রয়োজন?

Live trading-এর 1টি quarter হলো বিস্তৃত distribution থেকে নেওয়া 1টি sample। এই distribution-এর প্রস্থ মাপা যায়। 2015 সালের January থেকে SPY-এর জন্য নির্দিষ্ট দৈর্ঘ্যের প্রতিটি overlapping window নেওয়া হয়েছে। SPY হলো বৃহত্তম S&P 500 tracking fund। ফলাফল percentile-এ সাজানো হয়েছে:

কুয়েরি2015 থেকে SPY-এর হোল্ডিং-পিরিয়ডের ফলাফল: 5ম পার্সেন্টাইল, মধ্যমা, 95তম পার্সেন্টাইল
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           toFloat64(argMax(close, window_start)) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2015-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY session_date
),
series AS (
    SELECT groupArray(close_px) AS px
    FROM (SELECT close_px FROM daily ORDER BY session_date)
),
horizons AS (
    SELECT arrayJoin([21, 63, 126, 252]) AS sessions, px
    FROM series
),
windows AS (
    SELECT sessions,
           arrayJoin(arrayMap(i -> (i, 100 * (px[i + sessions] / px[i] - 1)),
                              range(1, length(px) - sessions + 1))) AS w
    FROM horizons
),
measured AS (
    SELECT sessions,
           w.1 AS window_index,
           w.2 AS window_return_pct
    FROM windows
)
SELECT multiIf(sessions = 21, '1 month',
               sessions = 63, '3 months',
               sessions = 126, '6 months',
               '12 months') AS holding_period,
       count() AS window_count,
       round(quantileDeterministic(0.05)(window_return_pct,
                                         cityHash64(window_index * 1000 + sessions)), 1) AS p05_return_pct,
       round(quantileDeterministic(0.50)(window_return_pct,
                                         cityHash64(window_index * 1000 + sessions)), 1) AS median_return_pct,
       round(quantileDeterministic(0.95)(window_return_pct,
                                         cityHash64(window_index * 1000 + sessions)), 1) AS p95_return_pct,
       round(quantileDeterministic(0.95)(window_return_pct,
                                         cityHash64(window_index * 1000 + sessions))
             - quantileDeterministic(0.05)(window_return_pct,
                                           cityHash64(window_index * 1000 + sessions)), 1) AS spread_pct,
       round(stddevSamp(window_return_pct), 1) AS stdev_pct
FROM measured
GROUP BY sessions
ORDER BY sessions
Run this yourself

2826টি overlapping 3-month window-এ কোনো কাজ না করে ধরে রাখার median outcome ছিল 3.9%। 5th percentile ছিল -8.8% এবং 95th percentile ছিল 12.2%। অর্থাৎ band-টির প্রস্থ 21.1 পয়েন্ট। এই band-এর মধ্যে থাকা যেকোনো একক quarterly result index ধরে রেখে ছুটিতে যাওয়ার ফলাফলের সঙ্গে সামঞ্জস্যপূর্ণ। 20টি agent চালিয়ে 1 quarter পরে সেরাটির ফল প্রকাশ করলে, প্রদর্শিত সংখ্যাটি স্বভাবতই এমন একটি band-এর শীর্ষ দিক থেকে আসে।

Sample length-এর arithmetic কঠোর। একই series-এ 12-month outcome-এর standard deviation ছিল 13.6 পয়েন্ট। প্রকৃত edge-কে noise থেকে আলাদা করতে live result-এর প্রয়োজন আনুমানিক (2 × variation ÷ edge)² বছর। এই variation-এ বছরে 3 পয়েন্টের hypothetical edge যাচাই করতে বহু দশক লাগে। এমনকি 10 পয়েন্টের edge-এর ক্ষেত্রেও মাস নয়, বছর লাগে। উপরের window-গুলো overlapping। তাই 2826 হলো window-এর সংখ্যা, independent sample-এর সংখ্যা নয়।

$25,000 real money কি বিষয়টির নিষ্পত্তি করে?

Real money নির্দিষ্ট একটি উপায়ে evidence-এর মান বাড়ায়। Paper trading এমন দামে fill হয়, যে দামে কোনো counterparty সম্মতি দেয়নি। এতে order reject হওয়ার ঘটনাও থাকে না। Funded $25,000 account live quote-এর বিপরীতে fill হয় এবং বাস্তব commission দেয়। এই লেনদেন third party audit করতে পারে এমন statement-এ থাকে। Position size-ও যথেষ্ট বড় হয়, ফলে fill-গুলো কল্পিত নয়, স্বাভাবিক লেনদেনের মতো।

তবে sample-এর সমস্যা অপরিবর্তিত থাকে। 4 মাসে $25,000 trade করাও উপরের distribution থেকে নেওয়া 1টি sample। Drawdown-এর পরে live account বন্ধ করে record নতুন account দিয়ে আবার শুরু করা যায়। Size fill-কে বাস্তব করে। ফলাফলকে অর্থবহ করে কেবল সময়।

চেনার মতো 4টি failure mode

  • Track record-এর পোশাকে backtest। অতীতের data-তে simulated result হলো অতীত সম্পর্কে hypothesis। Look-ahead bias দেখায়, strategy তখন জানতে পারত না এমন information কীভাবে simulation-এ ঢুকে যায়। সবচেয়ে সরল লক্ষণ হলো এমন equity curve, যা code তৈরি হওয়ার বহু বছর আগেই শুরু হয়েছে।
  • মঞ্চে শুধু survivor। 10টি agent চালু করা হলো, প্রকাশ করা হলো 1টির ফল। Multi-agent AI trading systems-এ এটি অনিচ্ছাকৃতভাবে সহজে ঘটে। কারণ 10টি variant চালানো framework-ই লেখার মতো variant-টি বেছে নেয়।
  • Restart। Drawdown, pause, নতুন account এবং restart date থেকে শুরু হওয়া curve। নিষ্পত্তিমূলক প্রশ্নটি হলো: প্রথম account-এর প্রথম dollar থেকে equity curve দেখান।
  • পুনর্লিখিত runbook। Trade এবং writeup-এর মাঝখানে prompt ও position limit সম্পাদনা করা হয়েছে। LLM-generated alpha factors হাজারে হাজারে তৈরি করা যায়। তাই selection rule-টি selection-এর আগে প্রকাশ করতে হবে। তা না হলে record কোন factor কাজ করেছে তার গল্পে পরিণত হয়।

FAQ

AI trading track record কি যাচাই করা যায়?

হ্যাঁ, যদি entry ফলাফল জানা হওয়ার আগে প্রকাশিত হয়, benchmark আগে থেকেই নির্ধারিত থাকে, cost সংখ্যার মধ্যে থাকে এবং প্রতিটি account দেখানো হয়। যাচাইটি mechanical এবং কয়েক মিনিটে করা যায়। অধিকাংশ প্রকাশিত record প্রথম শর্তেই ব্যর্থ হয়।

Live AI trading record কতদিন চলতে হবে?

প্রকাশিত প্রায় যেকোনো record-এর চেয়ে বেশি সময়। এখানে মাপা window-গুলোতে index-এর 12-month outcome-এর standard deviation ছিল 13.6 পয়েন্ট। তাই প্রচলিত confidence level-এ modest edge-কে luck থেকে আলাদা করতে ন্যূনতম কয়েক বছর লাগে। ছোট edge-এর ক্ষেত্রে লাগে কয়েক দশক।

$25,000 কি AI portfolio-এর ফলাফল অর্থবহ করার জন্য যথেষ্ট?

Fill-কে বাস্তব করার জন্য এটি যথেষ্ট: live quote, বাস্তব commission এবং auditযোগ্য statement। তবে কয়েক মাসের ফলাফলকে statistical অর্থে meaningful করার জন্য এটি যথেষ্ট নয়। সেটি account size নয়, অতিবাহিত সময়ের প্রশ্ন।

Backtest এবং track record-এর মধ্যে পার্থক্য কী?

Backtest বিদ্যমান data-তে rules প্রয়োগ করে। Track record হলো ফলাফল প্রকাশের আগে নেওয়া decision-এর ধারাবাহিকতা। পরবর্তী ফলাফল দিয়ে কেবল দ্বিতীয়টিকেই falsify করা যায়। এ কারণেই সেটি evidence।

Benchmark-এর নির্বাচন এত গুরুত্বপূর্ণ কেন?

2026 সালের প্রথমার্ধে উপরের 6টি index fund-এর price-only ফলাফলের ব্যবধান ছিল 12.7 পয়েন্ট। সময়সীমা শেষ হওয়ার পর benchmark বেছে নিলে কোনো strategy-এর অবদান ছাড়াই পুরো ব্যবধানটি পাওয়া যেতে পারে।


এই পৃষ্ঠার প্রতিটি সংখ্যা market data-র ওপর চালানো stored query থেকে নেওয়া হয়েছে। প্রতিটি panel-এর নিচে SQL দেওয়া আছে। Strasmore terminal-এ একই window ব্যবহার করে আপনার নিজস্ব তারিখ পরীক্ষা করুন।

#ai agents#track record#live trading#backtesting#quant