কীভাবে একটি ঋণের জন্য একটি মৌলিক পাইথন নগদ প্রবাহ মডেল তৈরি করবেন

অনেক আর্থিক বিশেষজ্ঞ আর্থিক মডেল তৈরি করতে Excel ব্যবহারে পারদর্শী। যাইহোক, পিয়ার রিভিউ, ভার্সন কন্ট্রোল এবং রিকারসিভ ফাংশন গঠনে অক্ষমতার কারণে, এক্সেল আরও পরিশীলিত মডেলের জন্য সেরা পছন্দ নাও হতে পারে। এই ত্রুটিগুলি সত্ত্বেও, অনেক আর্থিক পেশাদাররা এখনও এক্সেল ব্যবহার করে কারণ তারা পাইথনের মতো প্রোগ্রামিং ভাষার সাথে কম আত্মবিশ্বাসী।

পাইথন শেখার সবচেয়ে সহজ প্রোগ্রামিং ভাষাগুলির মধ্যে একটি। কারণ এটি পঠনযোগ্যতা এবং ব্যবহারের সহজলভ্যতার সাথে ডিজাইন করা হয়েছিল, এর কোডটি সংক্ষিপ্ত এবং সাধারণ ইংরেজির কাছাকাছি। এই নিবন্ধে, আমি দেখাচ্ছি যে সবচেয়ে মৌলিক ফাংশন, প্যাকেজ এবং ডেটা স্ট্রাকচার ব্যবহার করে ঋণের অর্থপ্রদানের জন্য একটি পাইথন নগদ প্রবাহ মডেল তৈরি করা কতটা সহজ৷

অনুসরণ করতে, আপনাকে Colaboratory (সংক্ষেপে "Colab") ব্যবহার করতে হবে, Google-এর বিনামূল্যের ওয়েব-ভিত্তিক নোটবুক অ্যাপ্লিকেশন যা আপনাকে কোড লিখতে এবং কার্যকর করতে দেয়। Colab হল একটি পাইথন ইন্টারপ্রেটার যা কোড, মার্কডাউন (সহজে স্টাইল করা টেক্সটের জন্য), ছবি বা অন্যান্য ডেটা থাকতে পারে এমন সেল ব্যবহার করে। আপনার লেখার সাথে সাথে Colab ক্রমাগত আপনার কোডের মানগুলি সঞ্চয় করে, যাতে ভুল বা বাগগুলি প্রদর্শিত হওয়ার সাথে সাথে তা ধরতে দ্রুত এবং সহজ হয়। (আপনি যদি এখনও ঝাঁপিয়ে পড়তে না চান, তাহলে এই Colab নোটবুকের উদাহরণটি অনুসরণ করুন।)

প্রথমে, নিশ্চিত করুন যে আপনার কাছে প্রয়োজনীয় সরঞ্জাম আছে

আমরা একটি পরিমার্জিত ঋণের জন্য একটি মডেল তৈরি করব যার একটি নির্ধারিত, পর্যায়ক্রমিক অর্থপ্রদান ঋণের মূল এবং সুদ উভয় ক্ষেত্রেই প্রযোজ্য। প্রতিটি সময়ের জন্য এটির একটি নির্দিষ্ট কিস্তি রয়েছে এবং অর্থপ্রদানের সুদের অংশ সময়ের সাথে সাথে হ্রাস পায়। এই মডেলের জন্য আপনার তিনটি পাইথন লাইব্রেরি, সফ্টওয়্যার রুটিনের সংগ্রহের প্রয়োজন হবে যা বিকাশকারীদেরকে স্ক্র্যাচ থেকে কোড লিখতে বাধা দেয়—NumPy, Pandas এবং Matplotlib:

  • numpy-financial==1.0.0
  • pandas==1.2.3
  • matplotlib==3.2.2

Colab-এ, Pandas এবং Matplotlib প্যাকেজগুলি ডিফল্টরূপে ইনস্টল করা থাকে, তাই আপনাকে শুধুমাত্র নম্পি-ফাইনান্সিয়াল লাইব্রেরি ইনস্টল করতে হবে, যেটি আপনি সরাসরি Colab থেকে করতে পারেন। নম্পি-ফাইন্যান্সিয়াল ইনস্টল করতে এবং তিনটি লাইব্রেরি ইম্পোর্ট করতে যা পরে আপনার প্রয়োজন হবে, ফাইল মেনু থেকে একটি নতুন Colab নোটবুক খুলুন এবং প্রথম কোড সেলে নিম্নলিখিতটি পেস্ট করুন:

# initial set-up
!pip install numpy_financial
import pandas as pd
import numpy_financial as npf
import matplotlib.pyplot as plt
from collections import namedtuple

