from sympy import symbols, Eq, solve
2 ดอกเบี้ย (Interest)
2.1 ดอกเบี้ยคืออะไร (What is Interest?)
ดอกเบี้ย คือ “ค่าตอบแทนของการใช้เงินในช่วงเวลาหนึ่ง” ผู้ให้ยืมเงินจะได้รับดอกเบี้ยเป็นการตอบแทนจากผู้ยืมเงินที่นำเงินนั้นไปใช้
มุมมองที่สำคัญ
ถ้าเราให้คนอื่นยืมเงิน ดอกเบี้ยคือ รายได้ของเรา
ถ้าเรายืมเงิน ดอกเบี้ยคือ ต้นทุนที่เราต้องจ่าย
โดยดอกเบี้ยที่ได้จะขึ้นอยู่กับตัวแปรหรือปัจจัย 3 ตัวเป็นหลัก
= เงินต้น (Principal) = อัตราดอกเบี้ยต่อช่วงเวลา (interest rate per period) = จำนวนช่วงเวลา (number of periods)
2.2 คุณสมบัติทั่วไปของฟังก์ชันดอกเบี้ย (General Properties of Interest Functions)
ฟังก์ชันดอกเบี้ย (Interest Function) คือฟังก์ชันที่แสดงมูลค่าเงินสะสมเมื่อเวลาผ่านไป โดยมีคุณสมัติดังต่อไปนี้:
Initial Value
ฟังก์ชันสะสมต้องมีค่าเริ่มต้นเป็น 1 เสมอ หมายถึง 1 หน่วยของเงินในวันนี้มีค่าเป็น 1 หน่วยเสมอMonotonic Increasing
ฟังก์ชันดอกเบี้ยเป็นฟังก์ชัน เพิ่มเสมอ เมื่อ นั่นคือเงินจะมีค่ามากขึ้นเมื่อเวลาผ่านไปMultiplicative Property (Semigroup)
โดยเฉพาะในดอกเบี้ยทบต้น สมบัตินี้สำคัญมากในแคลคูลัสของการเงิน เช่น การใช้ force of interestContinuity and Differentiability (กรณีต่อเนื่อง): ในกรณีที่
เป็นฟังก์ชันต่อเนื่อง เช่น , เราสามารถหากำลังของดอกเบี้ย (force of interest) ได้ ซึ่งบ่งบอกถึง อัตราดอกเบี้ยในช่วงเวลาเล็กมาก (instantaneous rate)
2.3 ตัวอย่างฟังก์ชันดอกเบี้ยมาตราฐาน
ฟังก์ชันดอกเบี้ยเป็นเครื่องมือพื้นฐานในคณิตศาสตร์การเงิน ใช้เพื่อวิเคราะห์มูลค่าเงินตามเวลา (time value of money) โดยแสดงความสัมพันธ์ระหว่างเงินต้น อัตราดอกเบี้ย และเวลา ซึ่งสามารถแบ่งได้เป็น 2 ประเภทหลัก คือ ดอกเบี้ยอย่างง่าย (Simple Interest) และ ดอกเบี้ยทบต้น (Compound Interest)
2.3.1 ดอกเบี้ยอย่างง่าย (Simple Interest)
2.3.2 ดอกเบี้ยทบต้น (Compound Interest)
ตารางเปรียบเทียบ
คุณสมบัติ | ดอกเบี้ยอย่างง่าย | ดอกเบี้ยทบต้น |
---|---|---|
ฟังก์ชันสะสม |
||
ประเภทฟังก์ชัน | เชิงเส้น (Linear) | เอ็กซ์โปเนนเชียล (Exponential) |
ลักษณะการเติบโต | คงที่ | เร่งขึ้นตามเวลา |
มีการทบต้นหรือไม่ | ไม่มี | มี |
เหมาะกับ | เงินกู้/ลงทุนระยะสั้น | การลงทุนระยะยาว |
Semi-group |
ไม่ใช่ | ใช่ |
2.3.3 ตัวอย่างฟังก์ชันดอกเบี้ยแบบอื่น (Non-standard or Generalized Interest Functions)
Variable (Time-dependent) Interest Rate อัตราดอกเบี้ยไม่คงที่ ขึ้นกับเวลา
โดย
คือ force of interest ที่เปลี่ยนไปตามเวลาใช้ในกรณีที่อัตราดอกเบี้ยผันผวน เช่น ในตลาดตราสารหนี้
ตัวอย่าง
Piecewise Interest Function อัตราดอกเบี้ยเปลี่ยนเป็นช่วง ๆ
- ใช้ในสัญญาที่กำหนดดอกเบี้ยคงที่ช่วงแรก แล้วเปลี่ยนในภายหลัง
ตัวอย่าง
ปีที่ 1–5 อัตราดอกเบี้ย 5%
หลังจากนั้น อัตราดอกเบี้ย 3%
Stochastic Interest Function อัตราดอกเบี้ยเป็น ตัวแปรสุ่ม ใช้ใน financial economics
stochastic interest rate process (เช่น Vasicek, CIR)ใช้ในการวิเคราะห์ราคาอนุพันธ์ เช่นพันธบัตร หรือ swap
Stepwise (Discrete Change) อัตราดอกเบี้ยเพิ่มขึ้นแบบขั้นบันได เช่น โปรแกรมเงินฝากระยะยาว
โดย
คืออัตราดอกเบี้ยปีที่ไม่ใช่ฟังก์ชันต่อเนื่องเหมือน compound ปกติ
ตัวอย่าง
, ,
Hyperbolic Discount Function (Behavioral economics) ใช้ในพฤติกรรมของผู้บริโภคที่ลดค่าของอนาคตแบบ ไม่เป็นเลขชี้กำลัง (exponential)
ไม่ใช่ดอกเบี้ยอย่างง่ายเพราะไม่เป็นเชิงเส้น
ไม่ใช่ดอกเบี้ยทบต้นเพราะไม่เป็นเลขชี้กำลัง
ใช้ใน behavioral finance เช่น วิเคราะห์การเลือกของมนุษย์
สรุป
แบบ | ฟังก์ชัน | ใช้เมื่อ |
---|---|---|
Time-dependent | อัตราดอกเบี้ยแปรผัน | |
Piecewise | เปลี่ยนดอกเบี้ยเป็นช่วง | สัญญาดอกเบี้ยเปลี่ยนระยะ |
Stochastic | วิเคราะห์ตราสารอนุพันธ์ | |
Stepwise | เงินฝาก/พันธบัตรแบบขั้นบันได | |
Hyperbolic | การเงินพฤติกรรม |
ในหนังสือเล่มนี้พิจารณาดอกเบี้ยอย่างง่ายและดอกเบี้ยทบต้นเท่านั้น
จำนวนดอกเบี้ยที่ได้รับคือผลตอบแทนที่ได้จากการลงทุน นั่นคือเงินสะสมลบด้วยเงินลงทุนนั่นเอง
ดอกเบี้ยอย่างง่าย (Simple Interest)
ดอกเบี้ยทบต้น (Compound Interest)
ตัวอย่างการสร้างฟังก์ชันเบี้ยและการคำนวณด้วยซิมไพดอกเบี้ยอย่างง่าย (Simple Interest) สูตร
โดยที่
มูลค่ารวมเมื่อครบกำหนด เงินต้น อัตราดอกเบี้ยต่อปี ระยะเวลา (ปี)
# กำหนดตัวแปร
= symbols('P i t', positive=True)
P, i, t # สมการดอกเบี้ยอย่างง่าย
= P * (1 + i * t)
simple_int # แสดงสมการ
simple_int
ถ้าต้องการแทนค่าลงไป เช่น
1000, i: 0.05, t: 3}) simple_int.subs({P:
ถ้าต้องการทศนิยม 2 ตำแหน่งให้เมท๊อด (method) .evalf() ช่วย
1000, i: 0.05, t: 3}).evalf(6) simple_int.subs({P:
- ดอกเบี้ยทบต้น (Compound Interest) สูตร
# สมการดอกเบี้ยทบต้น
= P * (1 + i)**t
compound_int # แสดงสมการ
compound_int
ถ้าต้องการแทนค่าลงไป เช่น
1000, i: 0.05, t: 3}).evalf(6) compound_int.subs({P:
หมายเหตุ เราสามารถใช้ Lambda
เพื่อสร้างฟังก์ชันทั่วไปได้ด้วย เช่น
from sympy import Lambda, lambdify
# ฟังก์ชันดอกเบี้ยอย่างง่าย
# P = เงินต้น, i = อัตราดอกเบี้ย, t =เวลา (ปี)
= Lambda((P, i, t), P * (1 + i*t))
SI 1000, 0.05, 3) SI(
ต้องการทศนิยม 2 ตำแหน่งอย่าลืมใช้เมท๊อด .evalf()
1000, 0.05, 3).evalf(7) SI(
# ฟังก์ชันดอกเบี้ยทบต้น
# P = เงินต้น, i = อัตราดอกเบี้ย, t =เวลา (ปี)
= Lambda((P, i, t), P * (1 + i)**t)
CI 1000, 0.05, 3).evalf(6) CI(
ทำไมดอกเบี้ยอย่างง่ายถึงเหมาะกับการลงทุนระยะสั้นและดอกเบี้ยทบต้นเหมาะกับการลงทุนระยะยาว เพราะว่าระยะเวลาการลงทุนน้อยกว่า 1 ปีดอกเบี้ยอย่างง่ายจะให้ผลตอบแทนมากกว่าเพราะว่า
ดอกเบี้ยอย่างง่าย (Simple Interest) ดอกเบี้ยจะคำนวณเฉพาะจาก “เงินต้น” เท่านั้น ไม่ว่าระยะเวลาจะยาวนานแค่ไหน ดอกเบี้ยในแต่ละรอบจะเท่าเดิม
ดอกเบี้ยทบต้น (Compound Interest) ดอกเบี้ยที่ได้จะถูกนำกลับไปทบกับเงินต้นทุกงวด ดังนั้นยิ่งเวลาผ่านไปนาน ผลของดอกเบี้ยทบต้น (interest on interest) จะยิ่งเด่นชัด และผลตอบแทนจะเติบโตแบบเอ็กซ์โพเนนเชียล
สามารถเปรียบผลตอบแทนภายในระยะเวลา 1 ปีระหว่างดอกเบี้ยอย่างง่ายกับดอกเบี้ยทบต้นได้ดังนี้ถ้ากำหนดเงินลง
2.4 อัตราดอกเบี้ยพึงระบุและอัตราดอกเบี้ยแท้จริง (Nominal and Effective Interest Rates)
ความหมายของอัตราดอกเบี้ย
Nominal Interest Rate (อัตราดอกเบี้ยพึงระบุ) คืออัตราดอกเบี้ยต่อปีที่ประกาศไว้โดยไม่คำนึงถึงความถี่ของการทบต้น ตัวอย่างเช่น 12% ต่อปี ทบต้นรายเดือน หรือรายไตรมาส นิยมใช้เพื่อการสื่อสารในตลาดการเงิน เช่น ประกาศในสัญญาสินเชื่อ หรือโบรชัวร์ธนาคาร
Effective Interest Rate (อัตราดอกเบี้ยแท้จริง) คืออัตราดอกเบี้ยต่อปีที่แท้จริงซึ่งคำนึงถึงความถี่ในการทบต้นเรียบร้อยแล้ว เป็นอัตราที่สะท้อนผลตอบแทนหรือภาระต้นทุนจริงในรอบปี เหมาะสำหรับใช้ในการวิเคราะห์เปรียบเทียบทางการเงิน
ความสัมพันธ์ระหว่างอัตราดอกเบี้ยพึงระบุ และ อัตราดอกเบี้ยแท้จริงกำหนดให้
อัตราดอกเบี้ยพึงระบุ ต่อปี ที่ทบต้น ครั้งต่อปี อัตราดอกเบี้ยแท้จริง (Effective Annual Rate หรือ EAR) จำนวนครั้งที่ทบต้นใน 1 ปี
ความสัมพันธ์ระหว่างทั้งสองคือ
หากอัตราดอกเบี้ยพึงระบุ
# นิยามตัวแปร
= symbols('i i^{(m)} m', positive=True)
i, r, m # Nominal interest r
# สร้างนิพจน์ของอัตราดอกเบี้ยแท้จริง
= (1 + r/m)**m - 1
i i
# แทนค่าจริง
= i.subs({r: 0.12, m: 12})
i_numeric 4) i_numeric.evalf(
แสดงว่าแม้ธนาคารจะประกาศดอกเบี้ย 12% ต่อปี แต่เมื่อคิดผลของการทบต้นรายเดือนแล้ว จะให้ผลตอบแทนจริงประมาณ 12.68%
ตัวอย่างที่ 3 ถ้าทราบค่า Effective Annual Rate(i) และต้องการหา Nominal Interest Rate ที่ทบต้น
จากความสัมพันธ์:
เราต้องการ แก้สมการหา
# กำหนด symbol
= symbols('i i^{(m)} m', positive=True)
i, r, m # สมการจาก EAR
= Eq((1 + r/m)**m-1, i)
eq eq
แก้สมการด้วยคำสั่ง solve()
= solve(eq, r)
sol 0] sol[
ตัวอย่างที่ 3 เปรียบเทียบ Nominal ต่างกัน
สมมุติว่ามี 2 ตัวเลือก
กองทุน A เสนอผลตอบแทน 12% ต่อปี ทบต้นรายปี (ปีละครั้ง)
กองทุน B เสนอ 11.8% ต่อปี ทบต้นรายเดือน
ให้เปรียบเทียบว่ากองทุนใดให้ผลตอบแทนแท้จริงสูงกว่า
กองทุน A ให้อัรตาดอกเบี้ย
# สร้างนิพจน์ของอัตราดอกเบี้ยแท้จริง
= (1 + r/m)**m - 1
i = i.subs({r: 0.118, m: 12})
i_numeric i_numeric
ถ้าต้องการทศนิยม 4ตำแหน่งสามารถใช้ .evalf() ช่วยได้ คือ
4) # ตัวเลขในวงเล็บ คือจำนวนหลักของตัวเลขที่ปรากฏ i_numeric.evalf(
แม้กองทุน B จะมี Nominal ต่ำกว่า แต่ด้วยการทบต้นรายเดือน ผลตอบแทนจริงกลับสูงกว่ากองทุน A
หรือจะเปลี่ยน
# กำหนด symbol
= symbols('i r m', positive=True)
i, r, m # สมการจาก EAR
= Eq((1 + r/m)**m - 1, i)
eq = solve(eq, r)
sol 0].subs({i: .12, m: 12}).evalf(4) sol[
จะเห็นว่า
เราสามารถใช้ซิมไพหาค่าลิมิตได้ โดยใช้คำสั่ง limit() เพื่อแสดงว่าได้ผลลัพธ์เป็น
from sympy import limit, oo
# สร้าง symbol
= symbols('r m', positive=True, real=True)
r, m # นิพจน์ด้านซ้ายของลิมิต
= (1 + r/m)**m
expr # คำนวณลิมิตเมื่อ m เข้าใกล้ oo
= limit(expr, m, oo)
lim_expr lim_expr
ความหมายทางการเงิน
เมื่อจำนวนรอบการทบต้นในปีเพิ่มขึ้นเรื่อย ๆ (เช่น รายเดือน
รายวัน รายชั่วโมง รายวินาที)มูลค่าสะสมของเงินต้นที่ลงทุนด้วยอัตรา
ต่อปีจะเข้าใกล้ ซึ่งเป็น สูตรทบต้นต่อเนื่อง (continuous compounding)
2.5 ความสัมพันธ์ระหว่างดอกเบี้ยแบบต่างๆ
สัญลักษณ์ | ความหมาย |
---|---|
อัตราดอกเบี้ยแบบ effective ต่อปี | |
มูลค่าปัจจุบันของ 1 บาทใน 1 ปี = |
|
อัตราดอกเบี้ยแบบ nominal ต่อปี (ทบปีละ |
|
อัตราดอกเบี้ย effective ต่อปี จากการทบปีละ |
|
อัตราดอกเบี้ยแบบต่อเนื่อง (force of interest) | |
การทบต้นแบบต่อเนื่อง |
สูตรความสัมพันธ์ทั้งหมด
ระหว่าง
เมื่อ
ระหว่าง
สรุปความสัมพันธ์
ความสัมพันธ์ | สูตร |
---|---|
2.6 อัตราตราส่วนลด (Discount Rate)
ผู้อ่านคงเคยพบการยืมเงินในรูปแบบนี้ ต้องการยืมเงิน 1000 คิดดอกเบี้ย 10% ต่อปี แต่ผู้กู้ได้รับเงินเพียง 900 บาทและเมื่อครบปีต้องชำระหนี้ด้วยเงิน 1,000 บาท นั้นก็คืออัตราส่วนลด
ในคณิตศาสตร์การเงิน “อัตราส่วนลด” ใช้ในการหามูลค่าปัจจุบัน (Present Value,
2.7 อัตราส่วนลดอย่างง่าย (Simple Discount Rate)
แนวคิด ใช้อัตราส่วนลดแบบเส้นตรง โดยหักเงินจาก
= มูลค่าปัจจุบัน = มูลค่าในอนาคต = อัตราส่วนลดแบบ simple ต่อปี = จำนวนปี
2.7.1 อัตราส่วนลดทบต้น (Compound Discount Rate)
แนวคิด คล้ายกับ compound interest แต่กลับด้าน เป็นการลดลงแบบทบต้น