Welcome To This Finance Blog. You Will Probably Like It If You Enjoy Reading General Money Topics.

Sunday, June 09, 2019

Interpreting Results of A Bond Issue By The Central Bank of Kenya

I write a follow up article for interpreting the details of a bond issue. Central Bank of Kenya publishes the results usually a day after the bond auction. No long waits like other GoK services 😁. Investors look forward to first, whether CBK accepted their bid and second, what interest rate the bond will earn during its lifetime. Those two details are the essentials of a bond results.
Table A contains majority of the information. 

  • Due date it is the date when the bond or treasury bill(bonds and treasury are different but has same features of fixed investments) matures. Lets take the 364 days treasury bill, the auction was on 05/08/2018; one year later on 05/08/2019,  the investor shall receive back the full amount they put in the investment. The shortest maturity date is usually 91 days. 

  • Amounts offered- just as described here. it is the amount central banks aims to raise from investors

  • Bids received - total amount of money investors are selling to CBK

  • Performance rate

  • Bid-to-Cover ratio

When the ratio is more than 1, it imply  CBK received more bids than they need. So CBK had to turn down some bids because they already hit their target. 

When the ratio is equal to 1, it imply CBK received enough bids and accepted all and hit the target.

When the ration is less than 1, it imply they received less bids than they would have wanted. 
  • Interest Rate
          Two types of interest rates are released after the auction. The weighted average interest rate of accepted bids is calculated as follows:
      Lets say they were 2 bids, n=2
      Bid 1: 2,000,000 at 7.5%
      Bid 2: 4,000,000 at 8%
    Assume both bids were accepted
    What is the weighted average interest rate of accepted bids?
       2,000,000 * 7.5%    = 150,000
        4,000,000* 8%        = 320,000

                                         =470,000 divide (2,000,000+4,000,000)= 0.0783 . Approx. 7.83%

 The Market Weighted Average Interest Rate uses the same formula EXCEPT that the interest rates used prevailing rates for all the bonds issues in the market with their respective outstanding amounts.

Which interest rate is the bond investor going to earn? Neither of the two interest rates mentioned above. The bond investor will earn an interest rate determined by the Central Bank Auction Committee using the bids submitted.Usually, the lowest interest interest rate submitted among the bids received is the cut off for that auction. Just like any other market, the seller(in this case CBK), has an incentive to minimize costs(the interest it pays to investors); hence the decision to choose the lowest interest rate proposed.

So the competitive bids(submit bids in auction) are interest rate makers because they proposed rates are used to arrive at the final rate for that auction. While non competitive bids(they do not submit bids in the auction, but state the amount they want to buy at whatever interest rate that will be determined) are interest rate takers because they will get the interest rate decided by others.

  • Price
Source: Nairobi Stock Exchange Website
       - All government bonds and t-bills are quoted as shs. 100 as starting price. Although the quote price is 100, please note the minimum you can buy is  a bond worth shs. 50,000 except for M-AKIBA bonds.  The price vs Notional value of what you buy are two different figures.
      - The intuition or takeaway is that when the interest rate increase, the bond price reduce.  So for any bond price above 100, it means that current market rate are lower than the fixed rate that is attached to the bond you bought. The bond you own has more value because you are getting paid more than you would be getting at the current market rate. Bonds with a price below 100, means the current market rate is higher compared to what you are getting paid for the bond you own. So it has less value in the latter case.
    - clean and dirty price are found in the secondary market(Nairobi Stock Exchange) and not the primary market(Central Bank Kenya Auction Market) so I defer the explanation for another article. 

Wednesday, May 23, 2018

Too much Empiricism in financial Markets

 Think of anytime you have set out to research on a certain stock, currency. Usually, the first step we take is to plot and explore the historical prices. Often we are stuck in doing all sort of analysis on the past prices because quantitative data, ‘big data’, ’numbers’ is the magical source of credibility in financial analysis. This believe that knowledge can only be acquired through past experiences is called Empiricism. Empiricism is effective but has some limitations especially when we over depend on it to answer questions related to human behavior.

 ‘Numbers don’t lie’ is a big lie in some cases. Let’s start with creative accounting. It takes advantage of shareholders faith in numbers, so whatever numbers the accountants feed the investor public, they will probably believe it. Although such accounting would best be described as outright fraud rather than empiricism, it demonstrates the problem of underdetermination and bias that exist in empiricism.  Given the same dataset, two analysts will come up with stories that align with their interest using the same data. If truth is universally objective, then how can same data points produce different conclusions? Then probably one of the analyst or both are using numbers to lie.

Because empirical finance inherently assumes the future will be similar to the past, it suffers the problem of induction. The classical example of a farmer and the chicken says a chicken that receives grains each morning will assume that is the norm until Christmas day when the farmer will slaughter the chicken instead of feed it. Value at risk, volatility models, AR and ARMAs etcetera all this common finance tools seek to fit the past and project to the future but they do not warn us when ‘Christmas day’ is approaching.

