Maximum Drawdown คืออะไร ลึกแค่ไหน ฟื้นตัวนานเท่าไร
ทำความเข้าใจ Maximum Drawdown การลดลงจากจุดสูงสุดสู่จุดต่ำสุด วิธีวัดความลึก ระยะเวลาฟื้นตัว และเหตุใดการกลับไปทำจุดสูงสุดใหม่จึงใช้เวลานานกว่า
Maximum drawdown คือการลดลงจากจุดสูงสุดสู่จุดต่ำสุดที่มากที่สุดในอนุกรมมูลค่า โดยวัดเป็นเปอร์เซ็นต์เทียบกับจุดสูงสุดสะสม บัญชีที่เพิ่มขึ้นไปถึง $120,000 ลดลงเหลือ $84,000 แล้วฟื้นตัวกลับขึ้นมา จะมี maximum drawdown อยู่ที่ 30% และตัวเลขนี้จะคงอยู่ตลอดไป เพราะสถิตินี้บันทึกช่วงขาลงที่รุนแรงที่สุดในประวัติที่ผ่านมา ไม่ได้สะท้อนสถานะในปัจจุบัน คนส่วนใหญ่มักกล่าวถึงเพียงระดับการลดลงแล้วจบแค่นั้น แต่ภายในสถิติเดียวกันยังมีตัวเลขอีกสองรายการ ได้แก่ ระยะเวลาตั้งแต่จุดสูงสุดลงไปถึงจุดต่ำสุด และระยะเวลาที่ยาวนานกว่ามากตั้งแต่จุดต่ำสุดกลับขึ้นไปทำจุดสูงสุดใหม่
การคำนวณ maximum drawdown ทำอย่างไร
การคำนวณทั้งหมดใช้การไล่ดูข้อมูลในชุดข้อมูลเพียงรอบเดียว ในแต่ละจุดจะอัปเดตค่าสูงสุดสะสม วัดค่าปัจจุบันเทียบกับค่าสูงสุดดังกล่าว และเก็บค่าที่แย่ที่สุดที่พบจนถึงตอนนั้น
- กำหนดจุดสูงสุดสะสมให้เท่ากับค่าข้อมูลตัวแรก
- เมื่อพบค่าใหม่ ให้ปรับจุดสูงสุดสะสมขึ้นหากค่านั้นสูงกว่า
- คำนวณ drawdown ณ จุดนั้น โดยนำค่าปัจจุบันหารด้วยจุดสูงสุด แล้วลบด้วยหนึ่ง
- เก็บค่าที่ติดลบมากที่สุด ค่านั้นคือ maximum drawdown
การคำนวณนี้ไม่ต้องใช้ชุดข้อมูลผลตอบแทน ค่าประมาณความผันผวน หรือสมมติฐานเกี่ยวกับการแจกแจงทางสถิติ ลูปทำงานกับรายการตัวเลขทั่วไปโดยใช้ไลบรารีมาตรฐานของ Python หากใช้ Ubuntu ที่เพิ่งติดตั้ง ให้ติดตั้งตัวแปลภาษาก่อน:
apt-get update && apt-get install -y python3
บันทึกลูปนี้เป็น maxdd.py ราคาด้านล่างเป็นชุดข้อมูลสมมติจำนวน ten จุด โดยตั้งใจให้มีขนาดเล็กพอที่จะตรวจสอบด้วยมือได้:
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% ยังคงเป็น maximum drawdown ของชุดข้อมูลนี้ Maximum drawdown เป็นบันทึกถาวรของช่วงเวลาที่แย่ที่สุดในตัวอย่าง และไม่ได้บอกว่าปัจจุบันชุดข้อมูลอยู่ที่ระดับใด หากเพิ่มตัวแปรอีกสองตัวในลูปเดียวกัน ก็จะสามารถระบุช่วงเวลาได้ ได้แก่ ดัชนีที่ใช้กำหนดจุดสูงสุด และดัชนีที่เกิดค่าที่แย่ที่สุด
ลักษณะของเส้นโค้ง Drawdown
เส้นโค้ง Drawdown แสดงขั้นตอนที่ 3 ในทุกจุด แทนที่จะสรุปเป็นค่าต่ำสุดเพียงค่าเดียว เส้นจะอยู่ที่ศูนย์ทุกครั้งที่ชุดข้อมูลทำจุดสูงสุดใหม่ และจะเคลื่อนต่ำกว่าศูนย์ในช่วงระหว่างนั้น จึงเป็นที่มาของคำว่า “underwater” ต่อไปนี้คือเส้นโค้งของ SPY ซึ่งเป็นกองทุน ETF ที่ติดตามดัชนี S&P 500 โดยใช้ราคาปิดสิ้นเดือนนับตั้งแต่เดือนมกราคม 2016
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จากข้อมูลสิ้นเดือนทั้งหมด 127 จุด เส้นใช้เวลาช่วงยาวอยู่ใกล้ศูนย์ และลดลงเป็นร่องลึกอยู่ไม่กี่ครั้ง เดือนล่าสุดในชุดข้อมูลอยู่ที่ -1.27% เมื่อเทียบกับจุดสูงสุดสะสม รูปทรงนี้มีลักษณะสำคัญสองประการที่ช่วยอธิบายแนวคิดนี้ การฟื้นตัวมักเป็นการไต่ขึ้นอย่างช้า ๆ ไม่ใช่การดีดตัวอย่างรวดเร็ว และทุกจุดสูงสุดใหม่จะรีเซ็ตเส้นกลับไปที่ศูนย์ ทำให้ร่องรอยทางภาพของช่วงก่อนหน้าหายไป
ใช้เวลานานเท่าใดจึงจะฟื้นตัวจากการขาดทุนจากจุดสูงสุด
การขาดทุนจากจุดสูงสุดหนึ่งครั้งประกอบด้วยตัวเลขสามประเภท และการนำตัวเลขเหล่านี้มาพิจารณาเสมือนเป็นเรื่องเดียวกันคือความเข้าใจผิดที่พบบ่อยที่สุดเมื่ออ่านตารางผลการดำเนินงาน:
- ความลึกของการปรับลดลง: มูลค่าลดลงจากจุดสูงสุดมากเพียงใด คิดเป็นเปอร์เซ็นต์
- ระยะเวลาจนถึงจุดต่ำสุด: จำนวนวันตามปฏิทินตั้งแต่จุดสูงสุดถึงจุดต่ำสุด
- ระยะเวลาฟื้นตัว: จำนวนวันตามปฏิทินตั้งแต่จุดต่ำสุดกลับขึ้นไปทำจุดสูงสุดใหม่
โดยปกติระยะเวลาข้อสามจะยาวนานที่สุด และเป็นสิ่งที่ตัวเลขพาดหัวไม่เคยแสดง แผงด้านล่างสร้างช่วงที่มูลค่าอยู่ต่ำกว่าจุดสูงสุดซึ่งสิ้นสุดลงแล้วของ SPY ขึ้นใหม่ทั้งหมดนับตั้งแต่ปี 2016 โดยใช้ราคาปิดรายวัน ช่วงดังกล่าวเริ่มในวันที่ทำจุดสูงสุด และสิ้นสุดในวันที่กองทุนปิดสูงกว่าจุดสูงสุดเดิมเป็นครั้งแรก
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ช่วงที่ปรับลดลงลึกที่สุดในรายการเริ่มต้นใน Feb 2020 และลดลงไปต่ำกว่าจุดสูงสุดก่อนหน้าที่ 34.2% โดยใช้เวลา 33 วันตามปฏิทินในการปรับลดลง และอีก 148 วันในการฟื้นตัว รวมเป็น 181 วันที่มูลค่าอยู่ต่ำกว่าจุดสูงสุดเดิม รายการถัดมาเริ่มต้นใน Jan 2022 มีการปรับลดลงตื้นกว่าอยู่ที่ 25.4% และทำให้กองทุนอยู่ต่ำกว่าจุดสูงสุดเดิมเป็นเวลา 746 วัน
ความลึกของการปรับลดลงและระยะเวลาอาจไม่สัมพันธ์กันเลย การปรับลดลงอย่างรุนแรงที่ฟื้นตัวกลับได้อย่างรวดเร็ว และการปรับลดลงเล็กน้อยแต่ลากยาวหลายปี ต่างถูกย่อให้เหลือเพียงเปอร์เซ็นต์เดียว การปรับลดลงของตลาดในเดือนมีนาคม 2020 เป็นกรณีตัวอย่างของรูปแบบแรก ส่วน การฟื้นตัวของตลาดจากการปรับลดลงอย่างรุนแรง อธิบายขาที่สองของการเคลื่อนไหวดังกล่าว
เหตุใด maximum drawdown จึงแย่ลงเมื่อวัดในช่วงเวลาที่ยาวขึ้น
Maximum drawdown เป็นค่าสูงสุด ดังนั้นการเพิ่มข้อมูลย้อนหลังจึงทำได้เพียงทำให้ตัวเลขเท่าเดิมหรือลึกลง จุดสูงสุดสะสมในช่วงเวลาที่ยาวกว่าจะสูงอย่างน้อยเท่ากับจุดสูงสุดในช่วงเวลาที่สั้นกว่า ณ ทุกจุดของช่วงเวลา ซึ่งเป็นที่มาของผลลัพธ์ทางคณิตศาสตร์นี้ การวัดกองทุนเดียวกันในช่วงเวลาห้าช่วงที่สิ้นสุด ณ วันที่ 31 กรกฎาคม 2026 แสดงให้เห็นผลดังกล่าว
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ในช่วงย้อนหลัง 1 year การปรับลดลงสูงสุดอยู่ที่ 9.1% เมื่อขยายชุดข้อมูลเดียวกันเป็น 10 years ตัวเลขจะอยู่ที่ 34.2% โดยจุดที่แย่ที่สุดเกิดขึ้นใน Mar 2020 กองทุนไม่ได้มีความเสี่ยงมากขึ้น แต่ตัวอย่างข้อมูลมีระยะเวลายาวขึ้น
หลักคณิตศาสตร์เดียวกันนี้ยังทำให้การเปรียบเทียบกลยุทธ์คลาดเคลื่อนได้ Backtest ระยะสามปีและ Backtest ระยะยี่สิบปีอาจอธิบายพฤติกรรมที่เหมือนกัน แต่ยังรายงานค่า drawdown ที่แตกต่างกันมากได้ ดังนั้นตัวเลขดังกล่าวจึงมีความหมายจำกัดหากไม่ระบุช่วงเวลาที่ใช้วัด อคติจากการมองไปข้างหน้าในการทำ Backtest อธิบายอีกวิธีหนึ่งที่ทำให้ Backtest ซึ่งดูสะอาดเรียบร้อยให้ภาพว่ากลยุทธ์ทำได้ดีกว่าความเป็นจริง
Maximum drawdown เทียบกับความผันผวน
ความผันผวนวัดขนาดโดยทั่วไปของการเคลื่อนไหวรายวันในทิศทางใดทิศทางหนึ่ง ส่วน Maximum drawdown วัดเส้นทางขาลงเฉพาะช่วงหนึ่ง ทั้งสองเป็นตัวเลขด้านความเสี่ยง แต่ตอบคำถามคนละข้อ ตารางนี้แสดงข้อมูลเปรียบเทียบสำหรับบริษัทชื่อคุ้นเคยแปดแห่งตลอดช่วงห้าปีจนถึงวันที่ 31 กรกฎาคม 2026 โดยคำนวณความผันผวนเป็นรายปีจากราคาปิดรายวัน
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ควรอ่านตัวเลขทั้งสองคอลัมน์ประกอบกัน VZ มีการปรับตัวลงลึกที่สุดในกลุ่มที่ 45.4% เทียบกับความผันผวนรายปีที่ 22.6% ส่วนด้านที่ปรับตัวลงน้อยที่สุดคือ KO ซึ่งลดลง 20.9% และมีความผันผวน 16.7% ความผันผวนเป็นค่าเฉลี่ยของทุกวันในช่วงเวลาที่พิจารณา และค่าเฉลี่ยอาจไม่สะท้อนการปรับตัวลงอย่างช้า ๆ เป็นเวลานาน ส่วน Drawdown คือเส้นทางที่เลวร้ายที่สุดเพียงเส้นเดียวซึ่งราคาปรับตัวลงจริง หุ้นที่มีการเคลื่อนไหวเงียบและค่อย ๆ ลดลงเป็นเวลาสองปี อาจมี Maximum drawdown สูง แม้ค่าความผันผวนจะดูไม่โดดเด่น
ภาวะความผิดปกติของหุ้นที่มีความผันผวนต่ำ พิจารณาพฤติกรรมของหุ้นที่เคลื่อนไหวอย่างสงบในกรอบเวลาระยะยาว ขณะที่ การกำหนดขนาดสถานะตามเกณฑ์ Kelly แสดงให้เห็นว่าระดับ Drawdown ที่นักลงทุนยอมรับได้แปลงเป็นขนาดสถานะได้อย่างไร
สิ่งที่ตัวเลขไม่สามารถบอกได้
มีข้อจำกัดสี่ประการที่ควรคำนึงถึง:
- ตัวเลขนี้มาจากเส้นทางที่เกิดขึ้นจริงเพียงเส้นทางเดียว กระบวนการเดียวกันอาจให้ตัวเลขที่แย่กว่านี้มากหากเกิดลำดับเหตุการณ์แตกต่างออกไป
- ตัวเลขนี้ขึ้นอยู่กับความยาวของกลุ่มตัวอย่าง ดังนั้นการเปรียบเทียบ drawdown สองรายการควรทำบนช่วงเวลาที่มีความยาวตรงกันเท่านั้น
- ตัวเลขนี้ขึ้นอยู่กับความถี่ในการเก็บข้อมูล ราคาปิดสิ้นเดือนจะไม่สะท้อนจุดต่ำสุดระหว่างวัน และให้ตัวเลขที่น้อยกว่าราคาปิดรายวันเมื่อพิจารณาช่วงเวลาเดียวกัน
- ตัวเลขนี้ไม่มีข้อมูลสำหรับคาดการณ์อนาคต การที่ราคาอยู่ต่ำกว่าจุดสูงสุด 30% ไม่ได้บอกว่า จุดที่ 31 จะเกิดขึ้นในวันพรุ่งนี้หรือไม่
ข้อจำกัดประการสุดท้ายนี้เป็นเหตุผลที่ระบบอัตโนมัติต้องมีนโยบายจัดการ drawdown ไม่ใช่เพียงเกณฑ์ drawdown “หยุดเมื่อถึง 20%” ตอบคำถามได้เพียงข้อเดียว และยังปล่อยให้มีอีกสองข้อที่ไม่ได้รับคำตอบ ได้แก่ เมื่อหยุดระบบแล้วจะจัดการสถานะที่เปิดอยู่เช่นไร และต้องมีหลักฐานใดจึงจะเปิดระบบกลับมาใช้งานอีกครั้ง Circuit breakers สำหรับบอตเทรดอธิบายโครงสร้างของนโยบายดังกล่าว ต้นทุนของกฎแบบตายตัวที่กำหนดขึ้นโดยไม่มีหลักเกณฑ์จะปรากฏในช่วงฟื้นตัว เพราะระบบที่หยุดใกล้จุดต่ำสุดและกลับมาเริ่มทำงานช้าจะพลาดช่วงราคาปรับขึ้น การพลาดวันที่ให้ผลตอบแทนดีที่สุดแสดงตัวเลขของผลกระทบดังกล่าว
ก่อนเปรียบเทียบตัวเลขสองรายการ มีรายละเอียดด้านการวัดหนึ่งประการที่สำคัญ: drawdown จากชุดข้อมูลราคาของกองทุนกับ drawdown ของบัญชีจริงจะแตกต่างกันเมื่อมีเงินสดไหลเข้าออก และเมื่อมีการจ่ายเงินปันผล ซึ่ง วิธีวัดผลตอบแทนรายเดือนอธิบายไว้อย่างครบถ้วนแล้ว
คำถามที่พบบ่อยเกี่ยวกับ Maximum drawdown
Maximum drawdown ระดับใดจึงถือว่าดี?
ไม่มีตัวเลขสากล มีเพียงเกณฑ์เปรียบเทียบและช่วงเวลาที่ใช้วัด ในช่วงสิบปีจนถึงวันที่ 31 กรกฎาคม 2026 การปรับลดลงมากที่สุดของ SPY จากจุดสูงสุดก่อนหน้า วัดจากราคาปิดรายวันอยู่ที่ 34.2% กลยุทธ์ที่รายงานตัวเลขต่ำกว่าในช่วงเวลาที่สั้นกว่าไม่ได้หมายความว่าจะมีความปลอดภัยมากกว่าเสมอไป
Maximum drawdown เหมือนกับความผันผวนหรือไม่?
ไม่เหมือนกัน ความผันผวนอธิบายการเคลื่อนไหวรายวันที่เกิดขึ้นโดยทั่วไป ส่วน Maximum drawdown อธิบายเส้นทางจากจุดสูงสุดสู่จุดต่ำสุดที่เลวร้ายที่สุดเพียงครั้งเดียว สินทรัพย์ที่มีความผันผวนต่ำแต่ปรับลดลงต่อเนื่องเป็นเวลาสองปี อาจมี Maximum drawdown ลึกกว่าสินทรัพย์ที่ราคาแกว่งตัวมากแต่ยังทำจุดสูงสุดใหม่ได้อย่างต่อเนื่อง
ต้องใช้เวลานานเท่าใดจึงจะฟื้นตัวจาก Maximum drawdown?
ระยะเวลาแตกต่างกัน และช่วงฟื้นตัวกลับขึ้นมักกินเวลานานกว่าช่วงปรับลดลง สำหรับ SPY นับตั้งแต่ปี 2016 ช่วงที่ราคาต่ำกว่าจุดสูงสุดเดิมนานที่สุดและสิ้นสุดลงเมื่อทำจุดสูงสุดใหม่ กินเวลา 181 วันตามปฏิทินนับจากจุดสูงสุดถึงจุดสูงสุดใหม่ โดยใช้เวลา 33 วันในช่วงปรับลดลง
Maximum drawdown ใช้ทำนายผลขาดทุนในอนาคตได้หรือไม่?
ไม่ได้ ตัวเลขนี้อธิบายเส้นทางหนึ่งที่เกิดขึ้นแล้ว และช่วงเวลาที่ใช้วัดนานขึ้นมักทำให้ได้ตัวเลขที่สูงขึ้นเสมอ โดยบันทึกเฉพาะสิ่งที่กลยุทธ์เคยผ่านพ้นมาแล้ว และไม่ได้กำหนดขอบเขตของสิ่งที่จะเกิดขึ้นต่อไป
แผงข้อมูลทุกส่วนข้างต้นจัดเก็บ SQL ที่อยู่เบื้องหลังไว้ เปิดแผงใดแผงหนึ่ง เปลี่ยน ticker หรือช่วงเวลา แล้วเรียกใช้การคำนวณ drawdown แบบเดียวกันบนเทอร์มินัล Strasmore