 การคำนวณผลตอบแทนจากตำแหน่งหุ้นที่มีธุรกรรมที่ไม่สม่ำเสมอหลายรายการ
โดยทั่วไป หากคุณใช้บัญชี FIFO (เข้าก่อนออกก่อน) คุณจะต้องจับคู่ธุรกรรมตามจำนวนหุ้น ในตัวอย่างของคุณ ในตอนต้นของวันที่ 6 คุณมีหุ้นสองล็อต 100 @ 50 และ 10 @ 52 ในวันนั้นคุณขายหุ้น 50 หุ้น และใช้ FIFO คุณขายหุ้นล็อตแรกได้ 50 หุ้น ซึ่งทำให้คุณมี 50 @ 50 และ 10 @ 52 และกำไรจากการขายหุ้นที่ต้องเสียภาษีจากหุ้น 50 หุ้นที่คุณขาย โปรดทราบว่าค่าคอมมิชชั่นที่เกิดจากการซื้อหุ้นจะเพิ่มพื้นฐานของคุณ และค่าคอมมิชชั่นที่เกิดจากการขายหุ้นจะลดรายได้ของคุณ ดังนั้น หากคุณใช้จ่าย $10 ต่อการซื้อขาย พื้นฐานของคุณสำหรับ 100 @ 50 ล็อตคือ $5010 และรายได้จากการขาย 50 @ 60 ของคุณจะเท่ากับ $2990 ในตัวอย่างนี้ คุณขายได้ครึ่งหนึ่งของล็อต ดังนั้นพื้นฐานการขายของคุณคือครึ่งหนึ่งของ $5,010 หรือ $2,505 ดังนั้น Capital Gain ของคุณจึงเท่ากับ $2990 - 2505 = $485 การขายที่คุณอธิบายยังเป็น "การขายล้าง" โดยที่คุณขายหุ้นและซื้อหุ้นที่เทียบเท่าคืนภายใน 30 วัน โดยทั่วไปสิ่งนี้จะเกี่ยวข้องก็ต่อเมื่อยอดขายรายการใดรายการหนึ่งขาดทุน แต่คุณจะต้องคำนึงถึงสิ่งนี้ในรหัสของคุณ คุณสามารถค้นหาคำจำกัดความของการขายซักได้ซึ่งเริ่มซับซ้อน หากคุณกำลังเขียนโค้ดเพื่อจัดการกับสิ่งนี้ในสถานการณ์ทั่วๆ ไป คุณจะต้องจัดการกับการแยกหุ้น การแยกส่วน การควบรวมกิจการ ฯลฯ ซึ่งจะเปลี่ยนจำนวนหุ้นที่คุณเป็นเจ้าของและต้นทุนของหุ้น ฉันใช้สิ่งนี้ด้วยตัวเองและฉันได้เขียนรูทีนที่กำหนดเองประมาณ 25-30 รูทีน หนึ่งรูทีนสำหรับธุรกรรมแต่ละประเภทที่ฉันพบ โครงสร้างของข้อตกลงเหล่านี้ถูกจำกัดโดยจินตนาการของวาณิชธนกิจ ดังนั้นฉันจึงคิดว่าเป็นไปไม่ได้ที่จะเขียนอัลกอริทึมทั่วไปเพียงชุดเดียวที่จัดการพวกเขาทั้งหมด แต่ฉันมีกรอบงานที่ฉันอัปเดตทุกไตรมาสเมื่อมีธุรกรรมใหม่เกิดขึ้น