So what is the way forward? Empiricism is great and probably the most effective philosophical approach to carrying out research however it has to be used in conjunction with other ways of discovering knowledge. The money culture by Michael Lewis describes some of the best deal makers in the ‘80s that relied on alternative sources of knowledge rather than historical hard data. Personally, I am unashamedly empiricist just like most finance researchers, traders however I believe combining quant data, common sense (intuition) and perspectives from smart people can yield good results.

Saturday, November 12, 2016

Interpret A Bond Issue By The Central Bank Of Kenya

Most people would agree bonds analysis and valuation are more complex than stocks perhaps due to the mathematics involved and the variety of bonds issued in the markets. Even before tackling the analysis and valuation part, grasping the details of a bond issue is not a walk in the park for a complete newbie. It is for this reason I have decided to write an article that aims to explain the basic features of a bond using the example of a fixed coupon bond. The Advertisement by the Central Bank of Kenya attached below guides the flow of the article. 

Image not clear but here is the prospectus
Sovereign Bond
Let us start with the header of the Ad. It is from the Central Bank of Kenya who is the banker for the government of Kenya. They advise government on matters money, interest rates etc. When the issuer of a bond is a central bank, the bond is called a sovereign bond. The type of issuer is the first way to classify a bond. Lets imagine the issue was from a company traded at NSE, we would refer it to a corporate bond. Why is the Ad on the local daily and not in the foreign newspaper like The Economist?  This kind of bond is targeted at the Local Internal Bond Market. In other cases, such an Ad would be placed in the international media; that kind targets the International Bond Market or Offshore Bond Market. A good example is the infamous EUROBOND. Therefore the second way to classify a bond is by the sector of the bond market it targets. 

Bond Issue Number 

Next is the title in red. The first detail is a fifteen-year and twenty-year bond. This is called the term of maturity. For the fifteen-year bond, you get back the total amount you give to CBK only after 15 years excluding the interest rates that are paid periodically. The same case applies to the 20-year bond; you get the initial money you invest after twenty years. This assertion assumes you will not sell your bond before the maturity date. The initial amount has a formal name, the principal value or the face value. The second detail is RE-OPEN. When CBK says re-open issue, it means this bond had been issued again in the past. So it is like selling it for the second time. Why would they resell instead of just offering another new issue? One of the reasons is to reduce the costs, legal and advisory fees that would be incurred offering a new issue. So if the CBK is raising a small amount they prefer to resell instead of offering a new one. In this case, the bonds were issued for the first time in 2007 and 2008. The quote FXD 3/2007/15 and FXD 1/2008/20. The FXD stands for a fixed coupon bond. In other cases it is FRN stands for floating rate bond. 3 show the number of times the bond has been re-opened. 2007 is the year of issue. 15 is the number of years when the bond matures.  Therefore, the issue number is just a way of tracking all the bonds the CBK issues.

Funds To Be Raised  

Detail number 2 gives the total amount the central bank plans to raise from selling this bond. In most cases the bids from investors, usually financial institutions, exceed this amount.Lets say the potential buys are 35billion, then, we say the bond has been over subscribed. If it is less than 30billion, we say it was under subscribed. Detail number 5 is a matter of logistics. When you actually send the money and the mode of transaction for the successful bids. RTGS is used to make payments for huge bids. It doesn’t make sense to carry 20million cash to CBK premises. The portfolio account is your CDS account number opened at the CBK. The virtual account is held at CBK and where the payments are credited. Remember CBK do not open accounts for individual customers like the commercial banks do. That explains why they use the Virtual accounts.  

Bonds Re-Openning /Tap Issue

Detail number 6 on pricing. Since the bonds issue is a re-open, there is already an established price at which they were issued during the first time. The bond will be issued at a discount if the current bond price is below the price when it was first offered in 2007. It is said sell at premium if the price will be higher than the price it was sold during the first offer. At par, if the current price is equal to the price during the first offer. Generally, if you are chasing a capital gain you want to buy at a discounted price since the bond price has a potential to rise. If you are chasing the yield/interest rate, other factors must be taken account for. Analysis and valuation models are key at this point

Interest Rate Payments 

Detail number 7 on minimum amount. It is the par value of a bond. It is the denominational amount of one bond. One bond is worth ksh. 50,000. We do not have a 10,000 bob bond or any other amount less that 50,000 bob.
Detail number 9 and 10 on coupon rates. Coupon rate is the interest paid to the investor periodically. In this case the coupon rate is paid yearly. For the 15-year bond, the interest paid after each year is 12.5% and 20 year is 13.75%. Since this is a fixed coupon bond, the interest is fixed and there it does not vary with interest rates prevailing in the market. It is a guaranteed 12.5%.  You realise the 20-year bond pays a higher interest rate; 1.25 basis points higher. Holding a 20-year bond exposes the investor to more risk compared to a 15-year bond. The extra 5years you hold that bond comes with certain risks. Risk analysis is key at this point. 

