Cara Membangun Model Arus Kas Python Dasar untuk Pinjaman

Diterbitkan: 2022-03-11

Banyak pakar keuangan mahir menggunakan Excel untuk membangun model keuangan. Namun, karena kesulitan dengan peer review, kontrol versi, dan ketidakmampuan untuk membentuk fungsi rekursif, Excel mungkin bukan pilihan terbaik untuk model yang lebih canggih. Terlepas dari kekurangan tersebut, banyak profesional keuangan masih menggunakan Excel karena mereka kurang percaya diri dengan bahasa pemrograman seperti Python.

Python adalah salah satu bahasa pemrograman yang paling mudah dipelajari. Karena dirancang dengan mempertimbangkan keterbacaan dan kemudahan penggunaan, kodenya ringkas dan mendekati bahasa Inggris biasa. Dalam artikel ini, saya menunjukkan betapa mudahnya membangun model arus kas Python untuk pembayaran pinjaman dengan menggunakan fungsi, paket, dan struktur data paling dasar.

Untuk mengikutinya, Anda perlu menggunakan Colaboratory (singkatnya "Colab"), aplikasi notebook berbasis web gratis dari Google yang memungkinkan Anda menulis dan mengeksekusi kode. Colab adalah juru bahasa Python yang menggunakan sel yang dapat berisi kode, Penurunan harga (untuk teks yang mudah ditata), gambar, atau data lainnya. Colab terus menyimpan nilai kode Anda saat Anda menulis, membuatnya cepat dan mudah untuk mendeteksi kesalahan atau bug saat muncul. (Jika Anda belum ingin terjun, ikuti contoh notebook Colab ini.)

Pertama, Pastikan Anda Memiliki Alat yang Anda Butuhkan

Kami akan membangun model untuk pinjaman yang diamortisasi yang memiliki pembayaran berkala terjadwal yang diterapkan baik untuk pokok pinjaman maupun bunganya. Ini memiliki angsuran tetap untuk setiap periode dan bagian bunga dari pembayaran menurun dari waktu ke waktu. Anda memerlukan tiga pustaka Python, kumpulan rutinitas perangkat lunak yang mencegah pengembang menulis kode dari awal, untuk model ini—NumPy, Pandas, dan Matplotlib:

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

Di Colab, paket Pandas dan Matplotlib diinstal secara default, jadi Anda hanya perlu menginstal library numpy-financial, yang dapat Anda lakukan langsung dari Colab. Untuk menginstal numpy-financial, dan mengimpor ketiga pustaka yang Anda perlukan nanti, buka buku catatan Colab baru dari menu File, dan tempel kode berikut ke sel kode pertama:

 # 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

Sebelum kita melanjutkan ke langkah berikutnya, izinkan saya menjelaskan kode sebelumnya dan mengapa ditulis seperti itu. Meskipun nama numpy-financial berisi tanda hubung, Anda harus menggunakan garis bawah pada nama saat Anda menginstal dan mengimpornya. (Untuk informasi dan penjelasan lebih lanjut tentang menginstal numpy_financial, lihat dokumentasinya.) Anda mungkin juga melihat singkatan. Alias ​​​​yang ditentukan sebelumnya biasanya digunakan untuk paket—NumPy ditulis sebagai np, Pandas sebagai pd. Alias ​​​​ini digunakan untuk menyelamatkan Anda dari penulisan nama lengkap paket setiap kali Anda ingin menggunakannya dan juga membantu membuat kode Anda lebih mudah dibaca.

Sekarang, Gunakan NumPy untuk Mengatur Karakteristik Pinjaman

NumPy adalah salah satu perpustakaan Python paling populer yang menambahkan dukungan untuk array multidimensi yang besar, bersama dengan koleksi signifikan fungsi matematika tingkat tinggi untuk beroperasi pada array tersebut. Pustaka numpy-financial adalah paket yang relatif baru yang terdiri dari kumpulan fungsi keuangan yang umum digunakan yang telah dipisahkan dari pustaka NumPy utama dan diberi tempat tersendiri.

