Anatomy of a strategy
A strategy is where investment logic and instruments, or even other strategies, come together to produce exposures to the financial markets.
A strategy can output orders to be sent for execution and is usually the final output of work done on the SigTech platform.
Strategies work by scheduling decisions on a timeline. A decision is simply a Python method that can execute any arbitrary logic and be scheduled at any arbitrary time.
A set of example decisions:
- At 23:59:00 EST on the 3rd of January 2010, populate some variables to be used in the strategy with initial values.
- At 07:30:00 EST every trading day, calculate yesterday's signal and submit today's orders.
- At 12:00:00 EST every trading day, observe market volatility and apply a hedge if it's above a certain threshold.
- At 16:55:00 EST every trading day, submit orders to close all open positions.
Strategies are also used to bring structure to a portfolio, and its exposures. Strategies can be used to logically separate different types of exposures, instruments or algorithms in a portfolio.
With clearer structure, a number of things become significantly easier to do:
- Understanding and troubleshooting where, and why, exposures are generated.
- P&L attribution.
- Asset allocation.
- Collaboration in multi-person teams.
An example of the use of strategies to structure and organise a portfolio is a multi-factor equity strategy laid out in the following way:
In this approach, a final weight of 0.23% might be given to Stock A. By analysing Stock A's weight in the various constituent sub-strategies it would be trivial to determine why the weight is 0.23%.
The alternative to this approach is to allocate all stocks in one big strategy. But this approach would neither be able to capture the nuance of overlapping factor scores nor the separation between the long allocation and short allocation. Final weights of individual stocks would be nearly impossible to break down and reverse engineer, making it hard to understand if the strategy is performing the way it should be.
Another important use of strategies is to delegate tasks not relevant to the main strategy.
In the previous example of the equity multi-factor market neutral strategy, we could choose to handle dividend reinvestments, stock split adjustments, and more. This would clutter the strategy at the top level and make it difficult to understand and attribute exposures to different stocks.
Instead, we delegate this task to the
ReinvestmentStrategyin a clever way: first, we create a
ReinvestmentStrategythat invests in Stock A and takes care of any corporate actions in that stock. Then, in our factor strategies, instead of investing in Stock A itself, we make the strategy invest in the
ReinvestmentStrategywe just created.
In this way, the corporate actions are handled away from the main strategy and a 0.23% weight, for example, to the
ReinvestmentStrategyfor Stock A means 0.23% regardless of whether the stock has just had a dividend announced.
Our building blocks are strategies built by SigTech and made available to you out-of-the-box, saving time and making the strategy construction process more robust and repeatable.
You can use these building blocks as they are, modify them or extend them:
ReinvestmentStrategy: goes long on a stock and manages any incoming corporate actions. The default and preferred way to invest in individual stocks.
SignalStrategy: takes a signal input, usually a pandas dataframe, and rebalances the portfolio according to that signal on a specified frequency.
RollingFutureStrategy: trades futures contracts and rolls them according to a provided rolling rule. A robust and reliable way to produce a both continuous and tradable timeseries for a future.
BasketStrategy: trades a basket of constituents and rebalances them back to given target weights at a given frequency. A simple way to construct fixed-weight exposures.