{ "cells": [ { "cell_type": "code", "execution_count": 6, "id": "9a5b00b8-2d18-4540-80ff-cf985f653dce", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100 30 0.5 3 5 False\n" ] } ], "source": [ "class Bond:\n", " def __init__(\n", " self,\n", " par,\n", " term,\n", " couponInt,\n", " paymentFreq,\n", " intRate,\n", " amortizing=False):\n", " self.par=par\n", " self.term=term\n", " self.couponInt=couponInt\n", " self.paymentFreq=paymentFreq\n", " self.intRate=intRate\n", " self.amortizing=amortizing\n", " \n", " def calculate(self):\n", " if self.amortizing==True:\n", " self.par*self.couponInt\n", " \n", " print(self.par,self.term,self.couponInt,self.paymentFreq,self.intRate,self.amortizing)\n", "\n", "Ex1=Bond(100, 30,0.5, 3,5, False)\n", "Ex1.calculate()" ] }, { "cell_type": "code", "execution_count": 1, "id": "7d04967a-d8b9-46f1-8bd4-60b38370a956", "metadata": {}, "outputs": [], "source": [ "#Price = ( Coupon × 1 − ( 1 + r ) − n r ) + Par Value ( 1 + r ) n" ] }, { "cell_type": "code", "execution_count": 1, "id": "365a82d5-7799-4ef0-9735-8f6eb0da9e67", "metadata": {}, "outputs": [], "source": [ "#Bond Premium Amortized= P x R – N x Y\n", "#P = Bond issue price, R = Market Rate of interest, N = Nominal or face value and, Y = coupon rate of interest/ Yield." ] }, { "cell_type": "code", "execution_count": 10, "id": "f0143155-7445-417a-ac26-4a7bab893295", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1375.7049230300258" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Bond:\n", " def __init__(\n", " self,\n", " par,\n", " term,\n", " couponInt,\n", " paymentFreq,\n", " intRate,\n", " amortizing=False):\n", " self.par=par\n", " self.term=term\n", " self.couponInt=couponInt\n", " self.paymentFreq=paymentFreq\n", " self.intRate=intRate\n", " self.amortizing=amortizing\n", " \n", " def calculate(self):\n", " if self.amortizing==False:\n", " price=(((self.par*self.couponInt)*(1-(1+self.intRate)**-self.paymentFreq)/self.intRate)+(self.par/(1+self.intRate)**self.term))\n", " return(price)\n", " else:\n", " 1==1\n", " \n", "\n", "Ex1 = Bond(1000, 4, .25, 4, .125, False)\n", "Ex1.calculate()\n", "\n" ] }, { "cell_type": "raw", "id": "ca78ef5f-b510-4046-9e25-b25774acc50f", "metadata": {}, "source": [ "non-amortizing\n", "month balance principal interest\n", "0 100 0 5\n", "1 100 0 5\n", "2\n", "3\n", "...\n", "119 100 0 5\n", "120 0 100 5\n", "\n", "\n", "Amortizing bond:\n", "r = 6%\n", "month balance principal interest\n", "0 100 0. 0\n", "1 99.9 .1 0.5\n", "2 99.799 .101 0.499\n", "...\n", "119 1 1 0.051\n", "120 0 1 0.05\n", "\n", "condition: \n", "r = a given number (yearly interest rate) \n", "interest = previuos balance * r / 12\n", "principal + intersst = constant for the life of the bond\n", "balance at the final month = 0\n", "\n", "create a function:\n", "f( first principal) -> last balance\n", "\n", "def lastBalance( fp):\n", " ....\n", " ....\n", " ....\n", " \n", "lastBalance(0.1) \n", "2\n", "\n", "lastBalance(1) \n", "-20\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "b1adb876-0acb-439f-a32c-5b20d87c0e02", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.7" } }, "nbformat": 4, "nbformat_minor": 5 }