একাধিক কম্পাউন্ডিং ও পেমেন্ট পিরিয়ড
এই পাঠে যা শিখবেন
- পেমেন্ট পিরিয়ড ও কম্পাউন্ডিং পিরিয়ড ভিন্ন হলে কেন সরাসরি P/A বা F/A সূত্র প্রয়োগ করা যায় না
- নমিনাল রেটকে পেমেন্ট পিরিয়ডের সমান ইফেক্টিভ রেটে রূপান্তর করার কৌশল
- একটি সহজ কেস (মাসিক পেমেন্ট, মাসিক কম্পাউন্ডিং) ও একটি কঠিন কেস (ত্রৈমাসিক পেমেন্ট, মাসিক কম্পাউন্ডিং) Python-এ সমাধান করা
- ফলাফলকে একটি সম্পূর্ণ স্বাধীন মাস-ভিত্তিক গণনার সাথে ক্রস-চেক করে যাচাই করা
১ · সমস্যা: পিরিয়ড ভিন্ন হলে কী হয়
স্বাভাবিক অ্যানুইটি সূত্র (P/A, A/P, F/A, A/F) ধরে নেয় ঠিক একটি পিরিয়ড — যে হারে সুদ কম্পাউন্ড হয়, ঠিক সেই দৈর্ঘ্যের পিরিয়ডেই পেমেন্ট ঘটে। কিন্তু বাস্তবে অনেক সময় এই দুই পিরিয়ড আলাদা: একটি ব্যাংক লোন হয়তো মাসিক কম্পাউন্ডিং ব্যবহার করে, কিন্তু আপনার কিস্তি হয়তো ত্রৈমাসিক। এই ভিন্নতা থাকলে নমিনাল বার্ষিক রেটকে সরাসরি ত্রৈমাসিক বা মাসিক ভাগ করে প্রয়োগ করলে ভুল উত্তর আসবে।
যে পিরিয়ডে পেমেন্ট ঘটে, ঠিক সেই দৈর্ঘ্যের একটি ইফেক্টিভ রেট বের করতে হবে — নমিনাল বার্ষিক রেট $r$, বছরে $m$ বার কম্পাউন্ড হলে, প্রতি কম্পাউন্ডিং পিরিয়ডে রেট $r/m$। যদি পেমেন্ট পিরিয়ডে $c$টি কম্পাউন্ডিং পিরিয়ড থাকে (যেমন ১ কোয়ার্টারে ৩টি মাস), তাহলে পেমেন্ট-পিরিয়ড ইফেক্টিভ রেট —
$$i_{payment\ period} = \left(1 + \frac{r}{m}\right)^{c} - 1$$
এই $i_{payment\ period}$ বসিয়ে তারপর স্বাভাবিক অ্যানুইটি সূত্র প্রয়োগ করলেই সঠিক উত্তর পাওয়া যায় — M2-তে শেখা নমিনাল→ইফেক্টিভ রূপান্তর সূত্রেরই এটি একটি সরাসরি প্রয়োগ, শুধু "বছরের" বদলে "পেমেন্ট পিরিয়ডের" জন্য প্রয়োগ করা হচ্ছে।
পেমেন্ট পিরিয়ড = কম্পাউন্ডিং পিরিয়ড হলে (c=1), ইফেক্টিভ রেট = নমিনাল/m — সরাসরি সূত্র প্রয়োগ করা যায়।
পেমেন্ট পিরিয়ড কম্পাউন্ডিং পিরিয়ডের চেয়ে বড় হলে (c>1, যেমন কোয়ার্টারে ৩টি মাস), আগে ইফেক্টিভ পেমেন্ট-পিরিয়ড রেট বের করতে হবে।
২ · Python-এ দুটো concrete উদাহরণ
উদাহরণ ১ (সহজ কেস): প্রতি মাসের শেষে $200 জমা, ৩ বছর ধরে, নমিনাল বার্ষিক রেট ৬% মাসিক কম্পাউন্ডেড — যেহেতু পেমেন্ট ও কম্পাউন্ডিং উভয়ই মাসিক, ইফেক্টিভ মাসিক রেট সরাসরি $6\%/12 = 0.5\%$।
উদাহরণ ২ (কঠিন কেস): প্রতি কোয়ার্টারের শেষে $500 জমা, ৫ বছর ধরে, নমিনাল বার্ষিক রেট ৮% মাসিক কম্পাউন্ডেড — এখানে প্রথমে ইফেক্টিভ কোয়ার্টারলি রেট বের করতে হবে: $(1+0.08/12)^3 - 1$, তারপর সেই রেট দিয়ে ২০টি কোয়ার্টারের F/A প্রয়োগ করতে হবে।
# পেমেন্ট পিরিয়ড ও কম্পাউন্ডিং পিরিয়ড ভিন্ন হলে -- ইফেক্টিভ রেট রূপান্তর
def fa_factor(i, n):
return ((1 + i) ** n - 1) / i
# --- উদাহরণ ১: মাসিক ডিপোজিট, মাসিক কম্পাউন্ডিং (সহজ কেস, c=1) ---
deposit1 = 200
nominal1 = 0.06 # বার্ষিক নমিনাল রেট, মাসিক কম্পাউন্ডেড
m1 = 12 # প্রতি বছর কম্পাউন্ডিং সংখ্যা
years1 = 3
n1 = years1 * 12 # মোট পেমেন্ট (মাস)
i_monthly = nominal1 / m1 # পেমেন্ট পিরিয়ড = কম্পাউন্ডিং পিরিয়ড, তাই সরাসরি nominal/m
F1 = deposit1 * fa_factor(i_monthly, n1)
print("--- উদাহরণ ১: মাসিক ডিপোজিট, মাসিক কম্পাউন্ডিং ---")
print(f"deposit=${deposit1:,.2f}/মাস, nominal={nominal1*100:.0f}% (মাসিক কম্পাউন্ডেড), {years1} বছর ({n1} মাস)")
print(f"effective monthly rate = {i_monthly*100:.4f}%")
print(f"F = ${F1:,.2f}")
# --- উদাহরণ ২: ত্রৈমাসিক ডিপোজিট, মাসিক কম্পাউন্ডিং (কঠিন কেস, c=3) ---
deposit2 = 500
nominal2 = 0.08 # বার্ষিক নমিনাল রেট, মাসিক কম্পাউন্ডেড
m2 = 12
years2 = 5
n2 = years2 * 4 # মোট পেমেন্ট (কোয়ার্টার)
i_monthly2 = nominal2 / m2
i_quarterly_effective = (1 + i_monthly2) ** 3 - 1 # ১ কোয়ার্টার = ৩ মাস, তাই ৩ বার কম্পাউন্ড
F2 = deposit2 * fa_factor(i_quarterly_effective, n2)
print("\n--- উদাহরণ ২: ত্রৈমাসিক ডিপোজিট, মাসিক কম্পাউন্ডিং ---")
print(f"deposit=${deposit2:,.2f}/quarter, nominal={nominal2*100:.0f}% (মাসিক কম্পাউন্ডেড), {years2} বছর ({n2} quarters)")
print(f"effective quarterly rate = (1+{nominal2}/{m2})^3 - 1 = {i_quarterly_effective*100:.4f}%")
print(f"F = ${F2:,.2f}")
# ক্রস-চেক: মাস-ভিত্তিক ডাইরেক্ট গণনা (প্রতি ৩ মাসে $500 জমা, প্রতিটি অবশিষ্ট মাসগুলোতে মাসিক হারে বাড়ে)
def future_value_direct(deposit, i_period, n_period, deposit_every):
total = 0.0
for t in range(deposit_every, n_period + 1, deposit_every):
months_to_grow = n_period - t
total += deposit * (1 + i_period) ** months_to_grow
return total
n2_months = years2 * 12
F2_direct = future_value_direct(deposit2, i_monthly2, n2_months, 3)
print(f"\nক্রস-চেক (মাস-ভিত্তিক ডাইরেক্ট গণনা, {n2_months} মাস, প্রতি ৩ মাসে জমা): F = ${F2_direct:,.2f}")
assert abs(F2 - F2_direct) < 0.01
print("চেক পাস -- effective-quarterly-rate পদ্ধতি ও মাস-ভিত্তিক ডাইরেক্ট গণনা একই ফলাফল দিয়েছে।")
future_value_direct() ফাংশনটি ইফেক্টিভ-রেট কৌশল সম্পূর্ণ এড়িয়ে যায় — এটি শুধু প্রতিটি $500
ডিপোজিটকে তার নিজস্ব বাকি মাসগুলোর জন্য মাসিক হারে সরাসরি কম্পাউন্ড করে। দুটো সম্পূর্ণ ভিন্ন পথ একই F দিলে
বোঝা যায় ইফেক্টিভ-কোয়ার্টারলি-রেট পদ্ধতিটি গাণিতিকভাবে সঠিক, নিছক একটি approximation নয়।
পেমেন্ট পিরিয়ড ও কম্পাউন্ডিং পিরিয়ড মিলিয়ে দেখাই সবচেয়ে গুরুত্বপূর্ণ প্রথম ধাপ — নমিনাল রেটকে সরাসরি পেমেন্ট পিরিয়ড দিয়ে ভাগ করলে ভুল হবে যদি সেটি কম্পাউন্ডিং পিরিয়ডের সমান না হয়। সঠিক ইফেক্টিভ পেমেন্ট-পিরিয়ড রেট বের করে নিলে M3-এর সব অ্যানুইটি ও গ্রেডিয়েন্ট ফ্যাক্টর স্বাভাবিকভাবেই প্রযোজ্য হয়ে যায়। এতদিন M3-এ শেখা ইউনিফর্ম, অ্যারিথমেটিক ও জিওমেট্রিক গ্রেডিয়েন্ট, ডিফার্ড অ্যানুইটি এবং এই পিরিয়ড-রূপান্তর কৌশল — সব মিলিয়েই M4-এ শুরু হওয়া PW/FW/AW-ভিত্তিক অল্টারনেটিভ তুলনার সম্পূর্ণ টুলকিট তৈরি।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১
উদাহরণ ২-এ কেন সরাসরি nominal2 / 4 (বার্ষিক রেটকে ৪ দিয়ে ভাগ) করে কোয়ার্টারলি রেট বের করা যায় না?
কারণ কম্পাউন্ডিং হচ্ছে মাসিক, কোয়ার্টারলি নয় — বছরে ১২ বার কম্পাউন্ড হচ্ছে, ৪ বার নয়। সরাসরি
nominal2/4 করলে সেটা ধরে নিত কোয়ার্টারলি কম্পাউন্ডিং হচ্ছে, যা প্রকৃত পরিস্থিতি নয় — এতে
প্রতি কোয়ার্টারের মধ্যে যে ৩ মাসের কম্পাউন্ডিং ঘটছে সেটা উপেক্ষা করা হয়ে যেত, ফলে সামান্য কম রেট (এবং কম F)
পাওয়া যেত।
প্র ০২ যদি কম্পাউন্ডিং দৈনিক হতো আর পেমেন্ট এখনও ত্রৈমাসিক, ইফেক্টিভ কোয়ার্টারলি রেট সূত্রে কী বদলাবে?
সূত্রের কাঠামো একই থাকবে — $(1 + r/m)^c - 1$ — শুধু m হবে ৩৬৫ (বা ৩৬০, কনভেনশন
অনুযায়ী) এবং c হবে এক কোয়ার্টারে যত দিন থাকে (প্রায় ৯১)। যত বেশি ঘন ঘন কম্পাউন্ডিং হয়, তত
বেশি ইফেক্টিভ রেট নমিনাল রেটের চেয়ে বেশি হয়ে যায় — এটি M2-এর নমিনাল-বনাম-ইফেক্টিভ পাঠের সরাসরি সম্প্রসারণ।
প্র ০৩ কোড সেলের ক্রস-চেক ফাংশন কেন গুরুত্বপূর্ণ — এটা কী গ্যারান্টি দেয়?
এটা গ্যারান্টি দেয় ইফেক্টিভ-রেট কৌশলটি শুধু একটি সুবিধাজনক শর্টকাট নয়, বরং প্রকৃত অর্থে একই আর্থিক ফলাফল দেয় যা প্রতিটি ডিপোজিটকে আলাদাভাবে সবচেয়ে মৌলিক (মাসিক) স্তরে কম্পাউন্ড করলে পাওয়া যায়। যেহেতু দুটো সম্পূর্ণ ভিন্ন কোড-পথ (একটি ফ্যাক্টর-সূত্র ব্যবহার করে, আরেকটি প্রতিটি ডিপোজিট আলাদাভাবে বাড়িয়ে) একই সংখ্যায় পৌঁছায়, তাই ভুল হওয়ার সম্ভাবনা অনেক কমে যায়।
অনুশীলন
-
চিন্তা করুন: দুটো সেভিংস প্ল্যান — প্ল্যান X: মাসিক ডিপোজিট, বার্ষিক নমিনাল রেট ৬% মাসিক
কম্পাউন্ডেড। প্ল্যান Y: একই মাসিক ডিপোজিট, একই নমিনাল রেট কিন্তু বার্ষিক কম্পাউন্ডেড। কোনটির ফলাফল ভবিষ্যৎ
মূল্য বেশি হবে, এবং কেন?
প্ল্যান X-এর ফলাফল বেশি হবে, কারণ মাসিক কম্পাউন্ডিং মানে সুদের উপর সুদ বছরে ১২ বার যোগ হয় (বার্ষিক কম্পাউন্ডিং-এ মাত্র ১ বার)। এটি M2-এর মূল শিক্ষার আরেকটি প্রয়োগ — একই নমিনাল রেটে বেশি ঘন ঘন কম্পাউন্ডিং সবসময় বেশি ইফেক্টিভ রেট এবং তাই বেশি ভবিষ্যৎ মূল্য দেয়।
-
পরীক্ষা করুন: উপরের কোড সেলে উদাহরণ ২-এ
nominal2 = 0.08-কেnominal2 = 0.12-এ বদলে Run চেপে দেখুন effective quarterly rate ও F2 কীভাবে বদলায়, এবং ক্রস-চেকassertএখনও পাস করে কি না।nominal2 = 0.12হলেi_monthly2 = 0.01, effective quarterly rate =(1.01)^3 - 1 ≈ 3.0301%— আগের ২.০১৩৪%-এর চেয়ে বেশি। F2 উল্লেখযোগ্যভাবে বাড়বে (উচ্চ রেটে কম্পাউন্ডিং)।assertএখনও পাস করবে, কারণ ক্রস-চেক সম্পর্কটি যেকোনো নমিনাল রেটের জন্যই সত্য — এটি নির্দিষ্ট সংখ্যার উপর নির্ভর করে না।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ টাইম ভ্যালু অফ মানি, ক্যাশ ফ্লো সিরিজ, ওয়ার্থ-ভিত্তিক তুলনা, রেট অফ রিটার্ন, ডেপ্রিসিয়েশন, ট্যাক্স, ইনফ্লেশন, রিস্ক অ্যানালাইসিস ও ক্যাপিটাল বাজেটিং — সম্পূর্ণ কোর্স এক জায়গায়।
- Discrete Mathematics কোর্স সহোদর কোর্স জিওমেট্রিক সিরিজের সমষ্টি — নমিনাল-থেকে-ইফেক্টিভ রেট রূপান্তরের গাণিতিক ভিত্তি সেখানেই তৈরি হয়েছে।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design, Software Engineering & Git, Theory of Computation ও Engineering Economics — সব এক জায়গায়।