The interest payment dates are done two times a year. So the 12.5% is paid in two intervals per year. The 15-year bond had been issued in 2007 if you add 15 years, you realise the last interest payment and redemption of the principal amount will be paid in 2022; specific date, 07/11/2022. The same case applies for 20-year bond issued in 2008, if you add 20years the redemption date is 2028;specific date 05/06/2028.
Do you have to wait till 2028? No you can sell your bond in the secondary market at NSE. In case you lack a buyer you sell the bond back to CBK at a rediscount or informally at cheaper price, in this case 3% lower the current yield. The bidding of bonds is done at the primary market; trading at the exchange is the secondary market.

Other Details 

Other Details include the maximum value you can bid. You can bid a maximum of 20 million per CDS account per investor. Placing agents are the entities authorized to place bids usually on behalf of the average or local investors.


In future, we explain the subscription results as shown in the advertisement below.
Feel free to point out a key detail I have left via the comments section

Friday, August 19, 2016

Download Free Nairobi Securities Exchange (NSE) Historical Data

Accessing historical data of listed companies in the Nairobi Securities Exchange is an expensive affair.Other than buying the data here, I have not come across any other way to access the data without pay. It is for this reason that I devised a way to parse the provided past data from the financial times webpage. 
The idea is to open the webpage of lets say, Safaricom Ltd, download the page and extract the data contained in that page using the pythonlibrary, Beautiful Soup running on Matlab .The cleaned data is presented as a table variable or, written in a format supported in Excel, like CSV.


You have an installed a Matlab engine and python library, Beautiful Soup. Read on how to install Beautiful Soup. In this method, Beautiful Soup is executed from the Matlab interface and not in the python console. Matlab R2014b and Beautiful Soup 4.4.5 are used in this demo. You have working knowledge of Matlab, HTML and Python.

Url Format 

First specify the url to the webpage of the specific company data. The url is separated into two parts.  The first part specifies the path to the general historical data.  The second part identifies the specific security symbol.  Let say we want to download Safaricom data, the first part is ''. The second part is the symbol 'SCOM:NAI'.  The full url is Using the input interface, you can specify what symbol you wish to download directly from the Matlab interface

Search For the Table 

After downloading the webpage, we convert the page to a Beautiful Soup object.In the object we find  where the data table is specifically in the HTML tags. The webpage has only one table. The table tag consists of  table rows () and data()  that  format the data into a clear way. Each row in the table is extracted and the ResultSet converted to a Matlab cell array Before extracting the data, prepare the data containers that will store the data after parsing from the table.Each of the column: date, open, high, low , close and volume will be stored in a cell. Get Data From Each Row   Having extracted the rows and prepared the data containers next is to search for the data stored in the tags within the rows.  A for-loop that excludes the first row of the table, first row consists of the data headers, literates to get data from each row. Using the get_text() from beautiful soups, the data is parsed from each tag  and stored in the respective data container.   At this stage, the parsed data is assumed to be in the matlab workspace ready for the cleaning process.  Since the data is taken from the tags as strings, the OHLC data is converted to a numeric vector. Data Cleaning The date and volume data comes in a form that is messed up. Lets start with volume, the figures merges the whole number with a two decimal places number that has an ‘m’ or ‘k’ at the end denoting million or thousand respectively. For instance, if today, 19,517,400 shares were traded, then the figure obtained is in this format:   ‘19,517,40019.52m'. After cleaning the code removes the ‘19.52m’ part and remains with the 19,517,400 part. The same case applies to the dates. The raw format extracted is in this form: 'Wednesday, July 20, 2016Wed, Jul 20, 2016'. The code below obtains the cleaned data as 20-Jul-2016. The datetime variable is effective to use during any sort of analysis. The last stage is to combine the data vectors to a table. Alternatively the data can be written to a csv file. First convert the date column to dates that are Excel understands. Then create a matrix of all the data columns. Finally write the data using the csvwrite() function. The csv is saved in the current directory.  This script is limited to download data that is available on the webpage only. Usually, it is the last 30 days  of data for each symbol. However if the user wants all the available historical data, the process would be as follows: 1.  Open the financial times web page manually on your browser. 2. Search for the companies’ historical data in the market data tab  3. On the historical data page, scrolls down the data table till you get a show more . 4. Keep clicking the show more tab till all the data you want is loaded on the web page.  5. Right click the webpage and save it in your device. 

Parsed Locally-Saved HTML File 

The script can parse data from the locally saved file in a similar way. The only change you make is  specifying the file path and replacing the url to the online page with the file path. For instance: html_file =urlread('file:///Users/wachiranguni/Desktop/python/Safaricom Ltd, SCOM_ NAI historical prices -'); Later the script will be packaged into an excel addin that will make it more useful to the wider audience.  Note this script can be used to download all the NSE listed companies data and any other historical price data set on the financial times website  

Update: 2/07/2018

This method is no longer functional because no longers displays historical data on the web pages without subscribing. However, is an alternative site you can download free NSE data.