fbpx

ถามเรื่องหุ้นที่ออกจากตลาดไปแล้วครับ

  • ผู้สร้าง
    กระทู้
  • #21037
    atipatr
    Participant

    พอดีผมเขียนระบบ แบบ Rotation ซื้อเมื่อวันแรกของ Q ขายเมื่อวันสุดท้ายของ Q
    Score ตาม ROE
    ติดปัญหาว่าถ้า backtest ย้อนหลัง 20 ปี แล้วจะติดหุ้น ในปีเก่าๆ แต่ยังไม่ได้ขายมาถึงปัจจุบัน เช่น ถือมา 10 ปี
    เพราะ ข้อมูลมันหายไปก่อน ข้อมูลมีไม่ถึง วันสุดท้ายของ Q ให้ระบบขาย

    ผมใส่ SQDataFilter(0) แล้วครับ

    รบกวนสอบถามผู้รู้ ว่าแก้อย่างไรได้บ้างครับ
    ขอบคุณครับ

กำลังดู 4 ข้อความตอบกลับ - 1 ผ่านทาง 4 (ของทั้งหมด 4)
  • ผู้เขียน
    ข้อความตอบกลับ
  • #21053

    สวัสดีครับคุณ atipatr สำหรับกการทดสอบย้อนหลังเราไม่ควรเอาหุ้นที่ถูกถอดออกจากตลอดออกด้วยเหตุผลหลัก 2 ประการคือ
    1. เนื่องจาก ณ วันนี้ เหตุการณ์ในอดีตเรารับรู้ข้อมูลทุกอย่างหมดแล้ว ว่าหุ้นตัวใดถูกถอดออกจากตลาดบ้าง ซึ่งการที่เราเอาหุ้นเหล่านั้นเท่ากับเราแอบดูอนาคตล่วงหน้า หรือ Look-Ahead Bias เพราะในคาวมเป็นจริงเราไม่มีทางทราบได้แน่ชัดเลยว่า วันพรุ่งนี้หุ้นตัวใดจะถูกถอดถอนออกจากตลาด
    2. การที่เรานำหุ้นเหล่านั้นออก ในหลายๆครั้งจะทำให้ผลลัพธ์การทดสอบดีเกินจริง หรือมี Survivorship Bias เพราะเราทดสอบแค่เฉพาะหุ้นที่อยู่รอดในตลาดเท่านั่น

    ส่วนSQDataFilter(0) หลักๆจะเป็นการกรองหุ้นที่มีความผิดปกติ เช่น ราคา Low สูง กว่าราคา High ออก ซึ่งอาจเกิดขึ้นได้จากการเก็บข้อมูลของทางตลาดในอดีต หรือการที่ราคาของหุ้นมีอัตราการเปลี่ยนแปลงมากกว่า Ceiling-Floor ณ ขณะนั้น เช่น หาก Ceiling ในอดีตตลาดกำหนดไว้ที่ 10% ถ้า ณ ช่วงเวลาดังกล่าวหุ้นมีอัตราการเปลีั่ยนแปลงที่มากกว่า 10% เราจะคัดหุ้นเหล่านี้ออกจากการทดสอบ เพราะถือว่าข้อมูลไม่สมบูรณ์ครับ

    #21055
    atipatr
    Participant

    ขอสอบถามต่อข้อที่ 1 ครับ
    สมมุติว่าผมไม่นำหุ้นออกจาก database และผมกำหนดว่าจะซื้อหุ้น 10 ตัว
    แล้วผมได้ซื้อหุ้น A ตอนปั 2000 และไม่ได้ขายมันออกอีกเลย จนถึงปัจจุบัน มันจะทำให้พอตการลงทุนผมหลังจากปี 2000 เหลือหุ้นแค่ 9 ตัววนกันไปเรื่อยๆ
    มีวิธีแก้ไหมว่า ว่าเราควร code ยังไงว่า ถ้าหุ้นออกจากตลาด เราจะต้องขายหุ้นนั้นด้วย

    ขอบคุณสำหรับการตอบคำถามครับ

    #21056

    ขออภัยที่มาตอบช้าครับ สำหรับในส่วนนี้ โดยปกติแล้วหากพอร์ตโฟลิโอมีการเติบโต ยกตัวอย่างเช่น สมมติเงินทุนเริ่มต้น 1 ล้านบาท ลงทุนหุ้น 10 ตัว ขนาดเท่ากัน เท่ากับลงตัวละ 1 แสน ซึ่งถ้ามีหุ้นตัวใดตัวนึงถูกถอดออกจากตลาดเท่ากับเราจะเหลือเงินที่ Active อยู่ 9 แสน ส่วน 1 แสนนั้นจะถูกดองเพราะติดหุ้นถูกไหมครับ

    อย่างไรก็ตาม หากกลยุทธ์นั้นสามารถสร้างผลตอบแทนได้ เช่น เวลาผ่านไปพอร์ตเติบโตจาก 1 ล้านเป็น 5 ล้าน เรายังลงทุน 10% เท่าเดิมอยู่
    เท่ากับตอนนี้เราจะลงตัวละ 5 แสน แต่เราติดอยู่ 1 แสน เท่ากับเงินในพอร์ตจริงๆที่ใช้ลงทุนได้ 4.9 ล้าน ตรงนี้ทันนะครับ

    ถ้าทันเรามาต่อกันเลย 4.9 ล้านเนี่ย หุ้น 9 ตัวแรกสามารถลงเงินได้เต็มจำนวนคือ 4,500,000 แต่จะเหลือเศษเงินอยู่ 400,000 ที่มันไม่ครบตามขนาด Position Size ที่กำหนดไว้ โดยในส่วนนี้เราใช้คำสั่ง SetOption( “AllowPositionShrinking”, True ); หมายความว่า กรณีมีเงินเหลือ และมีสัญญาณเข้ามา เราสามารถเข้าซื้อได้ตามจำนวนเงินที่เหลืออยู่ แม้ว่าเงินที่เหลือจะน้อยกว่าขนาด Position Size ที่กำหนดไว้ครับ

    อีกประเด็นนึงที่ต้องกำหนดคือ MaxOpenPositions ครับ จากเดิมหากเรา Fix ไว้ที่ 10 ตัว จะเป็นประเด็นที่อาจทำให้เราไม่สามารถใช้เงินได้อย่างมีประสิทธิภาพ ดังนั้นให้ลองกำหนดกว้างๆขึ้นมาครับ เช่น 15 ตัว เป็นต้น

    #21086
    atipatr
    Participant

    เข้าใจแล้วครับ ขอบคุณครับ

กำลังดู 4 ข้อความตอบกลับ - 1 ผ่านทาง 4 (ของทั้งหมด 4)
  • คุณต้องเข้าสู่ระบบเพื่อตอบกลับกระทู้นี้