Strasmore Research
শেখা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-08-08

Maximum Drawdown কী: গভীরতা ও পুনরুদ্ধার

Maximum drawdown হলো peak থেকে trough-এ সর্বোচ্চ পতন। 30% পতন কীভাবে মাপবেন এবং নতুন high-এ ফিরতে কেন বেশি সময় লাগে, তা উদাহরণসহ জানুন।

Maximum drawdown হলো কোনো value series-এর peak থেকে trough-এ সর্বোচ্চ পতন, যা চলমান peak-এর শতাংশ হিসেবে মাপা হয়। কোনো অ্যাকাউন্ট $120,000-এ উঠল, $84,000-এ নেমে গেল, তারপর পুনরুদ্ধার করল—তার maximum drawdown হবে 30%। এই পরিসংখ্যানটি চিরকাল 30% থাকবে, কারণ এটি বর্তমান অবস্থা নয়, বরং পুরো ইতিহাসের সবচেয়ে খারাপ পতনের পর্যায়টি রেকর্ড করে। বেশিরভাগ মানুষ শুধু পতনের গভীরতা উল্লেখ করেই থেমে যান। অথচ একই পরিসংখ্যানের মধ্যে আরও 2টি গুরুত্বপূর্ণ সময়কাল রয়েছে: peak থেকে low-তে নামতে যে সময় লাগে, এবং সেই low থেকে নতুন high-এ ফিরতে যে সময় লাগে, যা সাধারণত অনেক বেশি দীর্ঘ।

সর্বোচ্চ পতন কীভাবে হিসাব করা হয়?

পুরো হিসাবটি সিরিজের ওপর একবার চালিয়েই করা যায়। প্রতিটি পর্যবেক্ষণে চলমান সর্বোচ্চ মান আপডেট করতে হবে, বর্তমান মানকে সেই সর্বোচ্চ মানের সঙ্গে তুলনা করতে হবে এবং এ পর্যন্ত পাওয়া সবচেয়ে খারাপ ফলটি ধরে রাখতে হবে।

  1. চলমান সর্বোচ্চ মান হিসেবে প্রথম মানটি নির্ধারণ করুন।
  2. প্রতিটি নতুন মানের ক্ষেত্রে, সেটি বেশি হলে সর্বোচ্চ মান আপডেট করুন।
  3. ওই পর্যায়ের পতন হিসাব করুন: বর্তমান মানকে সর্বোচ্চ মান দিয়ে ভাগ করে 1 বিয়োগ করুন।
  4. সবচেয়ে ঋণাত্মক ফলটি ধরে রাখুন। সেটিই সর্বোচ্চ পতন।

এতে returns series, volatility estimate বা কোনো distribution assumption প্রয়োজন হয় না। Python standard library ব্যবহার করে সাধারণ সংখ্যার একটি তালিকার ওপর loop চালানো যায়। নতুন Ubuntu সিস্টেমে প্রথমে interpreter ইনস্টল করুন:

apt-get update && apt-get install -y python3

loop-টি maxdd.py হিসেবে সংরক্ষণ করুন। নিচের দামগুলো একটি কাল্পনিক দশ-পয়েন্ট সিরিজ। হাতে যাচাই করা সহজ রাখার জন্য সংখ্যাগুলো ছোট রাখা হয়েছে:

prices = [100.0, 104.0, 98.0, 92.0, 95.0, 88.0, 90.0, 101.0, 99.0, 106.0]

peak = prices[0]
max_dd = 0.0

for price in prices:
    if price > peak:
        peak = price
    drawdown = price / peak - 1.0
    if drawdown < max_dd:
        max_dd = drawdown

print(f"maximum drawdown: {max_dd * 100:.1f}%")

