A12 · เขียนรายงานที่คนอื่นตัดสินใจได้ + capstone
▶ clip: https://youtu.be/A7DOAUsesGc
จบบทนี้แล้วทำได้:
- เขียนหน้ารายงานที่มีครบสี่อย่าง จนคนอื่นอ่านแล้วตัดสินใจต่อได้โดยไม่ต้องถามคุณ
- อธิบายได้ว่าทำไมตัวเลขเดียวอย่าง E[R] +0.15 ไม่พอ และ chart แบบไหนแยกความต่างได้
- check หน้ารายงานสี่ข้อก่อนเผยแพร่ เพื่อไม่ให้หน้าดูปกติทั้งที่ chart หายไป
- รู้ขอบเขตงาน capstone Advanced ชิ้นงานที่ต้องส่ง และเงื่อนไขที่ตกทันที
ต้องมีก่อน: จบ A1–A11 · บทนี้ไม่มี lab แยก ตัว capstone คือ lab ของทั้ง course
1 · หน้ารายงานต้องมีอะไร

module สุดท้ายคือการเขียนรายงานให้คนอื่นเอาไปตัดสินใจได้ ไม่ใช่บันทึกส่วนตัวที่คนเขียนอ่านเข้าใจคนเดียว หน้ารายงานต้องมีสี่อย่าง
| # | ต้องมี | ทำไม |
|---|---|---|
| 1 | chart ที่อธิบายกลไก เช่น distribution ของ R · เส้น sweep ของ parameter · timeline ของ regime | ตัวเลขสรุปตัวเดียวซ่อนรูปทรงที่ใช้ตัดสินจริง |
| 2 | hover แล้วเห็นค่า และมีตารางค่าดิบคู่กับ chart | คนอ่านต้องตรวจตัวเลขเองได้ ไม่ใช่ต้องเชื่อภาพ |
| 3 | หัวข้อ "ข้อจำกัด" ทุกหน้า | บอกว่าตัวเลขชุดนี้บอกอะไรไม่ได้ เช่นใช้ช่วงข้อมูลที่ใช้ไปแล้ว · n น้อย · broker เดียว |
| 4 | คำตัดสินอยู่บรรทัดแรก พร้อมตัวเลข และช่วงข้อมูล | คนอ่านรู้คำตอบก่อน แล้วค่อยไล่หลักฐาน |
ภาพทางขวาของ slide เป็นแผนภาพหน้ารายงาน: แถบบนสุดคือคำตัดสิน · ตัวเลข · ช่วงข้อมูล (4) ใต้ลงมาคือ distribution ของ R ที่ hover แล้วเห็นค่า (1) คู่กับตารางค่าดิบ (2) และกล่องข้อจำกัดอยู่ท้าย (3) ใน clip ผู้สอนเปิดหน้ารายงานจริงหนึ่งหน้าให้ดูว่าสี่อย่างนี้อยู่ตรงไหน

ตัวอย่างจากหน้าจอจริงของ kit (ผล Monte Carlo ใน dashboard): บรรทัดแรกเป็นตัวเลขตัดสิน — trade 476 · E[R] +0.120 พร้อม 95% · t 3.16 · ผ่าน G4 (ข้อ 4) · chart DD และ chart เงินโตกี่เท่าตาม risk (ข้อ 1) · ตารางค่าดิบใต้ chart (ข้อ 2) · ไม่มีกล่องข้อจำกัด (ข้อ 3) และไม่ได้บอกช่วงข้อมูล — หน้าจอเครื่องมือจึงยังไม่ใช่หน้ารายงาน ต้องเติมสองอย่างนี้เองก่อนส่งให้คนอื่น
ทำไม chart ถึงจำเป็น: E[R] +0.15 เกิดได้อย่างน้อยสองแบบ
- trade ส่วนใหญ่บวกนิด ๆ สม่ำเสมอ
- trade ส่วนใหญ่แพ้หรือเสมอ กำไรมาจากหางบนไม่กี่ trade
เขียนเป็นตัวเลขเดียวได้ +0.15 เหมือนกันเป๊ะ แต่การตัดสินใจต่างกันสิ้นเชิง แบบที่สองถ้าตัด trade หางบนออกไม่กี่ trade อาจเหลือ edge ไม่ถึงศูนย์ และ n ที่มีผลจริงคือจำนวน trade หางบนไม่ใช่จำนวน trade ทั้งหมด distribution ของ R คือสิ่งเดียวที่แยกสองแบบนี้ออกจากกัน
2 · check ก่อนเผยแพร่

