ইনক্রিমেন্টাল রেট অফ রিটার্ন অ্যানালাইসিস
এই পাঠে যা শিখবেন
- কেন মিউচুয়ালি এক্সক্লুসিভ অল্টারনেটিভ র্যাংকিংয়ে শুধু IRR তুলনা করা বিপজ্জনক
- ইনক্রিমেন্টাল রেট অফ রিটার্ন অ্যানালাইসিসের ধাপে-ধাপে প্রক্রিয়া
- ইনক্রিমেন্টাল ক্যাশ ফ্লো কীভাবে গঠন করতে হয়, এবং এর IRR কীভাবে ব্যাখ্যা করতে হয়
- Python-এ L20-এর বাইসেকশন ফাংশন পুনরায় ব্যবহার করে একটি সম্পূর্ণ ইনক্রিমেন্টাল অ্যানালাইসিস
১ · সমস্যা — শুধু IRR দিয়ে র্যাংকিং কেন বিপজ্জনক
ধরা যাক দুটো মিউচুয়ালি এক্সক্লুসিভ অল্টারনেটিভ আছে (দুটোর একটি বাছাই করতে হবে, দুটোই নয়) — একটির প্রাথমিক বিনিয়োগ কম কিন্তু IRR বেশি, অন্যটির বিনিয়োগ বেশি কিন্তু IRR কিছুটা কম (তবু MARR-এর চেয়ে বেশি)। স্বজ্ঞাগতভাবে মনে হতে পারে "বেশি IRR-ওয়ালাটাই বাছাই করা উচিত" — কিন্তু এটি ভুল হতে পারে, কারণ IRR একটি শতকরা হার, মোট মূল্য তৈরির পরিমাণ নয়। বড় অল্টারনেটিভে যে বাড়তি বিনিয়োগ লাগে, সেই বাড়তি টাকাটা যদি নিজেই MARR-এর চেয়ে বেশি রিটার্ন দেয়, তাহলে সেই বাড়তি বিনিয়োগ করাই আর্থিকভাবে লাভজনক — এমনকি সামগ্রিক IRR কম দেখালেও।
২ · Python-এ একটি সম্পূর্ণ ইনক্রিমেন্টাল অ্যানালাইসিস
ধরা যাক দুটো অল্টারনেটিভ, প্রতিটির জীবনকাল ৪ বছর, MARR = ১০% —
- Alt A: খরচ $10,000, প্রতি বছর $4,000 আয়
- Alt B: খরচ $20,000, প্রতি বছর $7,000 আয়
নিচের কোডে প্রথমে find_irr() (L20-এর একই বাইসেকশন ফাংশন) দিয়ে IRR_A ও
IRR_B আলাদাভাবে বের করা হয়েছে। তারপর ইনক্রিমেন্টাল ক্যাশ ফ্লো (B − A) গঠন করে তার নিজস্ব IRR
বের করে MARR-এর সাথে তুলনা করা হয়েছে — এটাই চূড়ান্ত সিদ্ধান্ত দেয়, শুধু IRR_A বা
IRR_B দেখে নয়।
# ইনক্রিমেন্টাল রেট অফ রিটার্ন অ্যানালাইসিস
def npv(cashflows, i):
return sum(cf / (1 + i) ** t for t, cf in cashflows)
def find_irr(cashflows, lo=-0.5, hi=1.0, tol=1e-7, max_iter=200):
f_lo = npv(cashflows, lo)
f_hi = npv(cashflows, hi)
if f_lo * f_hi > 0:
raise ValueError("bracket-এ NPV চিহ্ন বদলাচ্ছে না")
for _ in range(max_iter):
mid = (lo + hi) / 2
f_mid = npv(cashflows, mid)
if abs(f_mid) < tol or (hi - lo) / 2 < tol:
return mid
if f_lo * f_mid < 0:
hi = mid
else:
lo = mid
f_lo = f_mid
return (lo + hi) / 2
MARR = 0.10
# Alt A: খরচ $10,000, বার্ষিক আয় $4,000, ৪ বছর
cf_A = [(0, -10000), (1, 4000), (2, 4000), (3, 4000), (4, 4000)]
# Alt B: খরচ $20,000, বার্ষিক আয় $7,000, ৪ বছর
cf_B = [(0, -20000), (1, 7000), (2, 7000), (3, 7000), (4, 7000)]
# ইনক্রিমেন্টাল ক্যাশ ফ্লো -- বড় (B) বিয়োগ ছোট (A), বিনিয়োগ অনুযায়ী ছোট থেকে বড় সাজানো
cf_incremental = [(t, b - a) for (t, a), (_, b) in zip(cf_A, cf_B)]
irr_A = find_irr(cf_A)
irr_B = find_irr(cf_B)
irr_inc = find_irr(cf_incremental)
print(f"Alt A: IRR_A = {irr_A*100:.2f}% (NPV চেক = ${npv(cf_A, irr_A):,.6f})")
print(f"Alt B: IRR_B = {irr_B*100:.2f}% (NPV চেক = ${npv(cf_B, irr_B):,.6f})")
print("ইনক্রিমেন্টাল (B - A) ক্যাশ ফ্লো:", cf_incremental)
print(f"ইনক্রিমেন্টাল IRR = {irr_inc*100:.2f}% (NPV চেক = ${npv(cf_incremental, irr_inc):,.6f})")
print()
print(f"MARR = {MARR*100:.0f}%")
if irr_inc >= MARR:
print("সিদ্ধান্ত: ইনক্রিমেন্টাল IRR MARR-এর চেয়ে বেশি -- বাড়তি বিনিয়োগ যুক্তিসঙ্গত, তাই Alt B বাছাই করা উচিত।")
else:
print("সিদ্ধান্ত: ইনক্রিমেন্টাল IRR MARR-এর চেয়ে কম -- বাড়তি বিনিয়োগ যুক্তিসঙ্গত নয়, তাই Alt A-তেই থাকা উচিত।")
IRR_A (প্রায় ২২%) IRR_B (প্রায় ১৫%)-এর চেয়ে বেশি, আর
ইনক্রিমেন্টাল IRR (প্রায় ৮%) হিসাব করলে দেখা যায় তা MARR = ১০%-এর কম — অর্থাৎ এই নির্দিষ্ট
সংখ্যায় বাড়তি $10,000 বিনিয়োগ যথেষ্ট রিটার্ন দিচ্ছে না, তাই সঠিক সিদ্ধান্ত হলো Alt A-তেই থাকা, যা এখানে
সরল "বেশি IRR বাছাই করো" নিয়মের সাথেও মিলে যায়। কিন্তু এই মিল কাকতালীয় — সংখ্যা একটু বদলে
দিলে (যেমন Alt B-র বার্ষিক আয় আরেকটু বাড়িয়ে) ইনক্রিমেন্টাল IRR সহজেই MARR-এর উপরে চলে যেতে পারে, তখন সরল
IRR-র্যাংকিং ভুল সিদ্ধান্ত দিত। এই কারণেই সবসময় ইনক্রিমেন্টাল অ্যানালাইসিস করাই একমাত্র
নির্ভরযোগ্য পদ্ধতি — শুধু ব্যক্তিগত IRR তুলনা করে অনুমান করা নয়।
মিউচুয়ালি এক্সক্লুসিভ অল্টারনেটিভ র্যাংক করতে হলে ব্যক্তিগত IRR তুলনা যথেষ্ট নয় — বিনিয়োগ অনুযায়ী সাজিয়ে, ইনক্রিমেন্টাল (পার্থক্য) ক্যাশ ফ্লোর IRR বের করে MARR-এর সাথে তুলনা করাই একমাত্র নির্ভরযোগ্য পদ্ধতি। এই একই যুক্তি M4-এর PW/AW পদ্ধতিতেও প্রযোজ্য (সেখানে সরাসরি PW/AW তুলনা করলেই চলে, ইনক্রিমেন্টাল ধাপ লাগে না) — যা দেখায় কেন PW/AW প্রায়ই IRR-এর চেয়ে ব্যবহার করা সহজ, বিষয়টি L24-এ আরও বিস্তারিত আলোচনা হবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ ইনক্রিমেন্টাল ক্যাশ ফ্লো গঠনের সময় কেন সবসময় বড় বিনিয়োগ থেকে ছোট বিনিয়োগ বিয়োগ করা হয়, উল্টো নয়?
কারণ ইনক্রিমেন্টাল অ্যানালাইসিসের প্রশ্নটাই হলো — "বাড়তি টাকা বিনিয়োগ করা কি লাভজনক?" এই প্রশ্নের অর্থপূর্ণ উত্তর পেতে হলে ইনক্রিমেন্টাল ক্যাশ ফ্লোর বছর ০-এ একটি ঋণাত্মক (বিনিয়োগ) মান থাকতে হবে — যা তখনই হয় যখন বড় থেকে ছোট বিয়োগ করা হয়। উল্টো করলে সমীকরণের অর্থই বদলে যায়, এবং IRR-এর ব্যাখ্যাও ভুল হয়ে যায়।
প্র ০২ যদি তিনটি মিউচুয়ালি এক্সক্লুসিভ অল্টারনেটিভ থাকে, ইনক্রিমেন্টাল অ্যানালাইসিস কীভাবে প্রসারিত হবে?
প্রথমে বিনিয়োগ অনুযায়ী ছোট থেকে বড় সাজিয়ে, প্রথম দুটোর মধ্যে ইনক্রিমেন্টাল IRR বের করে সেরাটি বাছাই করা হয় (উপরের প্রক্রিয়ার মতো)। তারপর সেই "বিজয়ী" অল্টারনেটিভের সাথে তৃতীয়টির ইনক্রিমেন্টাল IRR বের করে আবার তুলনা করা হয় — এভাবে জোড়ায় জোড়ায় তুলনা করতে করতে শেষ পর্যন্ত একটি চূড়ান্ত বিজয়ী পাওয়া যায়।
প্র ০৩ ইনক্রিমেন্টাল ক্যাশ ফ্লোতে একাধিক সাইন-চেঞ্জ থাকলে কী সমস্যা হতে পারে?
তাহলে L21-এ শেখা মাল্টিপল-IRR সমস্যা এখানেও দেখা দিতে পারে — ইনক্রিমেন্টাল ক্যাশ ফ্লোর একাধিক বৈধ IRR থাকতে পারে, যা MARR-এর সাথে সরাসরি তুলনাকে অস্পষ্ট করে তোলে। সেক্ষেত্রে ইনক্রিমেন্টাল PW বা AW (MARR-এ হিসাব করে তার চিহ্ন দেখা — ধনাত্মক হলে বড়টি গ্রহণযোগ্য) ব্যবহার করা বেশি নিরাপদ, কারণ PW/AW-এর কোনো "একাধিক মূল্য" সমস্যা নেই।
অনুশীলন
-
চিন্তা করুন: Alt B-র প্রাথমিক খরচ একই রেখে বার্ষিক আয় $7,000 থেকে বাড়িয়ে $7,500 করা হলে
ইনক্রিমেন্টাল IRR-এর কী পরিবর্তন হবে, এবং চূড়ান্ত সিদ্ধান্ত কি বদলে যেতে পারে?
ইনক্রিমেন্টাল ক্যাশ ফ্লোর বার্ষিক অংশ $3,000 থেকে বেড়ে $3,500 হবে (যেহেতু Alt A অপরিবর্তিত), যা ইনক্রিমেন্টাল IRR বাড়িয়ে দেবে। যথেষ্ট বাড়লে ইনক্রিমেন্টাল IRR MARR = ১০%-এর উপরে চলে যেতে পারে — তখন সিদ্ধান্ত বদলে Alt B বাছাই করা উচিত হয়ে যাবে, যদিও Alt A-র নিজস্ব IRR তখনও বেশি থাকবে। এটাই দেখায় কেন ইনক্রিমেন্টাল বিশ্লেষণ ছাড়া নিশ্চিতভাবে বলা যায় না।
-
পরীক্ষা করুন: উপরের কোড সেলে
MARR-কে0.10থেকে0.05-এ বদলে Run চেপে দেখুন সিদ্ধান্ত (Alt A নাকি Alt B) বদলে যায় কি না।ইনক্রিমেন্টাল IRR (প্রায় ৮%) নিজে অপরিবর্তিত থাকবে (এটি শুধু ক্যাশ ফ্লোর উপর নির্ভর করে, MARR-এর উপর নয়), কিন্তু
MARR = 0.05হলে ইনক্রিমেন্টাল IRR (৮%) এখন MARR-এর চেয়ে বেশি হয়ে যাবে — তাই সিদ্ধান্ত বদলে Alt B বাছাই করা উচিত হয়ে যাবে। এটি দেখায় MARR নিজেই সিদ্ধান্তে কতটা প্রভাব ফেলে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ টাইম ভ্যালু অফ মানি, ক্যাশ ফ্লো সিরিজ, ওয়ার্থ-ভিত্তিক তুলনা, রেট অফ রিটার্ন, ডেপ্রিসিয়েশন, ট্যাক্স, ইনফ্লেশন, রিস্ক অ্যানালাইসিস ও ক্যাপিটাল বাজেটিং — সম্পূর্ণ কোর্স এক জায়গায়।
- Discrete Mathematics কোর্স সহোদর কোর্স সিকোয়েন্স ও সিরিজের সমষ্টির সূত্র — এই পাঠের ইনক্রিমেন্টাল ক্যাশ ফ্লো NPV সমষ্টিরও একই গাণিতিক ভিত্তি।
- সব 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 — সব এক জায়গায়।