python3 maxdd.py চালালে আউটপুট হবে maximum drawdown: -15.4%। হাতে যাচাই করুন: নিম্নতম মানের আগে সর্বোচ্চ মান ছিল 104, নিম্নতম মান 88, এবং 88-কে 104 দিয়ে ভাগ করলে ফল হয় 0.846। এরপর সিরিজটি 106-এ শেষ হয়েছে, যা সর্বকালের সর্বোচ্চ মান। তবু 15.4% পতনের রেকর্ডটি অপরিবর্তিত থাকে। সর্বোচ্চ পতন কোনো নমুনায় দেখা সবচেয়ে খারাপ মুহূর্তের স্থায়ী রেকর্ড। সিরিজটি বর্তমানে কোন অবস্থানে আছে, তা এটি জানায় না। একই loop-এ আরও দুটি variable যোগ করলে সময় নির্ধারণ করা যায়: যে index-এ সর্বোচ্চ মান নির্ধারিত হয়েছিল এবং যে index-এ সবচেয়ে খারাপ ফল দেখা গিয়েছিল।

ড্রডাউন কার্ভ দেখতে কেমন

ড্রডাউন কার্ভ প্রতিটি সময়বিন্দুতে ধাপ 3 ধরে রাখে, সেটিকে সবচেয়ে খারাপ একক মানে নামিয়ে আনে না। সিরিজটি যখন নতুন সর্বোচ্চ মানে পৌঁছায়, তখন রেখাটি শূন্যে থাকে। মাঝের সময়ে এটি শূন্যের নিচে নেমে থাকে। এই কারণেই ব্যবধানটিকে "underwater" বলা হয়। এখানে জানুয়ারি 2016 থেকে মাসের শেষের ক্লোজিং দামের ভিত্তিতে S&P 500 অনুসরণকারী একটি exchange traded fund, SPY-এর সেই কার্ভ দেখানো হয়েছে।

