Model Library

The Model Library includes sample strategies schemas for a variety of treasury, CD, corporate, and municipal bond portfolios.

Treasuries

1-12 Month Treasury Ladder

We can very easily define a 1-12 Month Treasury Ladder using a ladder policy. Specifically, we set the ladder policy's period length to 1 month and number of periods to 12. We also set the weight tolerance to 0.025, meaning that each rung of the ladder will have a minimum weight of 5.8% and a maximum weight of 10.8%.

[
  {
    "type": "universe",
    "filter": {
	    "type": {"equal_to": "treasury"},
      "treasury_subtype": {"in_list": ["bill", "note", "bond"]}
    }
  },
  {
    "type": "ladder_policy",
    "period_length": 1, // months
    "num_periods": 12,
    "weight_tolerance": 0.025
  }
]

1-5 Year Ladder

To create a 1-5 Year Treasury Ladder, we simply change the period length to 12 months and the number of periods to 5 months. The resulting portfolio will have 5 maturity rungs, each 1 year wide and with a weight between 17.5% and 22.5%.

[
  {
    "type": "universe",
    "filter": {
	    "type": {"equal_to": "treasury"},
      "treasury_subtype": {"in_list": ["bill", "note", "bond"]}
    }
  },
  {
    "type": "ladder_policy",
    "period_length": 12, // months
    "num_periods": 5,
    "weight_tolerance": 0.025
  }
]

CDs

1-5 Year CD Ladder

[
  {
    "type": "universe",
    "filter": {
	    "type": {"equal_to": "cd"},
    }
  },
  {
    "type": "ladder_policy",
    "period_length": 5, // months
    "num_periods": 12,
    "weight_tolerance": 0.025
  }
]

Corporates

1-5 Year IG Corporate Ladder

Let's create a Corporate Bond Ladder. In addition to the ladder policy, we'll also apply a number of standard constraints to ensure diversification across bonds, issuers, sectors, and S&P ratings, as well as filter the universe for liquid, non-exotic bonds from major issuers. Here is a full list of the constraints:

  • Coupon type of fixed (i.e. no floating rate bonds).
  • Minimum S&P rating of BBB-.
  • Minimum issue size of $100M.
  • Minimum liquidity score of 4/5.
  • Average S&P rating of A-.
  • Min weight per ISIN of 2.5%, and max weight per ISIN of 10%.
  • Max weight per issuer of 10%.
  • Max weight per sector of 20%.
  • Max weight per S&P rating of 20%.
[
  {
    "type": "universe",
    "filter": {
	    "type": {"equal_to": "corporate"},
      "sp_rating": {"greater_than_or_equal_to": "BBB-"},
      "issue_size": {"greater_than": 100000000},
      "liquidity_institutional_aggregate": {"greater_than_or_equal_to": 4},
      "country_issue": {"equal_to": "US"},
      "coupon_type": {"equal_to": "fixed"},
    }
  },
  {
    "type": "average_value",
    "field": "sp_rating",
    "min_average_value": "A-", 
    "target_average_value": "A-", 
    "max_average_value": "A-"
  },
  {
    "type": "diversification",
    "field": "cusip",
    "min_weight_per_unique_value": 0.025,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "issuer",
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "sector",
    "max_weight_per_unique_value": 0.2,
  },
  {
    "type": "diversification",
    "field": "sp_rating",
    "max_weight_per_unique_value": 0.2,
  },
  {
    "type": "ladder_policy",
    "period_length": 12,
    "num_periods": 5,
    "weight_tolerance": 0.025
  }
]

1-5 Year IG Corporate Ladder with Target Rating Weights

Let's say we want to replicate LQD's weight distribution by S&P rating. To do that, we can modify the strategy schema to include allocation constraints that specify the weight of each S&P rating bucket. In the example below, we require a weight of 5% to 15% in BBB-, 15% to 25% in BBB, 15% to 25% in BBB+, 15% to 25% in A-, and 15% to 15% above A-.

[
  {
    "type": "universe",
    "filter": {
	    "type": {"equal_to": "corporate"},
      "sp_rating": {"greater_than_or_equal_to": "BBB-"},
      "issue_size": {"greater_than": 100000000},
      "liquidity_institutional_aggregate": {"greater_than_or_equal_to": 4},
      "country_issue": {"equal_to": "US"},
      "coupon_type": {"equal_to": "fixed"},
    }
  },
  {
    "type": "average_value",
    "field": "sp_rating",
    "min_average_value": "A-", 
    "target_average_value": "A-", 
    "max_average_value": "A-"
  },
  {
    "type": "diversification",
    "field": "cusip",
    "min_weight_per_unique_value": 0.025,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "issuer",
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "sector",
    "max_weight_per_unique_value": 0.2,
  },
  // RATING TARGETS START
  {
    "type": "allocation",
    "filter": {"sp_rating": {"equal_to": "BBB-"}},
    "min_weight": 0.05,
    "max_weight": 0.15,
    "target_weight": 0.1,
  },
  {
    "type": "allocation",
    "filter": {"sp_rating": {"equal_to": "BBB"}},
    "min_weight": 0.15,
    "max_weight": 0.25,
    "target_weight": 0.2,
  },
  {
    "type": "allocation",
    "filter": {"sp_rating": {"equal_to": "BBB+"}},
    "min_weight": 0.15,
    "max_weight": 0.25,
    "target_weight": 0.2,
  },
  {
    "type": "allocation",
    "filter": {"sp_rating": {"equal_to": "A-"}},
    "min_weight": 0.15,
    "max_weight": 0.25,
    "target_weight": 0.2,
  },
  {
    "type": "allocation",
    "filter": {"sp_rating": {"greater_than": "A-"}},
    "min_weight": 0.15,
    "max_weight": 0.25,
    "target_weight": 0.2,
  },
  // RATING TARGETS END
  {
    "type": "ladder_policy",
    "period_length": 12,
    "num_periods": 5,
    "weight_tolerance": 0.025
  }
]