আমরা পরবর্তী ধাপে যাওয়ার আগে, আমাকে আগের কোডটি ব্যাখ্যা করতে দিন এবং কেন এটি লেখা হয়েছে সেভাবে লেখা হয়েছে। যদিও numpy-financial-এর নামে একটি হাইফেন রয়েছে, আপনি যখন এটি ইনস্টল এবং আমদানি করবেন তখন আপনাকে অবশ্যই নামের মধ্যে একটি আন্ডারস্কোর ব্যবহার করতে হবে। (numpy_financial ইনস্টল করার বিষয়ে আরও তথ্য এবং ব্যাখ্যার জন্য, ডকুমেন্টেশন দেখুন।) আপনিও সংক্ষিপ্ত রূপগুলি লক্ষ্য করতে পারেন। প্রাক-সংজ্ঞায়িত উপনামগুলি সাধারণত প্যাকেজগুলির জন্য ব্যবহৃত হয় - NumPy np হিসাবে লেখা হয়, Pandas pd হিসাবে। এই উপনামগুলি আপনাকে প্যাকেজের পুরো নাম লেখা থেকে বাঁচাতে ব্যবহার করা হয় যখন আপনি এটি ব্যবহার করতে চান এবং আপনার কোডকে আরও পাঠযোগ্য করে তুলতে সাহায্য করে৷

এখন, ঋণের বৈশিষ্ট্য সেট আপ করতে NumPy ব্যবহার করুন

NumPy হল সবচেয়ে জনপ্রিয় পাইথন লাইব্রেরিগুলির মধ্যে একটি যা বড়, বহুমাত্রিক অ্যারেগুলির জন্য সমর্থন যোগ করে এবং সেই অ্যারেগুলিতে কাজ করার জন্য উচ্চ-স্তরের গাণিতিক ফাংশনের একটি উল্লেখযোগ্য সংগ্রহের সাথে। numpy-আর্থিক লাইব্রেরি হল একটি অপেক্ষাকৃত নতুন প্যাকেজ যা সাধারণত ব্যবহৃত আর্থিক ফাংশনগুলির একটি সংগ্রহের সমন্বয়ে গঠিত যা প্রধান NumPy লাইব্রেরি থেকে আলাদা করা হয়েছে এবং তাদের নিজস্ব গর্বের স্থান দেওয়া হয়েছে৷

আমাদের পরিমার্জিত ঋণের জীবনের জন্য নির্ধারিত সুদ এবং মূল ভেক্টর গণনা করার সবচেয়ে সহজ উপায় হল নম্পি-ফাইনান্সিয়াল প্যাকেজ থেকে PMT, IPMT, এবং PPMT ফাংশনগুলি ব্যবহার করা। PMT ফাংশন একটি নির্দিষ্ট সংখ্যক সময়ের মধ্যে সম্পূর্ণরূপে ঋণ পরিশোধ করার জন্য নির্দিষ্ট ঋণের কিস্তি প্রদান করে। IPMT এবং PPMT ফাংশন যথাক্রমে সুদ এবং মূল অর্থ প্রদান করে। পিরিয়ডের ইনপুটের উপর নির্ভর করে, আইপিএমটি এবং পিপিএমটি ফাংশনগুলি একটি একক পিরিয়ড বা একাধিক পিরিয়ডের জন্য মান ফিরিয়ে দিতে পারে।

এই উদাহরণের জন্য, আমরা পিরিয়ড ইনপুট হিসাবে লোনের সম্পূর্ণ আয়ু সহ একটি পরিসর প্রদান করব। যেমন, আমরা ঋণ জীবনের প্রতিটি সময়ের জন্য মূল অর্থপ্রদানের সুদের সাথে ভেক্টর অ্যারে পাব:

# loan characteristics
original_balance = 500_000
coupon = 0.08
term = 120

# payments
periods = range(1, term+1)
interest_payment = npf.ipmt(
    rate=coupon / 12, per=periods, nper=term, pv=-original_balance)
principal_payment = npf.ppmt(
    rate=coupon / 12, per=periods, nper=term, pv=-original_balance)

কোডটি লেখার পরে আপনি আপনার Colab ফাইলে কিছু ঘটতে "দেখবেন না"—এটি এই অনুশীলনের বাকি কাজ করার জন্য প্রয়োজনীয় প্রাথমিক ঋণ তথ্য। (আমি যে সমস্ত নম্পি-আর্থিক ফাংশন ব্যবহার করেছি, তাদের সংজ্ঞা এবং তাদের ইনপুটগুলির একটি তালিকা অফিসিয়াল ডকুমেন্টেশনে পাওয়া যাবে।)

এরপর, একটি চার্ট তৈরি করতে Matplotlib ব্যবহার করুন

যদিও ভেক্টরগুলিকে আউটপুট হিসাবে রাখা ভাল, এটি একটি চার্ট আকারে আউটপুটকে কল্পনা করা ভাল হতে পারে, বিশেষত একটি স্ট্যাক প্লট হিসাবে। চার্ট সেট আপ করতে, আমরা plt ব্যবহার করব , ম্যাটপ্লটলিব লাইব্রেরি থেকে ফাংশনগুলির পাইপ্লট সংগ্রহের উপনাম। আমাদের উদাহরণে, আমরা উপরের বাম কোণে একটি কিংবদন্তি যোগ করব এবং x-অক্ষ এবং y-অক্ষে শিরোনাম যোগ করব। যেহেতু আমরা একটি অভ্যন্তরীণ সীমানা চাই না, আমরা মার্জিন 0 এ সেট করি।

