VectorBT: เฟรมเวิร์กการทดสอบย้อนหลังที่เร็วที่สุดสำหรับ Python

ภาพรวมของ VectorBT - ไลบรารีวิเคราะห์เชิงปริมาณที่เปลี่ยนแนวทางการทดสอบย้อนหลัง ด้วยพลังของ NumPy และ Numba

VectorBT Overview

หากคุณเคยทำงานด้าน algotrading และการทดสอบย้อนหลังกลยุทธ์การซื้อขายบน Python คุณน่าจะเคยเผชิญกับปัญหาเดียวกัน: ความเร็ว ไลบรารีแบบคลาสสิก (เช่น Backtrader หรือ Zipline) ใช้แนวทางเชิงวัตถุ (object-oriented) โดยวนซ้ำผ่านข้อมูลประวัติศาสตร์ทีละเหตุการณ์ (event-driven) ซึ่งสะดวกสำหรับการเขียนลอจิก แต่เมื่อต้องปรับแต่งพารามิเตอร์บนการผสมผสานนับพันรายการ การรอเป็นชั่วโมงก็กลายเป็นเรื่องที่ทนไม่ได้

และนี่คือที่มาของ VectorBT — ไลบรารีวิเคราะห์เชิงปริมาณที่ใช้แนวทางที่แตกต่างโดยพื้นฐานในการทดสอบย้อนหลัง

VectorBT คืออะไร?

What is VectorBT

VectorBT ทำงานเฉพาะกับออบเจ็กต์ pandas และ NumPy และใช้คอมไพเลอร์ Numba เพื่อเร่งความเร็วในการคำนวณ ซึ่งช่วยให้วิเคราะห์ข้อมูลใดก็ได้ด้วยความเร็วและความสามารถในการขยายขนาดที่น่าทึ่ง สามารถทดสอบกลยุทธ์นับหมื่นรายการในเวลาเพียงไม่กี่วินาที

แทนที่จะประมวลผลแต่ละแท่งหรือติ๊กตามลำดับ (เหมือนกับที่ backtesters แบบดั้งเดิมทำ) VectorBT แทนค่าข้อมูลที่ซับซ้อนเป็นอาร์เรย์ที่มีโครงสร้าง การแปลงการดำเนินการให้เป็นเวกเตอร์ร่วมกับ Numba (ซึ่งแก้ปัญหาการพึ่งพาเส้นทางโดยอนุญาตให้คอมไพล์ลูป Python เป็นรหัสเครื่อง) ให้ประสิทธิภาพในระดับภาษา C

คุณสมบัติหลัก

VectorBT Key Features

  • การทดสอบย้อนหลังแบบเวกเตอร์: ทดสอบกลยุทธ์ด้วยโค้ดเพียงไม่กี่บรรทัด ไม่มีลูป Python ที่ช้า
  • การปรับแต่งขนาดใหญ่: ปรับแต่งกลยุทธ์การซื้อขายของคุณพร้อมกันบนพารามิเตอร์หลายตัว กรอบเวลา และสินทรัพย์ต่างๆ ในครั้งเดียว
  • การแสดงผลแบบโต้ตอบ: การผสานรวมในตัวกับ Plotly และ Jupyter Widgets ช่วยให้สร้างแผนภูมิและแดชบอร์ดที่ซับซ้อนอย่างยิ่ง (เหมือน Tableau) ได้โดยตรงใน Jupyter Notebook โดยไม่มีความล่าช้าในการเรนเดอร์ที่เห็นได้ชัด
  • ไม่สูญเสียการควบคุม: ต่างจากแพลตฟอร์มบนคลาวด์เช่น TradingView ข้อมูลและอัลกอริทึมของคุณจะอยู่กับคุณเท่านั้น ในขณะเดียวกันประสิทธิภาพการคำนวณเทียบเท่า และมักจะเกินกว่าแพลตฟอร์มสำเร็จรูป
  • การเตรียมข้อมูล: ชุดเครื่องมือที่ยอดเยี่ยมสำหรับการวิเคราะห์อนุกรมเวลาและวิศวกรรมคุณลักษณะสำหรับโมเดลการเรียนรู้ของเครื่อง