Municipals

1-5 Year National Municipal Ladder

Here is an example of a Municipal Bond Ladder with the following constraints:

  • Offer price greater than or equal to $100. This ensures that we only purchase bonds trading at a premium, for tax reasons.
  • Coupon type of fixed. This includes floating rate bonds and other securities with exotic coupons.
  • S&P rating of at least A-.
  • Must be exempt from both federal and state taxes.
  • Average S&P rating of at least AA-.
  • Min weight per CUSIP of 2.5% and max weight per CUSIP of 10%.
  • Max weight per issuer of 10%.
  • Max weight per state of 20%.

Because this is a national strategy, we do not restrict the state of issuance. Note that, despite there being no restriction on the municipal state, the optimizer will automatically calculate and maximize the tax-equivalent yield of each available bond. Because of this, the optimizer will typically exhibit a preference toward home state bonds, even if there is no explicit requirement on bonds being from the home state.

[
  {
    "type": "buy_universe",
    "filter": {
        "order_price": {"greater_than_or_equal_to": 100.0}
    }
  },
  {
    "type": "universe",
    "filter": {
        "coupon_type": {"equal_to": "fixed"},
        "type": {"equal_to": "municipal"},
        "sp_rating": {"greater_than_or_equal_to": "A-"},
        "municipal_taxable_federal": {"equal_to": False},
        "is_state_tax_applicable": {"equal_to": False},
    },
  },
  {
    "type": "average_value",
    "field": "sp_rating",
    "min_average_value": "AA-",
    "target_average_value": "AA-",
    "max_average_value": "AAA",
  },
  {
    "type": "diversification",
    "field": "cusip",
    "min_weight_per_unique_value": 0.025,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "issuer",
    "min_weight_per_unique_value": 0.0,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "municipal_state",
    "min_weight_per_unique_value": 0.0,
    "max_weight_per_unique_value": 0.2,
  },
  {
    "type": "ladder_policy",
    "period_length": 12,
    "num_periods": 5,
    "weight_tolerance": 0.025,
  }
]

1-5 Year NY Only Municipal Ladder

To create a state-specific ladder, we simply remove the diversification constraint by state and add a new constraint requiring that all bonds must be from New York State.

[
  {
    "type": "buy_universe",
    "filter": {
        "order_price": {"greater_than_or_equal_to": 100.0}
    }
  },
  {
    "type": "universe",
    "filter": {
        "coupon_type": {"equal_to": "fixed"},
        "type": {"equal_to": "municipal"},
        "sp_rating": {"greater_than_or_equal_to": "A-"},
        "municipal_taxable_federal": {"equal_to": False},
        "is_state_tax_applicable": {"equal_to": False},
        "municipal_state": {"equal_to": "NY"},
    },
  },
  {
    "type": "average_value",
    "field": "sp_rating",
    "min_average_value": "AA-",
    "target_average_value": "AA-",
    "max_average_value": "AAA",
  },
  {
    "type": "diversification",
    "field": "cusip",
    "min_weight_per_unique_value": 0.025,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "issuer",
    "min_weight_per_unique_value": 0.0,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "ladder_policy",
    "period_length": 12,
    "num_periods": 5,
    "weight_tolerance": 0.025,
  }
]

1-5 Year NY Preference Municipal Ladder

It is also possible to create a state-preference portfolio. For instance, we can require that at least 40% of the portfolio's market value consist of New York State bonds, while allowing the remaining 60% to come from any state. To do that, we remove the state diversification constraint and New York only universe constraint, and we instead add an allocation constraint requiring that the New York weight is at least 40%.

[
  {
    "type": "buy_universe",
    "filter": {
        "order_price": {"greater_than_or_equal_to": 100.0}
    }
  },
  {
    "type": "universe",
    "filter": {
        "coupon_type": {"equal_to": "fixed"},
        "type": {"equal_to": "municipal"},
        "sp_rating": {"greater_than_or_equal_to": "A-"},
        "municipal_taxable_federal": {"equal_to": False},
        "is_state_tax_applicable": {"equal_to": False},
    },
  },
  {
    "type": "average_value",
    "field": "sp_rating",
    "min_average_value": "AA-",
    "target_average_value": "AA-",
    "max_average_value": "AAA",
  },
  {
    "type": "diversification",
    "field": "cusip",
    "min_weight_per_unique_value": 0.025,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "diversification",
    "field": "issuer",
    "min_weight_per_unique_value": 0.0,
    "max_weight_per_unique_value": 0.1,
  },
  {
    "type": "ladder_policy",
    "period_length": 12,
    "num_periods": 5,
    "weight_tolerance": 0.025,
  },
  {
      "type": "allocation",
      "filter": {"municipal_state": {"equal_to": "NY"}},
      "min_weight": 0.4,
      "max_weight": 1.0,
      "target_weight": 0.5,
  }
]