ภาพซ้ายของ slide เป็นแผนภาพ ไม่ใช่ภาพหน้าจอจริง แสดงหน้าที่ไม่ได้ห่อ try/catch: block 1 วาดได้ · block 2 พังเพราะ key "7.0" ≠ "7" · block 3 และ 4 ว่างหมด หน้ายังดูปกติแต่ chart หลังจุดพังหายทั้งหมด ภาพขวาคือหน้าที่ห่อทุก block แล้ว: block 2 แสดง error ตรงจุดที่พัง ส่วน block อื่นยังวาดได้
| # | check | กันอะไร |
|---|---|---|
| 1 | run script จริงบน node ก่อน publish | case จริง: Python เขียน key เป็น "7.0" แต่ JavaScript หาเป็น "7" ไม่ตรงกัน script โยน error แล้ว chart ทุกตัวหลังจากนั้นไม่ถูกวาด หน้าดูปกติเพราะส่วน HTML คงที่ยังอยู่ |
| 2 | ห่อทุก block ด้วย try/catch และเขียน error ลงตรงที่ของ block นั้น |
block เดียวที่พังไม่ทำให้ทั้งหน้าว่าง และคนอ่านเห็นว่าตรงไหนพัง |
| 3 | หัวตารางชิดทางเดียวกับข้อมูลใต้มัน | หัวชิดขวาแต่ข้อมูลชิดซ้าย อ่านแล้วจับคู่ column ผิด |
| 4 | กวาดไม่ครบ = ห้ามเผยแพร่คำตัดสิน | เคยต้องถอนรายงานที่ publish แล้ว เพราะอ่าน drawdown ผิดแถว (Maximal แทน Relative · ดู S5) |
ข้อ 1 ทำไม check ว่า "ไม่มี error ตอนเปิดหน้า" ไม่พอ: error ของ JavaScript ไม่ขึ้นบนหน้า ถ้าไม่เปิด console ดูก็ไม่เห็น การ run script จริงแล้วนับว่า block ไหนวาดสำเร็จคือวิธีที่ตรวจได้ตรงกว่า
ข้อ 4 เหตุผลที่ห้ามเผยแพร่ก่อน: การแก้ทีหลังทำให้คนอ่านต้องมาไล่เองว่า version ไหนถูก และคนที่อ่าน version แรกไปแล้วอาจไม่เคยเห็น version ที่แก้ ถ้ายังกวาดไม่ครบให้เขียนว่า "ตัวเลขเบื้องต้น" ไม่ใช่ "สรุป"
3 · Capstone Advanced