วิธีการทำงาน (ตัวอย่าง)

How it works - Strategy Pipeline

สมมติว่าเราต้องการทดสอบกลยุทธ์ Dual Moving Average Crossover (DMAC) แบบคลาสสิกบน Bitcoin (BTC)

ในเฟรมเวิร์ก OOP แบบคลาสสิก คุณจะต้องสร้างคลาสกลยุทธ์ อธิบายลอจิก next() ที่ทำงานบนแต่ละแท่ง และวนซ้ำผ่านแท่งทั้งหมด ใน VectorBT ทุกอย่างสวยงามและรวดเร็วกว่ามาก:

import vectorbt as vbt

# 1. Download price data (using built-in Yahoo Finance downloader)
btc_price = vbt.YFData.download('BTC-USD', start='2019-01-01 UTC', end='2020-01-01 UTC').get('Close')

# 2. Calculate fast and slow moving averages.
# You can pass an ARRAY of periods at once to test all combinations!
fast_ma = vbt.MA.run(btc_price, [10, 20], short_name='fast')
slow_ma = vbt.MA.run(btc_price, [30, 30], short_name='slow')

# 3. Generate entry and exit signals (line crossover)
entries = fast_ma.ma_crossed_above(slow_ma)
exits = fast_ma.ma_crossed_below(slow_ma)

# 4. Assemble a portfolio based on the received signals and see the result
pf = vbt.Portfolio.from_signals(btc_price, entries, exits)

print(pf.total_return())

ในตัวอย่างนี้ เราทดสอบ หลาย รูปแบบของกลยุทธ์ DMAC พร้อมกันในพริบตาเดียว: การผสมผสาน (10, 30) และ (20, 30) ผลลัพธ์ (ในรูปของคอลัมน์) จะเป็นผลตอบแทนสำหรับแต่ละชุดพารามิเตอร์:

fast_window  slow_window
10           30             0.848840
20           30             0.543411
Name: total_return, dtype: float64

ต้องการเพิ่ม Ethereum, Solana และเหรียญอีกหลายสิบตัวหรือไม่? เพียงรวมราคาของพวกมันเป็น DataFrame เดียว ต้องการทดสอบช่วงเวลาที่แตกต่างกันหรือไม่? ใช้ฟังก์ชัน range_split การแสดงผลแบบเวกเตอร์ช่วยให้คุณขยายมิติได้แทบไม่มีขีดจำกัด (ตราบเท่าที่มี RAM เพียงพอ)

VectorBT PRO

VectorBT PRO Elite Tools

ยังมีเวอร์ชันเชิงพาณิชย์ของไลบรารีด้วย — VectorBT PRO ซึ่งเพิ่มเครื่องมือที่ทรงพลังยิ่งขึ้น มีการประมวลผลแบบขนาน การปรับแต่งพอร์ตโฟลิโอขั้นสูง การจดจำรูปแบบราคา การฉายภาพเหตุการณ์ การคำนวณการซื้อขายมาร์จิ้นและคำสั่งซื้อแบบ limit และเมตริกสำคัญสำหรับการซื้อขายจริงอีกกว่าร้อยรายการ

ทำไมต้องใช้ VectorBT?

หากคุณแค่ต้องการ "รัน" กลยุทธ์เดียวบนเครื่องมือเดียว เฟรมเวิร์กมาตรฐานก็อาจเพียงพอ แต่หากเป้าหมายของคุณคือการวิเคราะห์เชิงสำรวจ การหารูปแบบทางสถิติ (alpha) การทดสอบสมมติฐานบนเครื่องมือนับพันรายการพร้อมกัน VectorBT จะเป็นการค้นพบที่แท้จริงสำหรับคุณ

มันคือเครื่องมือของนักวิทยาศาสตร์ข้อมูลที่นำมาใช้ในการซื้อขาย มันให้ข้อได้เปรียบด้านข้อมูลที่แข่งขันได้โดยสามารถตรวจสอบแนวคิดได้เร็วกว่าผู้เข้าร่วมตลาดรายอื่นที่ใช้ Python สิบถึงร้อยเท่า