অন্য কোড সেল যোগ করুন, এবং নিম্নলিখিত কোড সন্নিবেশ করুন:

plt.stackplot(periods, interest_payment, principal_payment, 
              labels=['Interest', 'Principal'])
plt.legend(loc='upper left')
plt.xlabel("Period")
plt.ylabel("Payment")
plt.margins(0, 0)

আমরা দেখতে পাচ্ছি, সময়ের সাথে সাথে আগ্রহ কমে যায়। প্রতিটি মেয়াদে মূল অর্থপ্রদানের কারণে ঋণের ভারসাম্যও হ্রাস পায়। নির্দিষ্ট কিস্তি বজায় রাখতে, মূল অংশ বাড়াতে হবে।

অবশেষে, একটি টেবিল তৈরি করতে পান্ডা ব্যবহার করুন

সাংখ্যিক সারণী এবং টাইম সিরিজ ম্যানিপুলেট করার জন্য পান্ডাস প্যাকেজটি সর্বাধিক ব্যবহৃত পাইথন প্যাকেজ। এটি দ্রুত, নমনীয় এবং অভিব্যক্তিপূর্ণ ডেটা স্ট্রাকচার সরবরাহ করে যা রিলেশনাল বা লেবেলযুক্ত ডেটার সাথে কাজ করা সহজ এবং স্বজ্ঞাত উভয়ই করার জন্য ডিজাইন করা হয়েছে। আমরা একটি সারণী তৈরি করব যাতে মূল এবং সুদের পেমেন্ট, সেইসাথে প্রতিটি সময়ের জন্য ঋণের ব্যালেন্স শুরু ও শেষ থাকে:

_# pandas float formatting_
pd.options.display.float_format = '{:,.2f}'.format

_# cash flow table_
cf_data = {'Interest': interest_payment, 'Principal': principal_payment}
cf_table = pd.DataFrame(data=cf_data, index=periods)
cf_table['Payment'] = cf_table['Interest'] + cf_table['Principal']
cf_table['Ending Balance'] = original_balance - \
                             cf_table['Principal'].cumsum()
cf_table['Beginning Balance'] = [original_balance] + \
                                list(cf_table['Ending Balance'])[:-1]
cf_table = cf_table[['Beginning Balance', 'Payment', 'Interest', 
                     'Principal', 'Ending Balance']]
cf_table.head(8)

কোডের প্রথম লাইনটি হাজার বিভাজক যোগ করে এবং মাত্র দুই দশমিক স্থানে সংখ্যা প্রদর্শন করে টেবিলটিকে আরও পঠনযোগ্য করতে প্রদর্শন বিন্যাস নিয়ম প্রয়োগ করে।

কোডের দ্বিতীয় অংশটি Colab-কে প্রতিটি লোনের সময়ের জন্য সুদের অর্থপ্রদান, মূল অর্থপ্রদান, শেষ ব্যালেন্স এবং মূল ব্যালেন্স অন্তর্ভুক্ত করার নির্দেশ দেয়। ব্যাকস্ল্যাশগুলি লাইন ব্রেক হিসাবে কাজ করে কারণ আমাদের এক লাইনে 79টির বেশি অক্ষর থাকতে পারে না।

আপনি যদি নিজের Colab নোটবুকে অনুসরণ করে থাকেন, তাহলে অভিনন্দন! আপনি এখন পাইথন ব্যবহার করে একটি সহজ নির্ধারিত পরিমাপ ঋণ পোর্টফোলিও প্রোফাইল কোড করেছেন৷

বেঞ্চমার্ক রেট এবং অন্যান্য ঋণ কাঠামোর সাথে আবদ্ধ পরিবর্তনশীল সুদের কুপন সহ লোনের মডেলিং সহ ফাইন্যান্সের জন্য পাইথনের সাথে আপনি আরও অনেক কিছু করতে পারেন। আশা করি এই লোন মডেলটি আপনাকে পাইথনে আর্থিক কোডিং কতটা সহজ হতে পারে তার স্বাদ দিয়েছে।


কর্পোরেট অর্থায়ন
  1. অ্যাকাউন্টিং
  2. ব্যবসা কৌশল
  3. ব্যবসা
  4. কাস্টমার সম্পর্কযুক্ত ব্যাবস্থাপত্র
  5. অর্থায়ন
  6. স্টক ব্যবস্থাপনা
  7. ব্যক্তিগত মূলধন
  8. বিনিয়োগ
  9. কর্পোরেট অর্থায়ন
  10. বাজেট
  11. সঞ্চয়
  12. বীমা
  13. ঋণ
  14. অবসর