from sympy import symbols, Eq, solve
2 ดอกเบี้ย (Interest)
2.1 ดอกเบี้ยคืออะไร (What is Interest?)
ดอกเบี้ย คือ “ค่าตอบแทนของการใช้เงินในช่วงเวลาหนึ่ง” ผู้ให้ยืมเงินจะได้รับดอกเบี้ยเป็นการตอบแทนจากผู้ยืมเงินที่นำเงินนั้นไปใช้
มุมมองที่สำคัญ
ถ้าเราให้คนอื่นยืมเงิน ดอกเบี้ยคือ รายได้ของเรา
ถ้าเรายืมเงิน ดอกเบี้ยคือ ต้นทุนที่เราต้องจ่าย
โดยดอกเบี้ยที่ได้จะขึ้นอยู่กับตัวแปรหรือปัจจัย 3 ตัวเป็นหลัก
\(P\) = เงินต้น (Principal)
\(i\) = อัตราดอกเบี้ยต่อช่วงเวลา (interest rate per period)
\(t\) = จำนวนช่วงเวลา (number of periods)
2.2 คุณสมบัติทั่วไปของฟังก์ชันดอกเบี้ย (General Properties of Interest Functions)
ฟังก์ชันดอกเบี้ย (Interest Function) คือฟังก์ชันที่แสดงมูลค่าเงินสะสมเมื่อเวลาผ่านไป โดยมีคุณสมัติดังต่อไปนี้:
Initial Value \[ a(0) = 1 \] ฟังก์ชันสะสมต้องมีค่าเริ่มต้นเป็น 1 เสมอ หมายถึง 1 หน่วยของเงินในวันนี้มีค่าเป็น 1 หน่วยเสมอ
Monotonic Increasing \[ a(t_2) > a(t_1) \quad \text{for} \quad t_2 > t_1 \] ฟังก์ชันดอกเบี้ยเป็นฟังก์ชัน เพิ่มเสมอ เมื่อ \(i > 0\) นั่นคือเงินจะมีค่ามากขึ้นเมื่อเวลาผ่านไป
Multiplicative Property (Semigroup) \[ a(s + t) = a(s) \cdot a(t) \] โดยเฉพาะในดอกเบี้ยทบต้น สมบัตินี้สำคัญมากในแคลคูลัสของการเงิน เช่น การใช้ force of interest
Continuity and Differentiability (กรณีต่อเนื่อง): ในกรณีที่ \(a(t)\) เป็นฟังก์ชันต่อเนื่อง เช่น \(a(t) = e^{rt}\), เราสามารถหากำลังของดอกเบี้ย (force of interest) ได้ \[ \delta(t) = \frac{a'(t)}{a(t)} \] ซึ่งบ่งบอกถึง อัตราดอกเบี้ยในช่วงเวลาเล็กมาก (instantaneous rate)
2.3 ตัวอย่างฟังก์ชันดอกเบี้ยมาตราฐาน
ฟังก์ชันดอกเบี้ยเป็นเครื่องมือพื้นฐานในคณิตศาสตร์การเงิน ใช้เพื่อวิเคราะห์มูลค่าเงินตามเวลา (time value of money) โดยแสดงความสัมพันธ์ระหว่างเงินต้น อัตราดอกเบี้ย และเวลา ซึ่งสามารถแบ่งได้เป็น 2 ประเภทหลัก คือ ดอกเบี้ยอย่างง่าย (Simple Interest) และ ดอกเบี้ยทบต้น (Compound Interest)
2.3.1 ดอกเบี้ยอย่างง่าย (Simple Interest)
2.3.2 ดอกเบี้ยทบต้น (Compound Interest)
ตารางเปรียบเทียบ
คุณสมบัติ | ดอกเบี้ยอย่างง่าย | ดอกเบี้ยทบต้น |
---|---|---|
ฟังก์ชันสะสม \(a(t)\) | \(1 + i t\) | \((1 + i)^t\) |
ประเภทฟังก์ชัน | เชิงเส้น (Linear) | เอ็กซ์โปเนนเชียล (Exponential) |
ลักษณะการเติบโต | คงที่ | เร่งขึ้นตามเวลา |
มีการทบต้นหรือไม่ | ไม่มี | มี |
เหมาะกับ | เงินกู้/ลงทุนระยะสั้น | การลงทุนระยะยาว |
Semi-group \(a(s+t) = a(s) \cdot a(t)\) | ไม่ใช่ | ใช่ |
2.3.3 ตัวอย่างฟังก์ชันดอกเบี้ยแบบอื่น (Non-standard or Generalized Interest Functions)
Variable (Time-dependent) Interest Rate อัตราดอกเบี้ยไม่คงที่ ขึ้นกับเวลา \[ a(t) = \exp\left( \int_0^t \delta(s) \, ds \right) \]
โดย \(\delta(s)\) คือ force of interest ที่เปลี่ยนไปตามเวลา
ใช้ในกรณีที่อัตราดอกเบี้ยผันผวน เช่น ในตลาดตราสารหนี้
ตัวอย่าง \[ \delta(t) = 0.05 + 0.01t \quad \Rightarrow \quad a(t) = \exp\left( 0.05t + 0.005t^2 \right)\]
Piecewise Interest Function อัตราดอกเบี้ยเปลี่ยนเป็นช่วง ๆ \[ a(t) = \begin{cases} (1 + i_1)^t & \text{if } t \leq T \\ (1 + i_1)^T \cdot (1 + i_2)^{t - T} & \text{if } t > T \end{cases} \]
- ใช้ในสัญญาที่กำหนดดอกเบี้ยคงที่ช่วงแรก แล้วเปลี่ยนในภายหลัง
ตัวอย่าง
ปีที่ 1–5 อัตราดอกเบี้ย 5%
หลังจากนั้น อัตราดอกเบี้ย 3%
Stochastic Interest Function อัตราดอกเบี้ยเป็น ตัวแปรสุ่ม ใช้ใน financial economics \[a(t) = \mathbb{E}\left[ \exp\left( \int_0^t r_s \, ds \right) \right]\]
\(r_s\) stochastic interest rate process (เช่น Vasicek, CIR)
ใช้ในการวิเคราะห์ราคาอนุพันธ์ เช่นพันธบัตร หรือ swap
Stepwise (Discrete Change) อัตราดอกเบี้ยเพิ่มขึ้นแบบขั้นบันได เช่น โปรแกรมเงินฝากระยะยาว \[a(t) = \prod_{k=1}^t (1 + i_k)\]
โดย \(i_k\) คืออัตราดอกเบี้ยปีที่ \(k\)
ไม่ใช่ฟังก์ชันต่อเนื่องเหมือน compound ปกติ
ตัวอย่าง
\(i_1 = 0.03\), \(i_2 = 0.04\), \(i_3 = 0.05\)
\(a(3) = (1 + 0.03)(1 + 0.04)(1 + 0.05)\)
Hyperbolic Discount Function (Behavioral economics) ใช้ในพฤติกรรมของผู้บริโภคที่ลดค่าของอนาคตแบบ ไม่เป็นเลขชี้กำลัง (exponential) \[a(t) = \frac{1}{1 + k t}\]
ไม่ใช่ดอกเบี้ยอย่างง่ายเพราะไม่เป็นเชิงเส้น
ไม่ใช่ดอกเบี้ยทบต้นเพราะไม่เป็นเลขชี้กำลัง
ใช้ใน behavioral finance เช่น วิเคราะห์การเลือกของมนุษย์
สรุป
แบบ | ฟังก์ชัน | ใช้เมื่อ |
---|---|---|
Time-dependent | \(\exp\left( \int_0^t \delta(s) \, ds \right)\) | อัตราดอกเบี้ยแปรผัน |
Piecewise | เปลี่ยนดอกเบี้ยเป็นช่วง | สัญญาดอกเบี้ยเปลี่ยนระยะ |
Stochastic | \(\mathbb{E}[\cdots]\) | วิเคราะห์ตราสารอนุพันธ์ |
Stepwise | \(\prod (1+i_k)\) | เงินฝาก/พันธบัตรแบบขั้นบันได |
Hyperbolic | \(\frac{1}{1 + k t}\) | การเงินพฤติกรรม |
ในหนังสือเล่มนี้พิจารณาดอกเบี้ยอย่างง่ายและดอกเบี้ยทบต้นเท่านั้น
จำนวนดอกเบี้ยที่ได้รับคือผลตอบแทนที่ได้จากการลงทุน นั่นคือเงินสะสมลบด้วยเงินลงทุนนั่นเอง
ดอกเบี้ยอย่างง่าย (Simple Interest) \[ \text{Interest} = P \cdot i \cdot t \]
ดอกเบี้ยทบต้น (Compound Interest) \[ \text{Future Value} = P \cdot (1 + i)^t-P \] ตัวอย่างการสร้างฟังก์ชันเบี้ยและการคำนวณด้วยซิมไพ
ดอกเบี้ยอย่างง่าย (Simple Interest) สูตร \[A = P(1 + i t)\] โดยที่
\(A\) มูลค่ารวมเมื่อครบกำหนด
\(P\) เงินต้น
\(i\) อัตราดอกเบี้ยต่อปี
\(t\) ระยะเวลา (ปี)
# กำหนดตัวแปร
= symbols('P i t', positive=True)
P, i, t # สมการดอกเบี้ยอย่างง่าย
= P * (1 + i * t)
simple_int # แสดงสมการ
simple_int
\(\displaystyle P \left(i t + 1\right)\)
ถ้าต้องการแทนค่าลงไป เช่น \(P = 1000\), \(i = 0.05\), \(t = 3\) ปี
1000, i: 0.05, t: 3}) simple_int.subs({P:
\(\displaystyle 1150.0\)
ถ้าต้องการทศนิยม 2 ตำแหน่งให้เมท๊อด (method) .evalf() ช่วย
1000, i: 0.05, t: 3}).evalf(6) simple_int.subs({P:
\(\displaystyle 1150.0\)
- ดอกเบี้ยทบต้น (Compound Interest) สูตร \[A = P (1 + i)^t\]
# สมการดอกเบี้ยทบต้น
= P * (1 + i)**t
compound_int # แสดงสมการ
compound_int
\(\displaystyle P \left(i + 1\right)^{t}\)
ถ้าต้องการแทนค่าลงไป เช่น \(P = 1000\), \(i = 0.05\), \(t = 3\)
1000, i: 0.05, t: 3}).evalf(6) compound_int.subs({P:
\(\displaystyle 1157.63\)
หมายเหตุ เราสามารถใช้ Lambda
เพื่อสร้างฟังก์ชันทั่วไปได้ด้วย เช่น
from sympy import Lambda, lambdify
# ฟังก์ชันดอกเบี้ยอย่างง่าย
# P = เงินต้น, i = อัตราดอกเบี้ย, t =เวลา (ปี)
= Lambda((P, i, t), P * (1 + i*t))
SI 1000, 0.05, 3) SI(
\(\displaystyle 1150.0\)
ต้องการทศนิยม 2 ตำแหน่งอย่าลืมใช้เมท๊อด .evalf()
1000, 0.05, 3).evalf(7) SI(
\(\displaystyle 1150.0\)
# ฟังก์ชันดอกเบี้ยทบต้น
# P = เงินต้น, i = อัตราดอกเบี้ย, t =เวลา (ปี)
= Lambda((P, i, t), P * (1 + i)**t)
CI 1000, 0.05, 3).evalf(6) CI(
\(\displaystyle 1157.63\)
ทำไมดอกเบี้ยอย่างง่ายถึงเหมาะกับการลงทุนระยะสั้นและดอกเบี้ยทบต้นเหมาะกับการลงทุนระยะยาว เพราะว่าระยะเวลาการลงทุนน้อยกว่า 1 ปีดอกเบี้ยอย่างง่ายจะให้ผลตอบแทนมากกว่าเพราะว่า
ดอกเบี้ยอย่างง่าย (Simple Interest) ดอกเบี้ยจะคำนวณเฉพาะจาก “เงินต้น” เท่านั้น ไม่ว่าระยะเวลาจะยาวนานแค่ไหน ดอกเบี้ยในแต่ละรอบจะเท่าเดิม
ดอกเบี้ยทบต้น (Compound Interest) ดอกเบี้ยที่ได้จะถูกนำกลับไปทบกับเงินต้นทุกงวด ดังนั้นยิ่งเวลาผ่านไปนาน ผลของดอกเบี้ยทบต้น (interest on interest) จะยิ่งเด่นชัด และผลตอบแทนจะเติบโตแบบเอ็กซ์โพเนนเชียล
สามารถเปรียบผลตอบแทนภายในระยะเวลา 1 ปีระหว่างดอกเบี้ยอย่างง่ายกับดอกเบี้ยทบต้นได้ดังนี้ถ้ากำหนดเงินลง \(P=1,000\) และดอกเบี้ยเท่ากับ \(20\%\)
2.4 อัตราดอกเบี้ยพึงระบุและอัตราดอกเบี้ยแท้จริง (Nominal and Effective Interest Rates)
ความหมายของอัตราดอกเบี้ย
Nominal Interest Rate (อัตราดอกเบี้ยพึงระบุ) คืออัตราดอกเบี้ยต่อปีที่ประกาศไว้โดยไม่คำนึงถึงความถี่ของการทบต้น ตัวอย่างเช่น 12% ต่อปี ทบต้นรายเดือน หรือรายไตรมาส นิยมใช้เพื่อการสื่อสารในตลาดการเงิน เช่น ประกาศในสัญญาสินเชื่อ หรือโบรชัวร์ธนาคาร
Effective Interest Rate (อัตราดอกเบี้ยแท้จริง) คืออัตราดอกเบี้ยต่อปีที่แท้จริงซึ่งคำนึงถึงความถี่ในการทบต้นเรียบร้อยแล้ว เป็นอัตราที่สะท้อนผลตอบแทนหรือภาระต้นทุนจริงในรอบปี เหมาะสำหรับใช้ในการวิเคราะห์เปรียบเทียบทางการเงิน
ความสัมพันธ์ระหว่างอัตราดอกเบี้ยพึงระบุ และ อัตราดอกเบี้ยแท้จริงกำหนดให้
\(r^{(m)}\) อัตราดอกเบี้ยพึงระบุ ต่อปี ที่ทบต้น \(m\) ครั้งต่อปี
\(i\) อัตราดอกเบี้ยแท้จริง (Effective Annual Rate หรือ EAR)
\(m\) จำนวนครั้งที่ทบต้นใน 1 ปี
ความสัมพันธ์ระหว่างทั้งสองคือ \[ i = \left(1 + \frac{r^{(m)}}{m}\right)^m - 1 \] หรือเขียนกลับเพื่อหาค่าอัตราดอกเบี้ยที่แท้จริง \[ r^{(m)} = m \left( (1 + i)^{1/m} - 1 \right) \] ตัวอย่างที่ 1 คำนวณ Effective จาก Nominal
หากอัตราดอกเบี้ยพึงระบุ \(r^{(12)} = 12\%\) และทบต้นรายเดือน (\(m = 12\)) จะได้
# นิยามตัวแปร
= symbols('i i^{(m)} m', positive=True)
i, r, m # Nominal interest r
\(\displaystyle i^{(m)}\)
# สร้างนิพจน์ของอัตราดอกเบี้ยแท้จริง
= (1 + r/m)**m - 1
i i
\(\displaystyle \left(\frac{i^{(m)}}{m} + 1\right)^{m} - 1\)
# แทนค่าจริง
= i.subs({r: 0.12, m: 12})
i_numeric 4) i_numeric.evalf(
\(\displaystyle 0.1268\)
แสดงว่าแม้ธนาคารจะประกาศดอกเบี้ย 12% ต่อปี แต่เมื่อคิดผลของการทบต้นรายเดือนแล้ว จะให้ผลตอบแทนจริงประมาณ 12.68%
ตัวอย่างที่ 3 ถ้าทราบค่า Effective Annual Rate(i) และต้องการหา Nominal Interest Rate ที่ทบต้น \(m\) ครั้งต่อปี หรือก็คือ \(i^{(m)}\) ด้วยซิมไพ เราสามารถแก้สมการด้วยซิมไพได้ดังนี้
จากความสัมพันธ์: \[i = \left(1 + \frac{i^{(m)}}{m} \right)^m - 1\]
เราต้องการ แก้สมการหา \(i^{(m)}\) ซึ่งเรียกว่า Nominal Annual Rate compounded m times per year หรือ \(i^{(m)}\) ขั้นตอนในซิมไพคือ
# กำหนด symbol
= symbols('i i^{(m)} m', positive=True)
i, r, m # สมการจาก EAR
= Eq((1 + r/m)**m-1, i)
eq eq
\(\displaystyle \left(\frac{i^{(m)}}{m} + 1\right)^{m} - 1 = i\)
แก้สมการด้วยคำสั่ง solve()
= solve(eq, r)
sol 0] sol[
\(\displaystyle - m + \left(m^{m} \left(i + 1\right)\right)^{\frac{1}{m}}\)
ตัวอย่างที่ 3 เปรียบเทียบ Nominal ต่างกัน
สมมุติว่ามี 2 ตัวเลือก
กองทุน A เสนอผลตอบแทน 12% ต่อปี ทบต้นรายปี (ปีละครั้ง)
กองทุน B เสนอ 11.8% ต่อปี ทบต้นรายเดือน
ให้เปรียบเทียบว่ากองทุนใดให้ผลตอบแทนแท้จริงสูงกว่า
กองทุน A ให้อัรตาดอกเบี้ย \(i_A = 0.12\) ต้องเปลี่ยนอัตราดอกเบี้ย \(i^{(12)}=0.118\) ให้เป็น \(i\) กองทุน B:จากตัวอย่างที่ 1 ที่ผ่านมาจะได้
# สร้างนิพจน์ของอัตราดอกเบี้ยแท้จริง
= (1 + r/m)**m - 1
i = i.subs({r: 0.118, m: 12})
i_numeric i_numeric
\(\displaystyle 0.124595717465678\)
ถ้าต้องการทศนิยม 4ตำแหน่งสามารถใช้ .evalf() ช่วยได้ คือ
4) # ตัวเลขในวงเล็บ คือจำนวนหลักของตัวเลขที่ปรากฏ i_numeric.evalf(
\(\displaystyle 0.1246\)
แม้กองทุน B จะมี Nominal ต่ำกว่า แต่ด้วยการทบต้นรายเดือน ผลตอบแทนจริงกลับสูงกว่ากองทุน A
หรือจะเปลี่ยน \(i_A\) เป็น \(i_A^{(12)}\) ก็ได้ เนื่องจาก คำสั่ง solve(eq, r) คืนค่าเป็น ลิสต์ (list) ของคำตอบ และ sol เป็นลิสต์ ที่มี 1 ตัว ดังนั้น ต้องใช้ sol[0] เพื่อดึงนิพจน์ทางคณิตศาสตร์ออกมา
# กำหนด 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[
\(\displaystyle 0.1139\)
จะเห็นว่า \(i_A^{(12)}=.1139\) น้อยกว่า \(i_B^{(12)}=.118\)
เราสามารถใช้ซิมไพหาค่าลิมิตได้ โดยใช้คำสั่ง limit() เพื่อแสดงว่าได้ผลลัพธ์เป็น \(e^r\) จริง
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
\(\displaystyle e^{r}\)
ความหมายทางการเงิน
เมื่อจำนวนรอบการทบต้นในปีเพิ่มขึ้นเรื่อย ๆ (เช่น รายเดือน \(\rightarrow\) รายวัน \(\rightarrow\) รายชั่วโมง \(\rightarrow\) รายวินาที)
มูลค่าสะสมของเงินต้นที่ลงทุนด้วยอัตรา \(r\) ต่อปีจะเข้าใกล้ \(A = Pe^{rt}\) ซึ่งเป็น สูตรทบต้นต่อเนื่อง (continuous compounding)
2.5 ความสัมพันธ์ระหว่างดอกเบี้ยแบบต่างๆ
สัญลักษณ์ | ความหมาย |
---|---|
\(i\) | อัตราดอกเบี้ยแบบ effective ต่อปี |
\(v\) | มูลค่าปัจจุบันของ 1 บาทใน 1 ปี = \(\frac{1}{1+i}\) |
\(j =\dfrac{i^{(m)}}{m}\) | อัตราดอกเบี้ยแบบ nominal ต่อปี (ทบปีละ \(m\) ครั้ง) |
\(i^{(m)}\) | อัตราดอกเบี้ย effective ต่อปี จากการทบปีละ \(m\) ครั้ง |
\(r\) | อัตราดอกเบี้ยแบบต่อเนื่อง (force of interest) |
\(e^r\) | การทบต้นแบบต่อเนื่อง |
สูตรความสัมพันธ์ทั้งหมด
ระหว่าง \(i\) และ \(v\)
\[
v = \frac{1}{1+i} \quad \text{และ} \quad i = \frac{1 - v}{v}
\] ระหว่าง \(i\) และ \(i^{(m)}\) หรือ Nominal rate \[
i^{(m)} = \left(1 + \frac{j}{m}\right)^m - 1\]
\[ j = m \left((1 + i)^{1/m} - 1\right) \]
เมื่อ \(j\) คือ nominal annual rate ทบต้นปีละ \(m\) ครั้ง
ระหว่าง \(i\) และ \(r\) (ต่อเนื่อง) \[1 + i = e^r \quad \text{หรือ} \quad r = \ln(1 + i)\]
\[i = e^r - 1\] ระหว่าง \(v\) และ \(r\)
\[v = e^{-r}\quad \text{และ} \quad r = -\ln(v)\]
สรุปความสัมพันธ์
ความสัมพันธ์ | สูตร |
---|---|
\(v \leftrightarrow i\) | \(v = \frac{1}{1+i}\), \(i = \frac{1 - v}{v}\) |
\(i^{(m)} \leftrightarrow j\) | \(i^{(m)} = \left(1 + \frac{j}{m} \right)^m - 1\), \(j = m[(1+i)^{1/m} - 1]\) |
\(i \leftrightarrow r\) | \(1 + i = e^r\), \(r = \ln(1 + i)\), \(i = e^r - 1\) |
\(v \leftrightarrow r\) | \(v = e^{-r}\), \(r = -\ln(v)\) |
2.6 อัตราตราส่วนลด (Discount Rate)
ผู้อ่านคงเคยพบการยืมเงินในรูปแบบนี้ ต้องการยืมเงิน 1000 คิดดอกเบี้ย 10% ต่อปี แต่ผู้กู้ได้รับเงินเพียง 900 บาทและเมื่อครบปีต้องชำระหนี้ด้วยเงิน 1,000 บาท นั้นก็คืออัตราส่วนลด
ในคณิตศาสตร์การเงิน “อัตราส่วนลด” ใช้ในการหามูลค่าปัจจุบัน (Present Value, \(PV\)) จากมูลค่าในอนาคต (Future Value, \(FV\)) โดยคิดว่าเงินจะถูก “ลดลง” แทนที่จะ “งอกขึ้น” (เหมือนดอกเบี้ย) และสัญลักษณ์ที่คือ \(d\)
2.7 อัตราส่วนลดอย่างง่าย (Simple Discount Rate)
แนวคิด ใช้อัตราส่วนลดแบบเส้นตรง โดยหักเงินจาก \(F\) ลงมาตรงๆ ตามจำนวนปี \[ PV = FV\cdot(1 - d \cdot t) \] โดยที่
\(PV\) = มูลค่าปัจจุบัน
\(FV\) = มูลค่าในอนาคต
\(d\) = อัตราส่วนลดแบบ simple ต่อปี
\(t\) = จำนวนปี
2.7.1 อัตราส่วนลดทบต้น (Compound Discount Rate)
แนวคิด คล้ายกับ compound interest แต่กลับด้าน เป็นการลดลงแบบทบต้น \[ PV = FV\cdot(1 - d)^t \quad \text{หรือ} \quad v = 1 - d \] ### ความสัมพันธ์ระหว่าง \(d\) \(i\) และ \(v\) \[ d = 1 - v = \frac{i}{1 + i} \] ดังนั้น \[ i = \frac{d}{1 - d} \] และ \[ v = 1 - d \]