Find out how to build a systematic On-the-Run (OTR) Government Bond trading strategy using the SigTech platform.
Watch a step by step demonstration as SigTech Product Manager, Navdeep Sahote, demonstrates how to build a systematic US Treasury strategy.
In this video I will demonstrate how to build a systematic US treasury strategy in the SigTech platform.
Before we get started I would like to give you a quick introduction of SigTech.
SigTech is a quant trading platform with clean data and a trustworthy backtest environment that takes you all the way from research to execution.
The platform has preloaded market data as well as alternative datasets cutting out time consuming ETL and other data validation tasks.
Furthermore, when conducting a backtest, The SigTech backtesting engine accurately models the entire trade life cycle at instrument level. It will also take into consideration factors such as trading costs.
To illustrate some examples of how to retrieve any data object in the platform I will show you how to call cash bonds instruments
Within the platform we support three fundamental objects that act as the foundation for overall strategies. First we have tradable instruments, which are tradable on the financial markets. Then we have Tradable strategies, which are a set of rules that decide when to buy or sell tradable instruments over time. Finally, we have non-tradable data objects, which are used for research or signalling purposes, such as macroeconomic data.
Here we are calling two objects which represent the same treasury. The first one by the object name which you can find in our market data browser and the second by it’s ISIN.
Now I can call some of it’s static and historical data. For instance the method ‘bond_info’ gives a quick overview of the main specifications and relevant information about this treasury.
With the ‘cashflows’ method I can see the full list of cash flows from bond issue date to maturity date.
To explore historical data, the instance history_fields and extra_fields will return the list of available time series. For this bond, I can see that the time series data includes the DV01, yield to maturity and Modified Duration. Here, I’m plotting historical yield to maturity using the history method to access the time series.
Now that we have seen how to explore cash instruments and got familiar with some methods I will move on and explain how we build a systematic strategy using our building blocks.
Using the RollingBondStrategy building block will allow me to systematically roll benchmark US treasuries maintaining my exposure over time in a particular tenor point.
The rolling future strategy building block is just one of many out-of-the-box strategies available. This strategy can then be treated as a tradeable instrument that can be used within other strategies via object-oriented modelling. Therefore, complexity can be increased iteratively, layer by layer, on our models.
Now I just need to input the arguments to define my strategy, specifying the country and currency as well as the starting date. Then I input the tenor and run_type to specify what bonds I would like to get exposure to. In this case I have defined two strategies, one will roll the on-the-run 10 year treasuries while the second one will roll the first off the run 5Y treasuries.
With this simple line of code I have a fully tradable strategy that will buy benchmark US 10 and 5 year treasuries.
Now we are ready to inspect the backtesting of this strategy and compare the performance of the two. For a first look I’m plotting the historical performance which represents the mark to market values from the start date.
We can explore further other attributes like roll schedule, pnl breakdown and the actions that take place during the life of our strategy.
Our backtest engine allows you to investigate at each point in time the orders and positions the strategy was holding as shown in this table here. We can see each day when the orders are sent and once the positions are taken, with its associated weights and dollar value.
The strategy building blocks are tradable instruments, this means a strategy or building block can be bought and sold.
For example, a very simple way of seeing this is by using the basketstrategy. As the name indicates we can build a basket of any asset type and define how that basket should trade its constituents.
I’m creating a dictionary to define the tradable universe. It includes the strategy I just built above as well as a Japanese Bond Future and US Treasury Future rolling strategies. These are built with other of our main building blocks called RollingFuture following very similar logic to the rolling bond strategy we have seen just now.
Now I can fill in the necessary information and attributes of my basket. The starting date, currency, weights and rebalancing frequency. In this case I’m long on the first instrument, short on the second instrument and long on the last one. My basket rebalancing is defined at ‘end of the month’.
I have included a plot that shows a nice comparison in the return series between our 10y otr strategy, and our basket strategy.
I can check and compare the performance of my basket
In this case I’m using the analytics report and monthly heatmaps to compare returns. The table returns key metrics such as the annualised excess return, volatility, max drawdown and so on.
Thank you for watching. Get in touch to learn more, we’d love to hear from you.