งานปิด course Advanced คือเดินครบทั้ง pipeline ด้วยกอง EA ของคุณเอง ทั้งหมดทำบน demo เท่านั้น
| ลำดับ | ชิ้นงาน |
|---|---|
| 1 | กอง EA 5–10 ตัว |
| 2 | intake |
| 3 | คัดบนกระดาษ |
| 4 | prereg + ledger (research\3-prereg\prereg-template.md · research\3-prereg\sidak-ledger.md) |
| 5 | รอบ screening |
| 6 | ด่าน era เก่า + การเลื่อนวัน |
| 7 | คำตัดสินครบ 7 มิติ |
| 8 | แผนขั้น 6–8 เป็นเอกสาร: release gate · onboarding · กติกาหยุด forward |
ขั้น 6–8 ส่งเป็นเอกสารแผน ไม่ต้องปล่อยจริงและไม่ต้อง forward จริง
การให้คะแนน: หักตามรายการกวาด 7 มิติ (ตามที่อยู่ใน CLAUDE.md ของ kit หัวข้อ "ตัดสินผล — กวาดให้ครบก่อนพิมพ์คำว่า สรุป"):
- R ต่อ trade พร้อม confidence interval (CI)
- equity multiplier แบบ compounding ที่ risk เดียวกัน และ ที่ DD เท่ากัน
- DD จาก shuffle — actual sequence คือ p50 ไม่ใช่ worst case
- แยกราย era
- แยกราย broker (และบอกว่าอิสระกันจริงไหม)
- จำนวนนับ ไม่ใช่แค่สัดส่วน
- ตัด tail ออกแล้วเหลืออะไร
มิติไหนที่ไม่เกี่ยวกับ EA นั้น ให้เขียนว่าข้ามเพราะอะไร มิติที่หายไปเฉย ๆ ถูกหัก
ตกทันที สามอย่าง:
| ตกทันทีเมื่อ | ทำไมหนักขนาดนั้น |
|---|---|
| แก้ criteria หลังเห็นผล | prereg ไม่มีความหมายอีกต่อไป ผลที่ได้คือการเลือกเกณฑ์ให้ผ่าน |
| เขียนคำว่า "สรุป" ก่อนกวาดครบ | คำตัดสินที่ยังไม่ได้ตรวจทุกมิติ ถูกอ่านเหมือนตรวจแล้ว |
| เสนอให้ใช้เงินจริง | capstone ทำบน demo · ผล backtest และ forward สั้น ๆ ไม่ใช่หลักฐานพอสำหรับเงินจริง |
จุดที่มักพลาด
| พลาด | ผลที่ตามมา | ทางกัน |
|---|---|---|
| รายงานเขียนแค่ E[R] ตัวเดียว | คนอ่านแยกไม่ออกว่า edge มาจาก trade ส่วนใหญ่หรือจากหางไม่กี่ trade | ใส่ distribution ของ R |
| ไม่มีหัวข้อข้อจำกัด | คนอ่านเอาตัวเลขไปใช้เกินกว่าที่มันบอกได้ | เขียน "ข้อจำกัด" ทุกหน้า |
| publish โดยไม่ run script จริง | หน้าดูปกติแต่ chart หายทั้งหน้า | run บน node และนับว่า block ไหนวาดสำเร็จ |
ไม่ห่อ block ด้วย try/catch |
block เดียวพัง ทุก block หลังจากนั้นว่าง | ห่อทุก block และเขียน error ตรงที่ของมัน |
key ตัวเลขจาก Python ไม่ตรงกับ JavaScript ("7.0" กับ "7") |
lookup ไม่เจอ script โยน error | ทำ key ให้ตรงกันตั้งแต่ต้นทาง |
| หัวตารางชิดคนละทางกับข้อมูล | อ่าน column ผิด | ตั้ง alignment ของหัวกับข้อมูลให้ตรงกัน |
| เผยแพร่คำตัดสินก่อนกวาดครบ | ต้องถอนทีหลัง คนอ่านไล่ไม่ได้ว่า version ไหนถูก | เขียน "ตัวเลขเบื้องต้น" จนกว่าจะครบ 7 มิติ |
ทวนท้ายบท

- รายงานเขียนแค่ E[R] +0.15 พอไหม ขาดอะไร
- หน้า web ดูปกติแต่ chart หายทั้งหน้า เกิดจากอะไร กันด้วยอะไร
- งานปิด course ตกทันทีเมื่อไร
เฉลย
- ไม่พอ E[R] +0.15 มีสองแบบที่เขียนเป็นตัวเลขเดียวกันแต่ตัดสินใจต่างกัน ต้องมี chart distribution ของ R และหัวข้อ "ข้อจำกัด"
- เกิดจาก key ที่ Python เขียนเป็น
"7.0"กับที่ JavaScript หาเป็น"7"ไม่ตรงกัน · กันด้วยการ run script จริงบน node ก่อน publish และห่อทุก block ด้วยtry/catch - ตกทันทีเมื่อแก้ criteria หลังเห็นผล · เขียน "สรุป" ก่อนกวาดครบ · หรือเสนอให้ใช้เงินจริง