พอร์ตคุณมีหุ้น 8 ตัว แต่คุณอ่านข่าวทั้งตลาด — วิธีเฝ้าพอร์ตแบบกองทุน ที่รายย่อยทำได้ในคลิกเดียว
กองทุนไม่ได้ไล่อ่านทุกข่าว เขาตีกรอบวอทช์ลิสต์ก่อน แล้วค่อยสแกนเฉพาะหุ้นในลิสต์ตัวเอง — บทความนี้เดินให้ดูวิธีเอาไฟล์ Excel พอร์ตของคุณอัปโหลดเข้า Terminal (สูงสุด 50 ตัว) แล้วถามภาษาไทยคำถามเดียว ให้ระบบกางคำชี้แจงผู้บริหาร (MD&A) ของหุ้นทุกตัวในพอร์ตมาวางเทียบกัน พร้อมของจริง 3 วอทช์ลิสต์ที่ยกคำต่อคำจากแบบ 56-1 ให้กดตรวจต้นฉบับ และโค้ด API สำหรับทีมที่อยากรันเป็น pipeline
พอร์ตคุณมีหุ้น 8 ตัว แต่คุณอ่านข่าวทั้งตลาด — วิธีเฝ้าพอร์ตแบบกองทุน ที่รายย่อยทำได้ในคลิกเดียว
กองทุนไม่ได้ไล่อ่านทุกข่าว เขาตีกรอบวอทช์ลิสต์ก่อน แล้วค่อยสแกนเฉพาะหุ้นในลิสต์ตัวเอง — บทความนี้เดินให้ดูวิธีเอาไฟล์ Excel พอร์ตของคุณอัปโหลดเข้า Terminal (สูงสุด 50 ตัว) แล้วถามภาษาไทยคำถามเดียว ให้ระบบกางคำชี้แจงผู้บริหาร (MD&A) ของหุ้นทุกตัวในพอร์ตมาวางเทียบกัน พร้อมของจริง 3 วอทช์ลิสต์ที่ยกคำต่อคำจากแบบ 56-1 ให้กดตรวจต้นฉบับ และโค้ด API สำหรับทีมที่อยากรันเป็น pipeline
เช้าวันหนึ่ง คุณเปิดมือถือขึ้นมาเจอข่าวหุ้น 40 หัวข้อ อ่านไป 20 นาที ปิดจอ แล้วรู้สึกว่า "อัปเดตแล้ว"
แต่ลองย้อนถามตัวเองตรง ๆ: ใน 40 หัวข้อนั้น มีกี่หัวข้อที่พูดถึงหุ้นที่คุณถืออยู่จริง ๆ — ไม่ใช่หุ้นที่กำลังดัง ไม่ใช่หุ้นที่เพื่อนถาม แต่หุ้น 8 ตัวที่มีเงินคุณอยู่ในนั้น
คำตอบของคนส่วนใหญ่คือ ศูนย์ถึงหนึ่ง
นี่คือความต่างที่ใหญ่ที่สุดข้อหนึ่งระหว่างรายย่อยกับคนที่อ่านงบเป็นอาชีพ และมันไม่ใช่เรื่องความฉลาดหรือข้อมูลลับ — มันคือเรื่องการตีกรอบ ฝั่งสถาบันไม่เคยเริ่มจากข่าว เขาเริ่มจาก "รายชื่อ" เสมอ: coverage universe ของนักวิเคราะห์ · watchlist ของผู้จัดการกองทุน · พอร์ตลูกหนี้ของฝ่ายสินเชื่อ ตีกรอบก่อน แล้วค่อยสแกนหาสัญญาณ เฉพาะในกรอบนั้น
บทความนี้จะเดินให้ดูว่าคุณทำแบบเดียวกันได้ยังไง โดยไม่ต้องมีทีมข้อมูล ไม่ต้องเขียนโค้ด — แค่เอาไฟล์ Excel พอร์ตที่คุณมีอยู่แล้วโยนเข้าไป

