ODDFPRICE คำนวณราคาต่อเงินหน้าตั๋ว $100 ของตราสารที่มีช่วงคูปองแรกแปลก (ช่วงเวลาสั้นหรือยาว) ใช้สำหรับตราสารโบนด์ที่มีระยะเวลาชำระดอกเบี้ยครั้งแรกไม่ปกติ เช่น โบนด์ที่ออกในช่วงกลางระหว่างวันชำระปกติ
=ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])
=ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| settlement | date | Yes | วันที่ชำระคืน – วันที่ตราสารถูกโอนจากผู้ออกให้แก่ผู้ซื้อ ต้องมาหลังจากวันออกตราสาร | |
| maturity | date | Yes | วันที่ครบกำหนด – วันที่ตราสารหมดอายุและชำระคืนเงินต้น ต้องมาหลังจากวันชำระคูปองแรก | |
| issue | date | Yes | วันที่ออกตราสาร – วันที่ตราสารเป็นอย่างเป็นทางการออกโดยผู้ออก ต้องเป็นวันแรกของลำดับวันที่ทั้งหมด | |
| first_coupon | date | Yes | วันที่ชำระคูปองแรก – วันที่อัตราดอกเบี้ยถูกชำระครั้งแรก ต้องมาหลังจาก settlement แต่ก่อน maturity | |
| rate | number | Yes | อัตราดอกเบี้ยประจำปี – อัตราคูปองประจำปีของตราสาร ระบุเป็นทศนิยม (เช่น 0.065 สำหรับ 6.5%) ต้องมากกว่าหรือเท่ากับ 0 | |
| yld | number | Yes | ผลตอบแทนประจำปี – อัตราผลตอบแทนต่อปีที่ต้องการหรือที่คาดหวัง ระบุเป็นทศนิยม (เช่น 0.0625 สำหรับ 6.25%) ต้องมากกว่าหรือเท่ากับ 0 | |
| redemption | number | Yes | มูลค่าชำระคืนต่อเงินหน้าตั๋ว $100 – จำนวนเงินที่ผู้ลงทุนจะได้รับต่อ $100 ของเงินหน้าตั๋ว ปกติเท่ากับ 100 แต่อาจแตกต่างกันไป | |
| frequency | number | Yes | ความถี่การชำระคูปองต่อปี – ระบุจำนวนครั้งที่ชำระดอกเบี้ยต่อปี (1=ประจำปี, 2=ครึ่งปี, 4=ประจำไตรมาส) | |
| basis | number | Optional | 0 | วิธีนับวัน – วิธีการนับจำนวนวันในปี (0=US 30/360, 1=Actual/actual, 2=Actual/360, 3=Actual/365, 4=European 30/360). หากละเว้นจะใช้ 0 |
ODDFPRICE(DATE(2008,11,11), DATE(2021,3,1), DATE(2007,10,15), DATE(2008,3,1), 0.0785, 0.0625, 100, 2)=ODDFPRICE(DATE(2008,11,11), DATE(2021,3,1), DATE(2007,10,15), DATE(2008,3,1), 0.0785, 0.0625, 100, 2)
113.596033
ODDFPRICE(A2, A3, A4, A5, A6, A7, 100, 2, 1)=ODDFPRICE(A2, A3, A4, A5, A6, A7, 100, 2, 1)
ค่าราคาตามข้อมูลในเซลล์
ODDFPRICE(DATE(2024,6,15), DATE(2030,12,15), DATE(2023,12,15), DATE(2024,12,15), 0.045, 0.050, 100, 2, 0)=ODDFPRICE(DATE(2024,6,15), DATE(2030,12,15), DATE(2023,12,15), DATE(2024,12,15), 0.045, 0.050, 100, 2, 0)
98.765432
ODDFPRICE(DATE(2024,1,15), DATE(2029,1,15), DATE(2023,1,15), DATE(2024,1,15), 0.06, 0.065, 100, 2, 0) vs =ODDFPRICE(DATE(2024,1,15), DATE(2029,1,15), DATE(2023,…=ODDFPRICE(DATE(2024,1,15), DATE(2029,1,15), DATE(2023,1,15), DATE(2024,1,15), 0.06, 0.065, 100, 2, 0) vs =ODDFPRICE(DATE(2024,1,15), DATE(2029,1,15), DATE(2023,1,15), DATE(2024,1,15), 0.06, 0.065, 100, 2, 1)
basis=0 ให้ 98.24, basis=1 ให้ 98.35
PRICE ใช้สำหรับตราสารที่มีช่วงคูปองปกติทั้งหมด ส่วน ODDFPRICE ใช้สำหรับตราสารที่มีช่วงคูปองแรกแปลก (สั้นหรือยาว) หากตราสารของคุณมีช่วงคูปองปกติ ให้ใช้ PRICE จะสะดวกกว่า
#NUM! อาจเกิดจากหลายสาเหตุ: (1) ลำดับวันที่ผิด (ต้อง issue < settlement < first_coupon < maturity), (2) rate หรือ yld เป็นลบ, (3) basis ไม่ใช่ 0-4, (4) redemption เป็นศูนย์หรือลบ ตรวจสอบแต่ละพารามิเตอร์
ขึ้นอยู่กับประเภทของตราสารและตลาด: basis=0 (30/360) สำหรับพันธบัตร Corporate US, basis=1 (Actual/actual) สำหรับสมพท.ระหว่างประเทศ, basis=2 (Actual/360) นิยมในตลาดอัตราสูง ตรวจสอบข้อกำหนดของตราสาร
ODDFPRICE คืนค่า clean price (ราคาสุทธิ) ซึ่งไม่รวม accrued interest ถ้าต้องการ dirty price (ราคาเต็ม) ต้องเพิ่ม accrued interest ด้วยตัวเอง
ใช้ ODDFYIELD เมื่อคุณทราบราคาของตราสาร และต้องการหา yield (ผลตอบแทน) ส่วน ODDFPRICE ใช้เมื่อคุณทราบ yield และต้องการหาราคา ทั้งสองฟังก์ชันเป็นเหมือน inverse ของกันและกัน
ODDFPRICE ถูกออกแบบสำหรับการวิเคราะห์ตราสารทางการเงิน โดยเฉพาะโบนด์ที่มีช่วงคูปองแรกแปลก ฟังก์ชันนี้คำนวณราคายุติธรรมของตราสารโดยพิจารณาจากวันที่ออกตราสาร วันที่ชำระคูปองแรก วันที่ชำระคืน อัตราดอกเบี้ย และผลตอบแทนประจำปี
ที่เจ๋งคือ ODDFPRICE ปรับการคำนวณตามช่วงเวลา โดยหากช่วงคูปองแรกสั้นกว่าปกติ (short period) หรือยาวกว่าปกติ (long period) ฟังก์ชันจะปรับการคำนวณให้เหมาะสม ซึ่งเป็นสิ่งสำคัญในตลาดพันธบัตรจริง
ส่วนตัวผม ถ้าคุณทำงานกับตราสารทางการเงิน ต้องเข้าใจ basis parameter (วิธีนับวัน) เพราะมันเปลี่ยนผลลัพธ์ได้เยอะ