Bloomberg Query Language (BQL) เบื่องต้น
การใช้ BQL เพื่อดึงข้อมูลการลงทุนตอนที่ 1
ในการวิเคราะห์การลงทุนแบบมืออาชีพเราจำเป็นต้องใช้ข้อมูลจำนวนมหาศาล หนึ่งในแหล่งข้อมูลด้านการลงทุนที่สำคัญคือผู้ให้บริการด้านข้อมูลการลงทุน(Investments Data Provider) หนึ่งในนั้นคือ Bloomberg ผู้ให้บริการข้อมูลทางการเงินที่ใหญ่อันดับต้น ๆ
Bloomberg Query Language (BQL) คือ API ใหม่สำหรับการดึงข้อมูลด้านการลงทุนจาก Bloomberg ได้สะดวกมากยิ่งขึ้น
เปรียบเทียบกับ BDP (คนที่ไม่เคยใช้ข้ามไปได้เลย)
BDP หรือ Bloomberg Data Point คือ API เดิมของ Bloomberg สำหรับการดึงข้อมูล จริง ๆ แล้ว BQL คล้ายคลึงกับ BDP ค่อนข้างมาก ตัวอย่างเช่น เราต้องการดึงราคาปัจจุบันของ AAPL
เราสามารถดึงได้ดังนี้
- using BDP
=BDP("AAPL US Equity", "PX_LAST")
- using BQL
=BQL("AAPL US Equity", "PX_LAST")
จะเห็นได้ว่าเหมือนกันเปะเลย แต่สำหรับ BDP หากเราต้องการดึงข้อมูลสองค่าสำหรับหลักทรัพย์ตัวเดิมใน BDP เราต้องเขียนสูตรใหม่ แต่สำหรับ BQL เราสามารถดึงด้วยสูตรเดียวซึ่งทำให้การดึงข้อมูลได้ง่ายดายขึ้น
=BDP(“AAPL US Equity”, “PX_LAST”)=BDP(“AAPL US Equity”, “VOLUME”)=BQL(“AAPL US Equity”, “PX_LAST, PX_VOLUME”)
เริ่มเขียน BQL
เราสามารถเขียน BQL ได้ทั้งใน excel หรือ Python ใน Jupiter หรือ BQUANT ถ้าใน Python เราอาจต้องทำสิ่งต่อไปนี้
import bqlbq = bql.Service()
โครงสร้างของ BQL.Query แบ่งออกเป็นสามส่วน:
let
: คือการกำหนดตัวเเปรที่จะใช้ (ไม่จำเป็นต้องใส่)get
: สิ่งที่เราอยากรู้for
: เราอยากรู้ค่าของอะไร
เราสามารถกำหนดตัวแปรในส่วนแรกเพื่อดึงข้อมูล ทำให้เราประหยัดเวลาในการเขียนสูตรเดิมหลายๆรอบ และลดข้อผิดพลาดได้
universe = 'AAPL US Equity'vol = bq.data.px_volume('-30D', '0D') req = bql.Request(universe, vol) res = bq.execute(req)
จาก code ด้านบนเราจะเห็นว่าเราสามารถเพิ่มหลักทรัพย์หรือค่าต่าง ๆ ได้ในสูตรเดียว แต่หากเราต้องการค่าเป็นช่วงเวลาก็สามารถทำได้ดังนี้
universe = 'AAPL US Equity'vol = bq.data.px_volume('-30D', '0D') price = bq.data.px_last('-30D', '0D') req = bql.Request(universe, [price, vol]) res = bq.execute(req)