How to Use Logic and Trees in Rose
Another feature of Rose is the ability to always check the underlying reasoning and data for any chart or map you have access to by way of a concept we call Logic.
In this tutorial we will demonstrate how Trees and Logic work by building a yield curve on Rose.
The yield curve is an indicator for the health of the economy. Yet, despite the importance of the yield curve, it can be difficult to find online.
Every Project Starts with a Raw Dataset
If you are making a yield curve, you will need data for two-year US bond rates and ten-year US bond rates.
The rosecodes for the two-year and ten-year bonds rates are
DGS10, sourced from FRED.
DGS10 are not good names.
Just from a glance, you cannot tell what they represent and to find them again, you would have to remember the exact spelling.
So, let's rename them!
On Rose, you can use Logic to rename any rosecode.
In a code module <>, type
new.rosecode = old.rosecode
old.rosecode can be more than just a single dataset; it can be a dataset with functions applied to it or even other logic objects (which in turn can have functions applied to them).
The new object then keeps track of all the underlying data and transformations that just got renamed and stores them in the Logic Tree for that rosecode.
When you run the module renaming a rosecode, the
old.rosecode disappears, signifying that you have successfully pushed logic.
new.rosecodes will point to the
old.rosecodes, so that if
DGS10 are updated, the new versions will also be updated.
usa.2y.bonds.rate.test = DGS2 usa.10y.bonds.rate.test = DGS10
Try copy and pasting the above logic pushes into a code module <> on Rose.
So, Where do Trees Fit In?
On Rose, click on the Explore Tree button for
Once you do that, there should be two side-by-side nodes. That is the tree. It is a visualization of where the logic object you just created came from.
Trees move right-to-left, which means that the rightmost node in a tree is the original dataset everything is built on. Each box represents a different step in the creation of the rosecode.
In this example,
DGS2 is the raw data and
usa.2y.bonds.rate.test is the renamed version.
Making the Curve
The formula for creating a yield curve is ten-year US bond rates - two-year US bond rates.
So we are going to perform that operation and store the result as a new logic object
Try running the following snippet in a code module <> on Rose.
yield.curve.test = usa.10y.bonds.rate.test:sub(usa.2y.bonds.rate.test)
Benefits of Logic
- Help users trace how a timeseries/map is built
- Keep a rosecode updated as long as the underlying data is updated
- Make it easier to pull data by simplifying names
- Stitch data together from different providers