![Logo](/TuWeile/SSB-Determinator/raw/main/resources/bond.png)
SSB calculation and determination of next month's SSB through SGS bond references, spline interpolation, and step-up adjustments
Explore the docs »
Documentation
·
Report Bug
·
Request Feature
Table of Contents
This repository serves to provide an estimation to determine for the next month's average return per year (%) through obtaining the simple moving average of the daily SGS benchmark yields (1Y, 2Y, 5Y, 10Y) from the current month. Inspired by the MAS calculations and technical specifications and further independent research on the determination of the valuation of Singapore Savings Bonds and another similar report on the estimation of effective SSB rates from SGS benchmark yields, it is hoped that the optimization of the step-up adjustments and the basis application into Python / C++ libraries will be able to contribute further into developing future predictions and estimations into the upcoming SSB bond yield model.
Once I have taken the time to complete up the writings, documentation and its specific details can be found here on Medium.
In order to get the project running locally within your computer, follow these prerequisites below:
- List of Python packages to install
numpy pandas configparser
-
Determine the month of the SSB bond you want to estimate. If you want to estimate for the December SSB bond, you will need to obtain the data for the month of October SGS reference yields. This is because it takes a month to bid for the SSB (Nov 1 to Nov 25) after collecting the data from October, and it is only issued on the first day of the next month after the bidding period is over (Dec 1, hence the term "December SSB bond").
-
Download the data from the SGS Prices and Yields - Benchmark Issues here, with the specifications that:
Frequency: Daily Average Buying Rates of Govt Securities Dealers: [1-Year T-Bill Yield, 2-Year Bond Yield, 5-Year Bond Yield, 10-Year Bond Yield]
You may refer to the above gif illustration to download the data as shown above.
-
Clone the repo and place the data you have downloaded in the /data directory. You may find sample data as shown within the directory specified. Once completed, configure the
config.ini
file such that the data variable is pointing to the file added. -
Start up your IDE (PyCharm), and configure the working directory within the configuration to point towards the
/path/to/SSB-Determiantor
directory. Once completed, you can runmain.py
to execute the script.
When using this repository, it is generally advisable to execute the repository on the last working day of the calendar month for the best results as the SGS Prices and Yields - Benchmark Issues is updated daily. I will eventually consider adding in new features to predict and forecast acceptable daily bond yields ahead of time, but at the moment this would require research as multiple parameters will need to be considered for such an evaluation.
Furthermore, when running this repository, please keep into consideration of the CME FedWatch Tool as the SGS Bond Yields closely follows the U.S. Fed interest rates and can serve as an important guidance in forecasting future bond yields.
As for the adjustments within the technical specifications, please do allow for the adjustments of the coupons to differ by up to ±0.06%. While this is not within the acceptable range of ±0.03% from the technical specifications, nevertheless I do intend to optimize the calculations further to meet with the rounding of the computation of the step-up coupons.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the BSD 3-Clause "New" License. See LICENSE
for more information.
Tu Weile - LinkedIn - tuweile.sg@gmail.com
Project Link: https://github.com/TuWeile/SSB-Determinator
- Monetary Authority of Singapore. (2019). Singapore Savings Bonds: Technical Specifications.
- Lim, K. G. (2021). Bermudan option in Singapore Savings Bonds. Review of Derivatives Research, 24(1), 31-54.
- Melvin. (2022). Estimating effective SSB rates from SGS Benchmark Yields. Financial Literacy Singapore.