Cara paling sederhana untuk menghitung bunga terjadwal dan vektor pokok selama masa pinjaman diamortisasi kami adalah dengan menggunakan fungsi PMT, IPMT, dan PPMT dari paket numpy-financial. Fungsi PMT menyediakan cicilan pinjaman tetap untuk membayar pinjaman secara penuh selama sejumlah periode tertentu. Fungsi IPMT dan PPMT masing-masing memberikan pembayaran bunga dan pokok. Tergantung pada input ke periode, fungsi IPMT dan PPMT dapat mengembalikan nilai untuk satu periode atau beberapa periode.

Untuk contoh ini, kami akan memberikan rentang dengan masa pinjaman penuh sebagai input periode. Dengan demikian, kita akan mendapatkan susunan vektor dengan bunga pembayaran pokok untuk setiap periode masa pinjaman:

 # 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)

Anda tidak akan "melihat" apa pun terjadi di file Colab setelah memasukkan kode—ini adalah informasi pinjaman dasar yang diperlukan untuk melakukan sisa latihan ini. (Daftar semua fungsi numpy-financial yang saya gunakan, definisinya, dan inputnya, dapat ditemukan di dokumentasi resmi.)

Selanjutnya, Gunakan Matplotlib untuk Membuat Bagan

Meskipun baik untuk memiliki vektor sebagai output, mungkin yang terbaik adalah memvisualisasikan output dalam bentuk bagan, khususnya sebagai plot tumpukan. Untuk mengatur bagan, kita akan menggunakan plt , alias untuk kumpulan fungsi pyplot dari pustaka matplotlib. Dalam contoh kami, kami akan menambahkan legenda di sudut kiri atas dan menambahkan judul ke sumbu x dan sumbu y. Karena kami tidak menginginkan batas internal, kami mengatur margin ke 0.

Tambahkan sel kode lain, dan masukkan kode berikut:

 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) 

Seperti yang bisa kita lihat, bunga menurun seiring waktu. Saldo pinjaman juga berkurang karena pembayaran pokok di setiap periode. Untuk mempertahankan cicilan tetap, porsi pokok harus ditingkatkan.

Akhirnya, Gunakan Panda untuk Membuat Tabel

Paket Pandas adalah paket Python yang paling umum digunakan untuk memanipulasi tabel numerik dan deret waktu. Ini menyediakan struktur data yang cepat, fleksibel, dan ekspresif yang dirancang untuk membuat bekerja dengan data relasional atau berlabel menjadi mudah dan intuitif. Kami akan membuat tabel yang mencakup pembayaran pokok dan bunga, serta saldo awal dan akhir pinjaman untuk setiap periode:

 _# 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)

Baris kode pertama menerapkan aturan pemformatan tampilan untuk membuat tabel lebih mudah dibaca dengan menambahkan pemisah ribuan dan menampilkan angka hanya dua tempat desimal.

Potongan kode kedua menginstruksikan Colab untuk menyertakan pembayaran bunga, pembayaran pokok, saldo akhir, dan saldo awal untuk setiap periode pinjaman. Garis miring terbalik bertindak sebagai jeda baris karena kita tidak dapat memiliki lebih dari 79 karakter dalam satu baris.

Jumlah yang muncul di grafik telah dipersingkat menjadi dua tempat desimal.

Jika Anda telah mengikuti buku catatan Colab Anda sendiri, selamat! Anda sekarang telah mengkodekan profil portofolio pinjaman amortisasi terjadwal sederhana menggunakan Python.

Ada banyak lagi yang dapat Anda lakukan dengan Python untuk keuangan, termasuk pemodelan untuk pinjaman dengan kupon bunga variabel yang terkait dengan suku bunga acuan dan struktur pinjaman lainnya. Semoga model pinjaman ini memberi Anda gambaran betapa sederhananya pengkodean keuangan dengan Python.