কুয়েরিSPY আন্ডারওয়াটার কার্ভ: চলমান শীর্ষের তুলনায় মাস-শেষের ক্লোজ, 2016 থেকে 2026
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH monthly AS (
    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
           argMax(toFloat64(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('2016-01-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 month_start
),
runs AS (
    SELECT month_start,
           close_px,
           max(close_px) OVER (ORDER BY month_start
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak
    FROM monthly
)
SELECT formatDateTime(month_start, '%Y-%m') AS month,
       round(100 * (close_px / running_peak - 1), 2) AS drawdown_pct
FROM runs
ORDER BY month_start
Run this yourself

127 মাসের শেষের রিডিং জুড়ে রেখাটি দীর্ঘ সময় শূন্যের কাছাকাছি স্থির থাকে এবং কয়েকটি গভীর খাঁজে নেমে যায়। নথিভুক্ত সর্বশেষ মাসে চলমান শীর্ষমানের তুলনায় মানটি -1.27%। এই আকৃতির দুটি বৈশিষ্ট্য বিষয়টি স্পষ্ট করে। পুনরুদ্ধার তীব্র লাফের বদলে ধীরগতির ঊর্ধ্বগতি হিসেবে ঘটে। আর প্রতিটি নতুন শীর্ষে কার্ভটি আবার শূন্যে ফিরে যায়, ফলে আগের পতনের দৃশ্যমান স্মৃতি মুছে যায়।

ধস থেকে পুনরুদ্ধার হতে কত সময় লাগে?

একটি ধসের মধ্যে তিনটি পৃথক সংখ্যা থাকে। এগুলোকে একটিমাত্র সংখ্যা হিসেবে দেখা পারফরম্যান্স টেবিল ভুলভাবে পড়ার সবচেয়ে সাধারণ কারণ:

  1. পতনের গভীরতা: শীর্ষস্তরের তুলনায় মূল্য কত শতাংশ নিচে নেমেছিল।
  2. সর্বনিম্ন স্তরে পৌঁছাতে সময়: শীর্ষস্তর থেকে তলানিতে পৌঁছানো পর্যন্ত ক্যালেন্ডার দিন।
  3. পুনরুদ্ধারের সময়: তলানি থেকে নতুন সর্বোচ্চ স্তরে ফিরে যেতে ক্যালেন্ডার দিন।

তৃতীয় সময়কালটি সাধারণত সবচেয়ে দীর্ঘ। কোনো শিরোনামভিত্তিক সংখ্যায় এটি কখনও দেখা যায় না। নিচের প্যানেলটি 2016 সাল থেকে SPY-এর দৈনিক ক্লোজিং মূল্য ব্যবহার করে সম্পূর্ণ হওয়া প্রতিটি ধসের পর্ব পুনর্গঠন করেছে। কোনো শীর্ষস্তর নির্ধারিত হওয়ার দিন একটি পর্ব শুরু হয় এবং ফান্ডটি প্রথমবার সেই স্তরের ওপরে ক্লোজ করার দিন শেষ হয়।

কুয়েরি2016 থেকে সম্পূর্ণ হওয়া SPY ড্রডাউন: গভীরতা, পতনের দিন, পুনরুদ্ধারের দিন
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(toFloat64(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('2016-01-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 session_date
),
runs AS (
    SELECT session_date,
           close_px,
           max(close_px) OVER (ORDER BY session_date
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak
    FROM daily
),
episodes AS (
    SELECT running_peak AS peak_px,
           min(session_date) AS peak_date,
           argMin(session_date, close_px) AS trough_date,
           min(close_px) AS trough_px
    FROM runs
    GROUP BY running_peak
),
sequenced AS (
    SELECT peak_px,
           peak_date,
           trough_date,
           trough_px,
           leadInFrame(peak_date, 1) OVER (ORDER BY peak_date
                                           ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS recovery_date
    FROM episodes
)
SELECT formatDateTime(peak_date, '%b %Y') AS episode_label,
       round(100 * (1 - trough_px / peak_px), 1) AS fall_from_peak_pct,
       dateDiff('day', peak_date, trough_date) AS days_to_trough,
       dateDiff('day', trough_date, recovery_date) AS days_to_new_high,
       dateDiff('day', peak_date, recovery_date) AS days_underwater
FROM sequenced
WHERE recovery_date > trough_date
  AND round(100 * (1 - trough_px / peak_px), 1) >= 5
ORDER BY fall_from_peak_pct DESC
LIMIT 8
Run this yourself

তালিকার সবচেয়ে গভীর সম্পূর্ণ হওয়া পর্বটি Feb 2020-এ শুরু হয় এবং আগের শীর্ষস্তরের তুলনায় 34.2% নিচে নেমে যায়। পতনে এটি 33 ক্যালেন্ডার দিন এবং পুনরুদ্ধারে 148 দিন ব্যয় করে। মোট 181 দিন এটি আগের শীর্ষস্তরের নিচে ছিল। পরের এন্ট্রিটি Jan 2022-এর। এটি তুলনামূলকভাবে কম গভীর, 25.4%, তবে ফান্ডটিকে 746 দিন পুরনো সর্বোচ্চ স্তরের নিচে রেখেছিল।

পতনের গভীরতা এবং স্থায়িত্ব সম্পূর্ণ আলাদা বিষয়। দ্রুত পতন ও দ্রুত পুনরুদ্ধার, কিংবা কয়েক বছর ধরে চলা ধীরগতির পতন—দুটিই একটি মাত্র শতাংশের সংখ্যায় সংকুচিত হয়ে যায়। March 2020-এর ধস প্রথম ধরনের একটি আদর্শ উদাহরণ। আর বাজার কীভাবে ধস থেকে পুনরুদ্ধার করে দ্বিতীয় পর্যায়টি ব্যাখ্যা করে।

মাপার সময়সীমা যত দীর্ঘ হয়, সর্বোচ্চ পতন তত খারাপ দেখায়

সর্বোচ্চ পতন একটি সর্বোচ্চ মান। তাই অতীতের তথ্য যোগ করলে এটি অপরিবর্তিত থাকতে পারে বা আরও গভীর হতে পারে, কিন্তু কমতে পারে না। দীর্ঘ সময়সীমায় প্রতিটি পর্যায়ে চলমান সর্বোচ্চ মূল্য, ছোট সময়সীমার সর্বোচ্চ মূল্যের সমান বা তার চেয়ে বেশি। এটাই হিসাবের ফল নির্ধারণ করে। 2026 সালের July 31-এ শেষ হওয়া পাঁচটি সময়সীমায় একই ফান্ড মাপলে বিষয়টি স্পষ্ট হয়।

কুয়েরিএকই ফান্ড, পাঁচটি লুকব্যাক উইন্ডো: 2026 সালের 31 জুলাই পর্যন্ত স্যাম্পল দৈর্ঘ্য অনুযায়ী SPY সর্বোচ্চ ড্রডাউন
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(toFloat64(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('2016-07-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 session_date
),
scoped AS (
    SELECT arrayJoin([1, 2, 3, 5, 10]) AS lookback_years,
           session_date,
           close_px
    FROM daily
),
windowed AS (
    SELECT lookback_years, session_date, close_px
    FROM scoped
    WHERE session_date >= subtractYears(toDate('2026-07-31'), lookback_years)
),
runs AS (
    SELECT lookback_years,
           session_date,
           close_px,
           max(close_px) OVER (PARTITION BY lookback_years ORDER BY session_date
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak
    FROM windowed
)
SELECT concat(toString(lookback_years), if(lookback_years = 1, ' year', ' years')) AS lookback,
       round(100 * max(1 - close_px / running_peak), 1) AS max_drawdown_pct,
       formatDateTime(argMax(session_date, 1 - close_px / running_peak), '%b %Y') AS worst_point
FROM runs
GROUP BY lookback_years
ORDER BY lookback_years
Run this yourself

গতানুগতিক 1 year সময়সীমায় মাপা সর্বোচ্চ পতন ছিল 9.1%। একই সিরিজকে 10 years পর্যন্ত বাড়ালে মাপ দাঁড়ায় 34.2%, এবং সর্বনিম্ন বিন্দুটি পড়ে Mar 2020-এ। ফান্ডটি বেশি ঝুঁকিপূর্ণ হয়ে ওঠেনি। শুধু নমুনার সময়সীমা দীর্ঘ হয়েছে।

একই হিসাব কৌশলগুলোর তুলনাকেও বিকৃত করে। তিন বছরের backtest এবং বিশ বছরের backtest একই আচরণ তুলে ধরতে পারে, তবু দুটিতে সম্পূর্ণ ভিন্ন drawdown দেখা যেতে পারে। তাই সময়সীমা উল্লেখ না থাকলে এই পরিসংখ্যানের অর্থ সীমিত। backtesting-এ look-ahead bias এমন আরেকটি পদ্ধতি নিয়ে আলোচনা করে, যেভাবে দেখতে পরিচ্ছন্ন একটি backtest নিজেকেই অতিরিক্ত আকর্ষণীয় করে তুলতে পারে।

সর্বোচ্চ পতন বনাম অস্থিরতা

অস্থিরতা উভয় দিকের দৈনিক দামের সাধারণ পরিবর্তনের আকার পরিমাপ করে। সর্বোচ্চ পতন দামের একটি নির্দিষ্ট নিম্নমুখী গতিপথ পরিমাপ করে। দুটিই ঝুঁকির পরিমাপ, তবে এগুলো ভিন্ন প্রশ্নের উত্তর দেয়। 31 July 2026 পর্যন্ত পাঁচ বছরের সময়কালে আটটি বহুল পরিচিত কোম্পানির জন্য প্যানেলটি এই দুই পরিমাপ পাশাপাশি দেখায়। অস্থিরতা দৈনিক ক্লোজিং মূল্য থেকে বার্ষিকীকরণ করা হয়েছে।

কুয়েরিবার্ষিকীকৃত ভোলাটিলিটির তুলনায় সর্বোচ্চ ড্রডাউন: 2026 সালের 31 জুলাই পর্যন্ত পাঁচ বছরে আটটি বড়-ক্যাপ
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'CVX', 'VZ', 'PG')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-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_date
),
runs AS (
    SELECT ticker,
           session_date,
           close_px,
           max(close_px) OVER (PARTITION BY ticker ORDER BY session_date
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak,
           lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY session_date
                                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
)
SELECT ticker,
       round(100 * max(1 - close_px / running_peak), 1) AS max_drawdown_pct,
       round(100 * sqrt(252) * stddevSampIf(close_px / prev_close - 1, prev_close > 0), 1) AS annualized_volatility_pct
FROM runs
GROUP BY ticker
HAVING countIf(prev_close > 0) > 20
ORDER BY max_drawdown_pct DESC
Run this yourself

দুটি কলাম একসঙ্গে পড়ুন। VZ-এর পতন এই গোষ্ঠীতে সবচেয়ে গভীর, 45.4%; এর বার্ষিকীকৃত অস্থিরতা 22.6%। বিপরীত প্রান্তে, KO-এর পতন ছিল 20.9%, আর অস্থিরতা ছিল 16.7%। অস্থিরতা পুরো সময়সীমার প্রতিটি দিনের গড় হিসাব, আর গড় দীর্ঘ, ধীর পতনের প্রভাব কমিয়ে দিতে পারে। Drawdown হলো দামের বাস্তবে অতিক্রম করা একক সবচেয়ে খারাপ গতিপথ। দুই বছর ধরে ধীরে ধীরে কমতে থাকা একটি স্থিতিশীল হোল্ডিংও সাধারণ অস্থিরতার পাঠের বিপরীতে গভীর drawdown দেখাতে পারে।

কম অস্থিরতার ব্যতিক্রম দীর্ঘ সময়ে কম অস্থিরতার শেয়ারগুলোর আচরণ বিশ্লেষণ করে, আর Kelly criterion অনুযায়ী পজিশনের আকার নির্ধারণ drawdown সহনশীলতাকে কীভাবে পজিশনের আকারে রূপান্তর করা যায় তা দেখায়।

যে তথ্য সংখ্যা জানাতে পারে না

চারটি সীমাবদ্ধতা মনে রাখা জরুরি:

  1. এটি একটি বাস্তবায়িত পথের ফল। একই প্রক্রিয়ায় অন্য একটি ফলনপথে এর চেয়ে অনেক খারাপ সংখ্যা দেখা যেতে পারত।
  2. এটি নমুনার দৈর্ঘ্যের ওপর নির্ভর করে। তাই দুটি drawdown তুলনা করা যায় কেবল একই দৈর্ঘ্যের সময়সীমায়।
  3. এটি sampling frequency-এর ওপর নির্ভর করে। মাসের শেষের closing price intraday low আড়াল করে। ফলে একই সময়সীমায় daily close ব্যবহার করলে যে সংখ্যা পাওয়া যায়, মাসশেষের close থেকে পাওয়া সংখ্যা তার চেয়ে কম হয়।
  4. এটি ভবিষ্যৎ সম্পর্কে কোনো তথ্য দেয় না। কোনো peak-এর 30% নিচে থাকা থেকে বোঝা যায় না 31তম পয়েন্ট আগামীকাল আসবে কি না।

এই শেষ সীমাবদ্ধতার কারণেই automated system-এর জন্য drawdown threshold-এর বদলে একটি drawdown policy দরকার। “20%-এ halt করুন” একটি প্রশ্নের উত্তর দেয়, কিন্তু আরও দুটি প্রশ্নের উত্তর দেয় না: halt-এর সময় open positions-এর কী হবে, এবং কোন প্রমাণের ভিত্তিতে system আবার চালু হবে। Trading bot-এর জন্য circuit breaker সেই policy-এর কাঠামো ব্যাখ্যা করে। ইচ্ছামতো নির্ধারিত একটি flat rule-এর খরচ recovery leg-এ দেখা যায়। কারণ system যদি সর্বনিম্ন স্তরের কাছে trading বন্ধ করে এবং দেরিতে আবার চালু হয়, তাহলে ঊর্ধ্বমুখী পুনরুদ্ধারের একটি বড় অংশে অংশ নিতে পারে না। সেরা দিনগুলো বাদ পড়ার খরচ এই হিসাবের সংখ্যাগত দিকটি দেখায়।

দুটি সংখ্যা তুলনা করার আগে একটি measurement detail গুরুত্বপূর্ণ। কোনো fund-এর price series-এ drawdown এবং কোনো বাস্তব account-এর drawdown এক হয় না, যখন cash account-এ ঢোকে বা account থেকে বের হয়, কিংবা dividend জমা হয়। মাসিক রিটার্ন কীভাবে পরিমাপ করা হয় বিষয়টি সম্পূর্ণভাবে ব্যাখ্যা করেছে।

সর্বোচ্চ পতন নিয়ে সাধারণ প্রশ্ন

ভালো সর্বোচ্চ পতন কত হওয়া উচিত?

এর কোনো সর্বজনীন মাত্রা নেই। তুলনার জন্য একটি বেঞ্চমার্ক এবং পরিমাপের সময়সীমা দরকার। 31 July 2026 পর্যন্ত আগের 10 বছরে, SPY-এর চলমান শিখর থেকে দৈনিক ক্লোজিং মূল্যের ভিত্তিতে সবচেয়ে বড় পতন ছিল 34.2%। কোনো কৌশল কম সময়ের নমুনায় এর চেয়ে ছোট সংখ্যা দেখালেই সেটি বেশি নিরাপদ, এমন নয়।

সর্বোচ্চ পতন কি volatility-এর সমান?

না। Volatility সাধারণ দৈনিক ওঠানামা বোঝায়। সর্বোচ্চ পতন শিখর থেকে তলানি পর্যন্ত একক সবচেয়ে খারাপ গতিপথ বোঝায়। দুই বছর ধরে ধীরে ধীরে কমতে থাকা কম-volatility সম্পদের পতন, বারবার নতুন উচ্চতা তৈরি করা কিন্তু অস্থির কোনো সম্পদের চেয়েও গভীর হতে পারে।

সর্বোচ্চ পতন থেকে পুনরুদ্ধার হতে কত সময় লাগে?

এটি পরিবর্তনশীল। অনেক সময় ফিরে ওঠার পর্বটিই বেশি দীর্ঘ হয়। 2016 সাল থেকে SPY-এর ক্ষেত্রে, আগের উচ্চতার নিচে থাকা সবচেয়ে দীর্ঘ সম্পূর্ণ সময়কাল শিখর থেকে নতুন উচ্চতায় পৌঁছাতে 181 calendar days স্থায়ী হয়েছিল। এর মধ্যে 33 দিন পতন অব্যাহত ছিল।

সর্বোচ্চ পতন কি ভবিষ্যৎ ক্ষতির পূর্বাভাস দেয়?

না। এটি ইতিমধ্যে ঘটে যাওয়া একটি গতিপথের বর্ণনা। দীর্ঘ সময়ের নমুনায় প্রায় সবসময়ই বড় সংখ্যা দেখা যায়। এখন পর্যন্ত কোনো কৌশল কতটা পতন সামলেছে, এটি তা দেখায়। ভবিষ্যতে ক্ষতি কতটা হতে পারে, তার কোনো ঊর্ধ্বসীমা এটি নির্ধারণ করে না।


উপরের প্রতিটি panel-এর পেছনের SQL সংরক্ষিত আছে। একটি panel খুলে ticker বা সময়সীমা পরিবর্তন করুন এবং Strasmore terminal-এ একই drawdown হিসাব চালান।

#risk#drawdown#backtesting#performance metrics#python