Algorand Bond Template

Introduction

Bonds are units of corporate debt issued by companies and securitized as tradeable assets. A bond is referred to as a fixed-income instrument since bonds traditionally paid a fixed interest rate (coupon) to debt holders. Variable or floating interest rates are also now quite common. Bond prices are inversely correlated with interest rates: when rates go up, bond prices fall and vice-versa. 

Bonds are commonly referred to as fixed income securities and are one of main asset classes that individual investors are usually familiar with, along with stocks and cash equivalents.
When companies or other entities need to raise money to finance new projects, maintain ongoing operations, or refinance existing debts, they may issue bonds directly to investors. The borrower (bond issuer) issues a bond that includes the terms of the loan, interest payments that will be made, and the time at which the loaned funds (bond principal) must be paid back (maturity date).

The initial price of most bonds is called a the issue price (usually a round value per bond). Nominal value or a face value of the bond is what will be paid back to the borrower once the bond matures. However on the market (when trading) the bond value may be different. The actual market price of a bond depends on a number of factors: the credit quality of the issuer, the length of time until expiration, and the coupon rate compared to the general interest rate environment at the time.
The interest payment (the coupon) is part of the return that bond holders earn for loaning their funds to the issuer. The interest rate that determines the payment is called the coupon rate. For example, a 5% coupon rate and bond with $1000 face value means that bond holders will receive 5% x $1000 = $50 every year for each bond.

Many corporate and government issue bonds. They are publicly traded. There are also bond issued by corporate that are only traded privately in a closed market. It is also common for bonds to be repurchased by the borrower if interest rates decline, or if the borrower’s credit has improved, and it can reissue new bonds at a lower cost.

Advantages and disadvantages of Bonds for a bond holder (lender) 
Advantages 
  • receive income through the interest payments;
  • hold the bond to the maturity and get all your principal back;
  • profit if you resell at a higher price;
  • safe investment.
Disadvantages
  • pay our lower returns than stocks;
  • companies can default on your bonds;
  • bond yield can fall.

App Template Specification

For simplicity, the all nominal and trading values are expressed in ALOG (investors will buy, sell and exchange bonds using ALGO).

When creating a bond the following information must be recorded:
  • issue_price — price at which bonds are sold by the issuer.
  • nominal_price — bond nominal price, it’s fixed.
  • maturity_date — date when a bond holder can redeem bonds to the issuer, it’s fixed.
  • coupon_value — interest paid annually to the bond holders, 
  • equals to coupon_rate x nominal_price.

Use Cases. We use functional notation to describe use cases we will implement.
  • issue(amount) — issue new bonds to the issuer account.
  • burn(amount) — issuer can burn unsold bonds.
  • buy(amount)  — investor will buy bond from the issuer account by paying 
  • amount×issue_price (in ALGO).
  • exchange(price, amount) — group of transactions including a buyer transaction paying amount×price of ALGO to the seller (signed by buyer), and seller transaction sending amount of bonds to the buyer (signed by seller). 
  • transfer(amount, recipient) — bond holder can transfer amount of bonds to someone else.
  • exit(amount)  — after maturity bond holder can send bonds back to the issuer and receive amount×nominal_price  back. Issuer must provide enough funds to the issuer account upon the maturity date. Otherwise a legal consequences can be triggered.
  • redeem_coupon()  — bond holder can get his interest (in ALGO).

Design requirements
  • The design should support millions of bond holders.
  • Bond maturity can span over many years.
  • Design should support base currency different than ALGO.

Implementation Overview

Requirements