fbpx

การเลี่ยงหุ้นที่กำลังหยุดการซื้อขาย

SiamQuant Minimal Home – White Webboard ห้องโปร : Professional Membership Support การเลี่ยงหุ้นที่กำลังหยุดการซื้อขาย

  • ผู้สร้าง
    กระทู้
  • #16321
    Theerapat Singprasert
    ผู้เยี่ยมชม

    เพิ่งมาใช้ Hybrid database ได้ไม่นานครับ พอจะแนะนำได้มั้ยครับว่ามีข้อมูลหรือฟังก์ชั่นของ siamquant ตัวไหนมั้ยที่ผมจะสามารถหลีกเลี่ยงหุ้นที่จะกำลังหยุดการซื้อขาย เพื่อเลี่ยงผลทดสอบที่อาจจะดีหรือแย่เกินจริงครับ  หรือมี coporate action ตัวไหนที่จะพอบ่งบอกสภาวะของหุ้นที่มีทีท่าว่าจะถูกระงับมั้ยครับ ผมไม่ค่อยมีความรู้เรื่องนี้มากนัก

    ยกตัวอย่างนะครับ ผม backtest ระบบในช่วง 2007-2017 ใน watchlist ALLSTOCK ของ siamquant จะปรากฎว่าชอบมี open position หุ้นชื่อ ADAM ถือค้างในพอร์ต ทั้งๆที่หุ้นนี้ระงับการซื้อขายไปตั้งแต่ปี 2014

    ทุกวันนี้ผมต้องแก้ง่ายๆด้วยการ Force sell ที่ last bar แต่ก็อย่างที่ทราบมันก็จะได้กำไรมาทั้งๆที่ควรจะเสียเงินลงทุนไปทั้งก้อนมากกว่า ขอบคุณครับ

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

    สวัสดีครับ สำหรับประเด็นนี้ผมขอแยกเป็น 2 กรณีนะครับ

    กรณีแรก คือหุ้นที่กำลังจะถูก Takeover หรือควบรวมกิจการ ซึ่งในกรณีนี้เราจะรู้วันสุดท้ายที่ทำการเทรดครับ ยกตัวอย่างเช่น หุ้น BMCL ที่ควบรวมกับ BECL เป็น BEM ในกรณีเรารู้วันสุดท้ายของการเทรดของหุ้นทั้งสองก่อนถูกควบรวม ทำให้เราหลีกเลี่ยงการเทรดได้ครับหรือขาย ณ วันสุดท้ายได้ครับ (หุ้นที่ถูกควบรวมกิจการเหล่านี้จะสามารถดูได้ใน Watchlist : DELISTEDSTOCK ครับ)

    โดยในกรณีแรก เราสามารถโค้ดได้ดังนี้ครับ

    LastBarIndex = BarIndex() == LastValue( BarIndex() ); // กำหนดวันสุดของ BarIndex
    Buy = Not LastBarIndex; // ซื้อก็ต่อเมื่อไม่ใช่วันสุดท้ายที่มีการเทรด
    Sell = IIf( InWatchListName( “DELISTEDSTOCK”) AND LastBarIndex , True, 0 ); // ถ้าอยู่ใน Watchlist “DELISTEDSTOCK” และเป็นวันสุดท้ายที่มีการเทรด ให้บังคับขาย

    กรณีที่สอง กรณีนี้คือหุ้นที่ติด SP หรือถูกหยุดการซื้อ-ขาย เช่น ADAM ที่คุณ Theerapat Singprasert ยกตัวอย่างมา โดยในกรณีนี้เราไม่สามารถรู้ล่วงหน้าได้ครับ เพราะ ไม่มีกฏเกณฑ์อะไรตายตัว อีกทั้งตลาดจะขึ้น SP ณ วันนั้นเลย ซึ่งไม่มีการบอกล่วงหน้า ทำให้ไม่มีสัญญาณอะไรที่บ่งชี้ได้ครับ

    โดยหากเป็นกรณีที่สอง แล้วเราทำการ Force Sell กับหุ้นที่ถูกหยุดซื้อ-ขาย โดยที่เราไม่สามารถรู้ล่วงหน้าได้ จะเป็นการ Look-Ahead Bias ได้ครับ ทำให้ผลการ Backtest ไม่สะท้อนความเป็นจริงนั่นเองครับ

    #16323
    Theerapat Singprasert
    ผู้เยี่ยมชม

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

    ในกรณีที่ 2 ถ้าผมสมมติว่าหุ้นที่โดน SP ให้ถือว่าเสียเงินลงทุนก้อนนั้นไปเลย ผมไปใส่ข้อมูลราคาเพิ่มขึ้นไปอีก 1 วันที่ 0 บาทแล้ว Force sell  เวลาเรา download data จาก siamquant จะเป็นลักษณะมาทั้งก้อนทับของเก่า หรือ จะ update ข้อมูลต่อไปจากเดิม

    หรือผมควรไปเขียน code เพื่อไปปรับ sellprice แทน ไม่แน่ใจต้องลงไปปรับใน CBI หรือเปล่า

    #16324

    ในส่วนตัว Data ที่โหลดจากทาง SiamQuant จะมาลักษณะเป็นทั้งก้อนและทับของเก่าครับ เนื่องจากอาจมีหุ้นบางตัวที่อาจจะต้องมีการ Adjusted Price ข้อมูลย้อนหลัง ทำให้ข้อมูลของเราจะทับข้อมูลเก่านั่นเองครับ

    ในส่วนของหุ้น SP นั้น การที่เราใส่ข้อมูลเป็น 0 แล้วทำการ Force Sell นั้นมีจุดประสงค์เพื่ออะไรหรอครับ? เพราะการที่เราใส่ข้อมูลใหม่ไป 0 นั้นเท่ากับเรารู้แน่ชัดแล้วว่าหุ้นตัวนี้ไม่สามารถกลับมาได้แล้ว แต่ในความเป็นจริงเราไม่สามารถรู้ได้เลยว่าหุ้นที่ติด SP จะหายไปเลยหรือจะกลับเข้ามาใหม่ เพราะบางตัวติด SP ยาวแล้วไม่กลับ, บางตัวติด SP แล้วได้กลับเข้ามาเทรดใหม่ ซึ่งการที่เราใส่ข้อมูลราคาเป็น 0 แล้วเกิดวันดีคืนดีหุ้นตัวนั้นได้กลับมาเทรดใหม่ ผลลัพธ์จากการ Backtest ก็จะผิดไปจากคความเป็นจริงได้ครับ

    โดยในมุมมองของผม คือ การที่หุ้นติด SP นั้น เป็นความเสี่ยงที่เราไม่สามารถควบคุมได้ ดังนั้นผมมองว่าเราควรที่จะยอมรับความเสี่ยง ณ จุดนี้ก่อนครับ ^^

    #16326
    Theerapat Singprasert
    ผู้เยี่ยมชม

    อ๋อ ผมพอจะเข้าใจแล้วครับ

    เหตุผลคือ บางระบบที่เทสผมตั้งค่า Max. open position ไว้พอดีกับ position size เข่น positionSize = -10; maxOpenPos = 10; อะไรแบบนี้อ่ะครับ การถือ position ค้างไว้ผลมันเลยเพี้ยนเท่านั้นเองครับ งั้นน่าจะแก้ไขด้วยการตั้งค่า max open position ให้เกินไปน่าจะได้

    ยังไงก็ขอขอบคุณที่อุตส่าห์มาตอบละก็ให้ความรู้นะค้าบ

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