ก่อน–หลังกรอง (ภาพจาก UI จริง ไม่ใช่ภาพจำลอง): ถามแนวคิดเดียว "การบริโภคชะลอตัว" — ค้นทั้งตลาดเจอ 23 บริษัท พอใส่วอทช์ลิสต์ CPALL · CRC · HMPRO · BJC · CPN ผลบีบเหลือ 5 บริษัทในลิสต์ทันที (สังเกตตัวเลข "บริษัท" และรายชื่อผลลัพธ์เปลี่ยน) ทุกใบยกข้อความต้นฉบับ + ลิงก์ 56-1 ให้ตรวจ
1. Noise กับ Focus: ตารางที่อธิบายว่าทำไมอ่านเยอะแล้วยังตามไม่ทัน
ผมทำงานฝั่ง model risk ในแบงก์มาหลายปี และสิ่งที่เห็นชัดที่สุดเวลานั่งดูคนทำงานสายสถาบันคือ เขาอ่านน้อยกว่ารายย่อยหลายเท่า แต่รู้ลึกกว่ามาก เพราะเขาไม่ได้แข่งกันอ่านให้เยอะ เขาแข่งกันอ่าน "ให้ตรงชื่อ"
| รายย่อยส่วนใหญ่ (Noise) | ฝั่งสถาบัน (Focus) | |
|---|---|---|
| เริ่มจากอะไร | ข่าว/โพสต์ที่ไหลผ่านตา | รายชื่อหุ้นที่ตัวเองรับผิดชอบ |
| ขอบเขต | ทั้งตลาด + ทุกเรื่องที่กำลังดัง | universe ที่ตีกรอบไว้ ~20–50 ชื่อ |
| แหล่งข้อมูล | พาดหัว · ความเห็นคนอื่น | เอกสารต้นทาง (56-1 / MD&A) |
| จังหวะการอ่าน | ทุกครั้งที่มีข่าวเด้ง | เป็นรอบ — ทุกไตรมาสที่งบออก |
| คำถามที่ถาม | "วันนี้มีอะไรน่าซื้อ" | "หุ้นที่ผมถืออยู่ ท่าทีผู้บริหารเปลี่ยนไปไหม" |
| ผลลัพธ์ | รู้กว้าง แต่ไม่ลึกสักตัว | รู้ลึกเฉพาะตัวที่มีเงินอยู่จริง |
สังเกตแถวสุดท้ายให้ดี — ปัญหาของการอ่านหว่านแหไม่ใช่ "เสียเวลา" อย่างเดียว แต่มันทำให้คุณ มีความเห็นต่อทั้งตลาด แต่ไม่มีข้อมูลลึกพอกับหุ้นที่คุณถือ ซึ่งเป็นหุ้นกลุ่มเดียวที่กำไร-ขาดทุนของคุณผูกอยู่ด้วยจริง ๆ
และของที่บอกคุณได้ดีที่สุดว่า "ท่าทีเปลี่ยนไปไหม" ไม่ใช่ข่าว — มันคือ MD&A (คำอธิบายและวิเคราะห์ของฝ่ายจัดการ) ในแบบ 56-1 ที่ผู้บริหารต้องเขียนเองทุกไตรมาส เอกสารเปิดฟรีทุกคนโหลดได้ แต่แทบไม่มีรายย่อยคนไหนอ่านครบทั้งพอร์ต เพราะมันยาวและกระจายอยู่คนละไฟล์ (ถ้ายังไม่เคยเปิดเล่มจริง ผมแกะโครงสร้างไว้ที่อ่าน One Report / 56-1 ให้เป็น)
ทำไมมันสำคัญกับเรา: การตีกรอบวอทช์ลิสต์ไม่ได้แปลว่าคุณ "ปิดหูปิดตา" กับตลาด มันแปลว่าคุณเลือกใช้เวลาที่มีจำกัดกับชื่อที่คุณต้องตัดสินใจจริง — ซื้อเพิ่ม ถือต่อ หรือขายทิ้ง ส่วนที่เหลือของตลาดยังค้นได้เสมอเมื่อถึงเวลาหาของใหม่
2. สถาปัตยกรรม 2 ทาง: ทางที่กองทุนเดิน กับทางที่ผมทำปุ่มไว้ให้คุณแล้ว
หัวใจของการ "เฝ้าพอร์ตแบบสถาบัน" คือกลไกเดียว: เอารายชื่อของตัวเองใส่เข้าไปในระบบค้นก่อน แล้วค่อยถามคำถาม ต่างกันแค่ว่าฝั่งไหนต้องจ้างคนทำ
ทางเลือกที่ 1 — แบบสถาบัน (ต้องมีคนเขียนโค้ด)
coverage.csv (200 ชื่อ)
│
▼
Data Engineer เขียนสคริปต์ ── ตัดเป็นก้อนละ 50 ชื่อ ──┐
│ │
▼ ▼
วนยิง REST API ทุกก้อน ─────────────► รวมผล → เขียนออกเป็นไฟล์ Excel
│
▼
ตั้ง cron ทุกเช้า → วางลงชีตกลางให้ทีมอ่าน
ต้นทุน: เงินเดือนคนเขียน + คนดูแล pipeline
ทางเลือกที่ 2 — แบบคุณ (ไม่มีโค้ดสักบรรทัด)
ไฟล์พอร์ตของคุณใน Excel (8 ชื่อ)
│ Save As → .csv (หรือก็อปคอลัมน์ชื่อหุ้นมาวางเฉย ๆ ก็ได้)
▼
ปุ่ม “นำเข้าหุ้น (watchlist)” บน Terminal
│
▼
พิมพ์คำถามเป็นภาษาไทย 1 บรรทัด
│
▼
คำชี้แจงผู้บริหารของหุ้นทุกตัวในพอร์ต วางเทียบกัน + ลิงก์ 56-1 ให้กดตรวจ
ต้นทุน: 1 เครดิต (พอร์ต ≤25 ตัว) จากโควตาฟรี 10 เครดิต/วัน
สองทางนี้จบที่ผลลัพธ์หน้าตาเดียวกัน ต่างกันแค่ใครเป็นคนประกอบท่อ — และท่อฝั่งขวาผมประกอบเสร็จแล้ว เหลือแค่คุณโยนไฟล์เข้าไป
3. ลงมือจริง วิธีที่ 1: พิมพ์รายชื่อหุ้นในพอร์ตลงช่อง "กรอง"
ในหน้าเครื่องมือ ใต้ช่องค้นหาหลักจะมีแถว "กรอง:" พร้อมช่องใส่ชื่อย่อหุ้น คุณพิมพ์ (หรือวาง) รายชื่อคั่นด้วยเว้นวรรคหรือจุลภาคก็ได้ เช่น PTT, SCB, KBANK แล้วพิมพ์ "เรื่องที่อยากรู้" ลงช่องหลัก ระบบจะบีบผลให้เหลือเฉพาะหุ้นเหล่านั้น — เว้นช่องนี้ว่างไว้ = ค้นทั้งตลาดเหมือนเดิม
จุดสำคัญที่ต้องเข้าใจ: การค้นยังเป็น semantic (ค้นด้วยความหมาย) เหมือนเดิม — ตัวกรองแค่จำกัด "ขอบเขตบริษัท" ไม่ได้เปลี่ยนวิธีค้นเป็นคำเป๊ะ คุณเลยยังพิมพ์ "การบริโภคชะลอตัว" แล้วเจอบริษัทที่เขียนว่า "cautious consumer spending" ได้ แม้คนละคำคนละภาษา (ทำไมถึงเป็นแบบนั้น อ่านsemantic search ต่างจากค้นคำเป๊ะยังไง)
บนหน้าเว็บ คุณแค่พิมพ์ ไม่ต้องเขียนโค้ด — แต่เพื่อให้เห็นว่าเบื้องหลังตัวกรองมันทำอะไร ผมแปะโค้ดเชิงแนวคิดกำกับไว้ (API สำหรับทีม/องค์กรอยู่ในแผน beta — ดูหัวข้อที่ 8):
# ตัวอย่างเชิงแนวคิด — บนหน้าเว็บพิมพ์ในช่องได้เลย
from boomleverage import mdna
hits = mdna.search(
"การบริโภคชะลอตัว", # แนวคิด (semantic)
tickers=["CPALL", "CRC", "HMPRO", "BJC", "CPN"], # กรองเฉพาะลิสต์คุณ
top_k=10,
)
for r in hits["results"]:
print(r["ticker"], f"ปี {r['fy']}", r["period"])
print(r["snippet_verbatim"]) # ข้อความจริงจาก MD&A (verbatim)
print(r["source_url"]) # ลิงก์ไฟล์ 56-1 ต้นฉบับ ก.ล.ต.
ข้อจำกัดที่ตั้งใจใส่: กรองได้ สูงสุด 50 ตัวต่อครั้ง — พอสำหรับพอร์ตรายย่อยแทบทุกคน (และพอสำหรับ coverage ของนักวิเคราะห์ส่วนใหญ่ด้วย) แต่กันไม่ให้ใครกรอง "ทั้งตลาด" รวดเดียวเพื่อดูดข้อมูล ถ้าใส่เกิน ระบบจะหยิบ 50 ชื่อแรกให้แล้วบอกตรง ๆ ว่าตัดที่เท่าไหร่
เรื่องเครดิตที่ควรรู้ก่อนกด: ค้นทั้งตลาดหรือเลือก ≤25 บริษัท = 1 เครดิต · ทุก 25 ชื่อที่เพิ่มขึ้น = +1 เครดิต (เลือก 50 ชื่อ = 2 เครดิต) แปลว่าพอร์ตรายย่อยขนาดปกติ 8–25 ตัว สแกนได้วันละ 10 คำถามด้วยแพ็กฟรี โดยไม่ต้องผูกบัตร
4. ลงมือจริง วิธีที่ 2: โยนไฟล์ Excel พอร์ตของคุณเข้าไปเลย
ถ้าพอร์ตของคุณอยู่ใน Excel อยู่แล้ว (ไฟล์ที่จดต้นทุน จำนวนหุ้น กำไรขาดทุน) ไม่ต้องพิมพ์ทีละตัว — กดปุ่ม "นำเข้าหุ้น (watchlist)" แล้วอัปโหลดไฟล์ CSV ได้เลย ระบบอ่าน คอลัมน์แรกของแต่ละแถวเป็นชื่อย่อหุ้น ซึ่งเป็นรูปแบบมาตรฐานของไฟล์ export วอทช์ลิสต์แทบทุกเจ้า เพราะฉะนั้นไฟล์หน้าตาแบบนี้ใช้ได้ทันที:
Symbol
PTT
AOT
CPALL
ในกล่องนำเข้ามีปุ่ม ดาวน์โหลดเทมเพลต (mdna-watchlist-template.csv) ที่มีหัวคอลัมน์ Symbol มาให้ — เปิดด้วย Excel/Google Sheets วางชื่อหุ้นในพอร์ตคุณลงคอลัมน์แรก เซฟเป็น .csv แล้วอัปโหลดกลับ จบใน 3 ขั้น
เคล็ดลับจากไฟล์ Excel จริง: ไฟล์พอร์ตส่วนใหญ่มีหลายคอลัมน์ (ชื่อหุ้น · จำนวน · ต้นทุน · มูลค่า…) — แค่จัดให้ คอลัมน์ชื่อย่อหุ้นเป็นคอลัมน์แรก แล้ว Save As → CSV ระบบจะหยิบเฉพาะคอลัมน์แรกไปใช้ คอลัมน์อื่นไม่กระทบ และไม่ถูกส่งไปไหน
ขี้เกียจเซฟไฟล์ก็ได้ — ก็อปคอลัมน์ชื่อหุ้นจาก Excel มาวางในกล่องนำเข้าตรง ๆ ระบบตัดบรรทัด/จุลภาค/แท็บให้เอง แล้วดึงเฉพาะชื่อย่อหุ้นออกมา (ช่องรับทั้งไฟล์
.csv/.txtและข้อความที่วางมือ)
กรองปี/งวดซ้อนเข้าไปอีกชั้น
นอกจากกรองบริษัท ยังมีตัวกรอง ปีงบการเงิน และ งวด (Q1–Q4 / งบทั้งปี) ให้บีบแคบลงได้อีก สามชั้นซ้อนกันคือท่าที่ทำให้คุณเจาะไปที่ "ช่วงเวลาที่สงสัย" ของ "หุ้นที่คุณถือ" ได้ตรงจุด:
คำถาม: "การตั้งสำรองหนี้เพิ่มขึ้น"
└─ ชั้นที่ 1 · หุ้น → BBL, KBANK, SCB, KTB, TTB (พอร์ตแบงก์ของคุณ)
└─ ชั้นที่ 2 · ปี → 2565 (ปีที่คุณสงสัย)
└─ ชั้นที่ 3 · งวด → ไตรมาส 2 (งวดที่ตัวเลขเริ่มแปลก)
⇒ เหลือเฉพาะย่อหน้าที่ตอบคำถามคุณจริง ๆ ไม่กี่ย่อหน้า
คลังที่มันไปงมให้คือคำชี้แจงผู้บริหารของบริษัทจดทะเบียนไทย 916 บริษัท ปี พ.ศ. 2564–2569 รวมราว 479,690 ท่อนข้อความ ที่แปลงเป็นพิกัดความหมายรอไว้ล่วงหน้าแล้ว งานที่เหลือของคุณคือคิดว่าจะถามอะไร
5. ของจริง 3 วอทช์ลิสต์ — ลิสต์ต่างกัน คำถามต่างกัน
ทุกผลด้านล่างมาจากระบบจริง ยกข้อความคำต่อคำจากแบบ 56-1 พร้อมลิงก์ให้กดตรวจเอง ผมเลือกมา 3 แบบที่ตรงกับพอร์ตรายย่อยไทยมากที่สุด
วอทช์ลิสต์ค้าปลีก–อุปโภคบริโภค → ถาม "การบริโภคชะลอตัว"
กรองเหลือ CPALL, CRC, HMPRO, BJC, CPN แล้วถามเรื่องกำลังซื้อ — ระบบยกคำชี้แจงที่ผู้บริหารพูดถึงผู้บริโภคระวังการใช้จ่ายมาวางเทียบข้ามเจ้า เช่น HMPRO และ CRC:
HMPRO · ปี 2564 (ไตรมาส 3): "...sales was affected by the temporary stores closure by the order of the Center for COVID-19 Situation Administration (CCSA) and lower consumer purchasing power along with declining of economic situation... the government has relaxed the lockdown measure but the consumer purchasing power has not fully recovered yet..."
CRC · ปี 2566 (ไตรมาส 3): "...cautious in spending amid the economic slowdowns. However, it met customer needs through Omnichannel platforms, the revenue of which was consistently generated, increasing 9% from the previous year..."
— ข้อความบางส่วน (verbatim) จาก MD&A · ตรวจต้นฉบับ HMPRO 56-1 · CRC 56-1
นี่คือสิ่งที่การอ่านข่าวหว่านแหให้คุณไม่ได้: ทั้งสองเจ้าเจอลมต้านเรื่องกำลังซื้อเหมือนกัน แต่เขียนถึงมันคนละท่า — เจ้าหนึ่งบอกว่ากำลังซื้อยังไม่ฟื้น อีกเจ้าบอกว่าลูกค้าระวังใช้จ่ายแต่ตัวเองชดเชยด้วย Omnichannel จนรายได้ยังโต 9% ท่าทีต่างกันแบบนี้อ่านเจอได้ในคลิกเดียวเมื่อคุณวางเทียบในลิสต์เดียวกัน
วอทช์ลิสต์ส่งออก–อิเล็กทรอนิกส์ → ถาม "เงินบาทกระทบกำไร"
กรองเหลือ KCE, HANA, DELTA, IVL, PTT แล้วถามเรื่องอัตราแลกเปลี่ยน — เหมาะกับคนที่ถือกลุ่มส่งออกซึ่งกำไรอ่อนไหวกับค่าเงิน:
HANA · ปี 2565 (ทั้งปี): "...purchasing currency which is primarily USD and the operating currency in each country which we operate..." (ผู้บริหารระบุโครงสร้างสกุลเงินซื้อ-ขายที่เป็นตัวขับความเสี่ยง FX โดยตรง)
— verbatim จาก MD&A ของ HANA · ต้นฉบับ ก.ล.ต.
วอทช์ลิสต์แบงก์ (พอร์ตปันผลยอดฮิต) → ถาม "การตั้งสำรองผลขาดทุนด้านเครดิต"
อันนี้บ้านเกิดของผมเอง กรองเหลือ BBL, KBANK, SCB, KTB, TTB แล้วถามเรื่อง ECL/การตั้งสำรอง — ระบบยกท่อนที่ผู้บริหารพูดถึงระดับสำรองพร้อมตัวเลข bps มาให้:
SCB · ปี 2565 (ไตรมาส 2): "Given a high level of global uncertainty and economic headwinds from accelerating inflation, expected credit losses increased to Baht 10,250 million (175 bps of total loans) in 2Q22. Nonetheless, the Company expects to set aside provisions at not more than 145 bps for full year 2022."
— verbatim จาก MD&A ของ SCB (SCB X) · ต้นฉบับ ก.ล.ต.
ท่อนนี้คือตัวอย่างว่าทำไมต้องอ่านต้นฉบับเอง: มันไม่ใช่แค่ "สำรองเพิ่ม" แต่มีทั้ง ระดับที่เกิดขึ้นจริงในไตรมาส (175 bps) และ เพดานที่ฝ่ายจัดการบอกว่าทั้งปีจะไม่เกิน (145 bps) — สองเลขนี้ต่างกัน และช่องว่างระหว่างมันคือสิ่งที่คนทำสินเชื่อจับตา ถ้าคุณถือหุ้นแบงก์ในพอร์ต นี่คือ Early Warning ที่กวาดทั้งกลุ่มได้ในคำถามเดียว (กรอบคำถามที่คนทำ risk ใช้จริง ผมรวมไว้ที่5 คำถามที่คนทำ risk ใช้อ่าน MD&A)
⚠️ อ่านให้ถูก: ข้อความข้างบนคือ การรายงานสิ่งที่ฝ่ายจัดการเขียนไว้ในเอกสารสาธารณะ ไม่ใช่ความเห็นต่อตัวหุ้น และไม่ใช่การชี้ว่าบริษัทไหนมีปัญหา — บริษัทที่แข็งแรงมากก็เขียนถึงความเสี่ยงเหมือนกัน หน้าที่ของเครื่องมือคือพาคุณไปถึงย่อหน้านั้นให้เร็ว ส่วนการตีความเป็นของคุณ
6. อ่านผลบนจอ แล้วดึงออกเป็น Excel (ถ้าต้องทำงานต่อ)
ผลลัพธ์แต่ละใบยก ข้อความต้นฉบับ (verbatim) จาก MD&A พร้อม ชื่อบริษัท · ปี · งวด · เลขหน้า · ลิงก์ไฟล์ 56-1 ที่ ก.ล.ต. เผยแพร่ — และมีปุ่ม Export Excel ที่ดึงชุดผลจัดอันดับครบ (สูงสุด 100 รายการ) ออกมาเป็นไฟล์ตารางที่เปิดใน Excel ได้ทันที คอลัมน์ที่ได้:
| คอลัมน์ | คือ |
|---|---|
| บริษัท | ชื่อย่อหุ้น |
| ปี (พ.ศ.) · งวด | ปีงบ + ไตรมาส/งบทั้งปี |
| หน้า | เลขหน้าในไฟล์ต้นฉบับ |
| ข้อความ MD&A (ต้นฉบับ) | verbatim ที่ยกมา |
| ลิงก์ SEC | URL ไฟล์ 56-1 ต้นฉบับ |
ปุ่ม Export ต้องมีแพ็กเสียเงิน (DELTA ขึ้นไป) — ตั้งแต่ 2 ส.ค. 2026 การส่งออกเป็นสิทธิ์ของแพ็ก DELTA (฿799) และ GAMMA (฿1,399) ส่วน แพ็กฟรียังอัปโหลดวอทช์ลิสต์ ค้น และอ่านผลบนหน้าจอได้ตามปกติ แค่ดึงชุดเต็มออกเป็นไฟล์ไม่ได้ เหตุผลตรงไปตรงมา: ของฟรีมีไว้ให้ลองจนมั่นใจ ไม่ได้มีไว้เป็นท่อดูดข้อมูล (เทียบแพ็กแบบไม่ขายฝันที่คู่มือเลือกแพ็ก)
อีกเรื่องที่ควรรู้ตั้งแต่ต้น: แพ็กฟรีเห็นย้อนหลังไม่ลึกเท่าตัวอย่างในหัวข้อที่ 5 (เคส 2564–2566 ข้างบนต้องใช้แพ็กที่ลึกกว่า) ของฟรีเหมาะกับการเช็กงบล่าสุดของพอร์ตคุณว่าท่าทีเปลี่ยนไปไหม ซึ่งเป็นคำถามที่รายย่อยถามบ่อยที่สุดอยู่แล้ว — ถ้าวันไหนคุณอยากไล่ทั้งเส้นย้อนหลังหลายปีค่อยขยับ (ตัวอย่างการอ่านข้ามปีด้วยเคส PSL)
7. ทำไมงานนี้เคยเป็นของสถาบันอย่างเดียว
ย้อนกลับไปสามปี ถ้าคุณอยากทำสิ่งที่เพิ่งทำในหัวข้อที่ 5 — สแกนคำชี้แจงผู้บริหารของหุ้น 5 ตัวพร้อมกัน ย้อนหลังหลายไตรมาส — ทางเลือกมีอยู่สองทาง: นั่งเปิดไฟล์ PDF ทีละเล่มทั้งคืน หรือมีทีมข้อมูลของตัวเอง
| รายย่อยเมื่อวาน | ฝั่งสถาบัน | รายย่อยวันนี้ | |
|---|---|---|---|
| เอารายชื่อเข้าระบบยังไง | ไม่มีระบบให้ใส่ | Data Engineer อ่าน CSV เข้า pipeline | อัปโหลด CSV / วางคอลัมน์จาก Excel |
| อ่านได้ทีละกี่บริษัท | 1 (เปิดทีละไฟล์) | ทั้ง universe | สูงสุด 50 ต่อคำถาม |
| ต้องเดาคำให้ตรงไหม | ต้อง และมักเดาผิด | ไม่ต้อง (semantic) | ไม่ต้อง (semantic) |
| ตรวจที่มาได้ไหม | ได้ แต่ช้ามาก | ได้ ผ่านระบบภายใน | ได้ ทุกใบมีเลขหน้า + ลิงก์ ก.ล.ต. |
| ต้นทุน | เวลาทั้งคืน | เงินเดือนทีม | 1 เครดิต (พอร์ต ≤25 ตัว) |
คอลัมน์ขวาสุดคือสิ่งที่บทความนี้พยายามส่งมอบ — ไม่ใช่ข้อมูลที่คุณเข้าถึงไม่ได้ (เอกสารพวกนี้เปิดฟรีมาตลอด) แต่คือ ต้นทุนของการถามคำถามหนึ่งคำถาม ที่ลดลงจนรายย่อยคนเดียวทำได้เอง
8. สำหรับคนที่อยากเป็นฝั่งที่เขียนโค้ดเอง (B2B / quant)
พอลิสต์เกิน 50 ตัว หรืออยากรันเป็น pipeline ทุกไตรมาสโดยไม่ต้องนั่งกดหน้าเว็บ — นั่นคือโจทย์ที่ตัวกรอง tickers ถูกออกแบบมารองรับผ่าน REST API (อยู่ในแผน beta สำหรับทีม/quant/กองทุน) ไอเดียคือ: อ่านไฟล์ CSV ของ coverage คุณ, ตัดเป็นก้อนละ 50, ยิงคำถามเดิมวนทุกก้อน, รวมผลกลับเป็น Excel เดียว
# ตัวอย่างเชิงแนวคิด (API สำหรับทีม/องค์กร — แผน beta)
import csv, requests
BASE = "https://api.boomleverage.com/mdna/v1" # base URL + key ได้รับตอนเปิด beta
# 1) โหลด coverage universe ของคุณจาก CSV (คอลัมน์แรก = ชื่อย่อหุ้น)
with open("my_coverage.csv", encoding="utf-8-sig") as f:
universe = [row[0].strip().upper() for row in csv.reader(f) if row and row[0].strip()]
universe = [t for t in universe if t != "SYMBOL"] # ตัดหัวคอลัมน์ทิ้ง
def chunks(xs, n=50): # ตัดเป็นก้อนละ ≤50 (เพดานตัวกรอง)
for i in range(0, len(xs), n):
yield xs[i:i + n]
# 2) ยิงคำถามเดิมวนทุกก้อน แล้วรวมผล
rows = []
for batch in chunks(universe):
resp = requests.post(
f"{BASE}/query",
headers={"X-Api-Key": "<YOUR_KEY>"},
json={"query": "การตั้งสำรองหนี้เพิ่มขึ้น", "tickers": batch, "top_k": 50},
timeout=30,
).json()
for r in resp["results"]:
rows.append([r["ticker"], r["fy"], r["period"],
r["snippet_verbatim"], r["source_url"]]) # verbatim + ลิงก์ 56-1
# 3) เขียนกลับเป็น CSV ให้เปิดใน Excel ได้ทันที
with open("mdna_scan.csv", "w", newline="", encoding="utf-8-sig") as f:
w = csv.writer(f)
w.writerow(["ticker", "ปี", "งวด", "ข้อความ MD&A (ต้นฉบับ)", "ลิงก์ SEC"])
w.writerows(rows)
อ่านโค้ดข้างบนอีกรอบแล้วสังเกตให้ดีว่ามันทำอะไร: อ่านรายชื่อจากไฟล์ → ตัดเป็นก้อน → ยิงคำถามเดิมทุกก้อน → รวมผลออกเป็นตาราง เท่านั้นเอง นี่คืองานที่กองทุนจ่ายเงินเดือนให้ data engineer นั่งเขียนและดูแล
และมันคือ สิ่งเดียวกันเป๊ะกับที่เกิดขึ้นตอนคุณกดปุ่ม "นำเข้าหุ้น (watchlist)" แล้วโยนไฟล์ Excel พอร์ตของคุณเข้าไป — ต่างกันแค่ผมเขียนส่วนนั้นไว้ให้แล้ว คุณเลยไม่ต้องรู้จัก requests ไม่ต้องมี API key ไม่ต้องแก้ encoding ให้ภาษาไทยไม่เพี้ยน แค่พิมพ์คำถามเป็นภาษาไทยว่าอยากรู้อะไรกับพอร์ตตัวเอง
(ทีมที่ต้องการ API หรือ seats จริง ๆ คุยได้ที่หน้าสินค้า หรือหน้า Enterprise)
9. การบ้าน 5 นาทีคืนนี้: สแกนพอร์ตตัวเองก่อนตลาดเปิดพรุ่งนี้
ผมอยากให้จบบทความนี้ด้วยการลงมือ ไม่ใช่การพยักหน้า — และมันใช้เวลาไม่ถึงห้านาทีจริง ๆ
- เปิด Boom Leverage Terminal → กด "นำเข้าหุ้น (watchlist)" → ดาวน์โหลดเทมเพลต (
mdna-watchlist-template.csv) - วางชื่อหุ้นในพอร์ตคุณลงคอลัมน์แรก (หรือก็อปคอลัมน์จากไฟล์พอร์ตเดิมมาวางในกล่องเลย ไม่ต้องเซฟไฟล์ด้วยซ้ำ)
- อัปโหลดกลับ แล้วพิมพ์ ความเสี่ยงที่คุณกลัวที่สุดกับพอร์ตตัวเอง เป็นภาษาไทยแบบที่คุณพูดกับเพื่อน — "ต้นทุนขึ้นจนมาร์จิ้นโดนบีบ" · "ลูกค้ารายใหญ่หาย" · "หนี้เยอะจนดอกเบี้ยกิน" อะไรก็ได้ที่ค้างใจ
- อ่านย่อหน้าที่ผู้บริหารเขียนเอง แล้ว กดลิงก์ไปตรวจต้นฉบับ 56-1 อย่างน้อยหนึ่งใบ
เริ่มฟรี 10 เครดิต/วัน ไม่ต้องผูกบัตร — พอร์ตขนาด ≤25 ตัวคิด 1 เครดิตต่อคำถาม แปลว่าคุณถามได้ 10 คำถามต่อวันโดยไม่เสียอะไรเลย
สิ่งที่คุณจะได้กลับมาไม่ใช่ "สัญญาณซื้อขาย" — มันคือคำตอบของคำถามที่รายย่อยแทบไม่เคยได้ถาม: ผู้บริหารของหุ้นที่ฉันถืออยู่ เขาพูดอะไรไว้ในเอกสารทางการ และท่าทีเขาเปลี่ยนไปจากไตรมาสก่อนไหม — นั่นคือระยะห่างจริงระหว่างการ "ตามข่าว" กับการ "เฝ้าพอร์ต" และมันแคบกว่าที่คุณคิดเยอะ
เนื้อหานี้เพื่อการศึกษาและวิเคราะห์พร้อมอ้างอิง ไม่ใช่คำแนะนำการลงทุนหรือการชี้นำซื้อขายหลักทรัพย์ · ข้อความที่ยกมาทั้งหมดเป็นการรายงานสิ่งที่ฝ่ายจัดการเขียนไว้ในแบบ 56-1 ที่เปิดเผยต่อสาธารณะผ่าน ก.ล.ต. การตัดสินใจลงทุนเป็นความรับผิดชอบของผู้ลงทุนเอง · ระดับทีม/สถาบัน (seats · Excel export · API) คุยได้ที่ หน้า Enterprise หรือ contact@boomleverage.com
อ่านต่อ
ธงแดงใบเดียวไม่เคยพอ — ผมนับสัญญาณที่บริษัทไทยเขียนสารภาพไว้เอง 104,153 บรรทัด แล้วพบว่ามีแค่ 9 ครั้งที่ไฟติดครบทั้งหกดวงพร้อมกัน
อ่านต่อ คำอธิบายฝ่ายจัดการ (MD&A)ไม่ต้องเดาว่าเซกเตอร์ไหนกำลังเจ็บ — พิมพ์อาการลงไป แล้วดูว่าใครยกมือ
อ่านต่อ คำอธิบายฝ่ายจัดการ (MD&A)คุณแพ้ตั้งแต่ตอนที่ไม่รู้ว่าจะพิมพ์หาอะไร — สถาบันเขาไม่เดาคีย์เวิร์ด เขามีเช็กลิสต์
อ่านต่อ