> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tilt.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a thematic Tilt

> Create a nuclear energy Tilt with Tilt Agent, read its construction rules, and refine them.

This guide builds a nuclear energy Tilt in two messages to Tilt Agent. The Tilt selects and weights companies by their exposure to a theme, so it uses `theme()` in both the filter and the score.

## 1. Ask for the Tilt

<Frame>
  <img src="https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-transcript-create.png?fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=cdfda345e5b65ee1da7aa4a6ab3c9cae" alt="A message asking Tilt to create a new Tilt for nuclear energy, and Tilt Agent's reply that it created Nuclear Energy Exposure with 25 companies" width="1720" height="526" data-path="images/index-construction/nuclear-transcript-create.png" />
</Frame>

Name the theme, the number of holdings, the weighting, the cap, and the rebalance schedule. Start with **Create a new Tilt** to get a saved Tilt you can edit, backtest, and rebalance. A request to build or research an idea returns a preview basket instead.

Tilt Agent wrote these rules:

| Rule                 | Value                             |
| -------------------- | --------------------------------- |
| Universe             | US All Equities                   |
| Filter expression    | `theme("Nuclear Energy") >= 0.55` |
| Score expression     | `theme("Nuclear Energy")`         |
| Maximum constituents | `25`                              |
| Weight expression    | Blank, so Tilt sizes by score     |
| Index cadence        | Quarterly                         |
| Concentration        | Single-position maximum 10%       |

The filter keeps companies with meaningful nuclear exposure. The score ranks them by that exposure, and the Tilt holds the top 25. With the weight expression blank, each position is proportional to its exposure, and no position can exceed 10%.

## 2. Refine the rules

The first version held some companies worth a few hundred million dollars. Ask for a size floor:

<Frame>
  <img src="https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-transcript-refine.png?fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=e848aaa02dbe9fd59b2e3948bf2cb19a" alt="A message saying some holdings are tiny and asking to include only companies worth at least $1 billion, and Tilt Agent's reply that it updated the Tilt" width="1720" height="906" data-path="images/index-construction/nuclear-transcript-refine.png" />
</Frame>

Tilt Agent adds a market-cap test to the filter and leaves the other rules as they were:

<Frame>
  <img src="https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=19f0e03ed9f79233fc934e3dda16fe25" alt="Selection rules with filter expression (theme(&#x22;Nuclear Energy&#x22;) >= 0.55) & (market_cap >= 1000), score expression theme(&#x22;Nuclear Energy&#x22;), and maximum constituents 25" data-og-width="1738" width="1738" data-og-height="612" height="612" data-path="images/index-construction/nuclear-selection-rules.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?w=280&fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=0a406eedeb7972068bf31511506155f4 280w, https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?w=560&fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=325d2ce3439a54ce3c779086fbb8e509 560w, https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?w=840&fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=88fc8f48d01d1da8c12d090b5c5e00e6 840w, https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?w=1100&fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=0f5ed49cd168024e2d1eac5d3cc41324 1100w, https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?w=1650&fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=b338716151d072b7978b389e6623bc8d 1650w, https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-selection-rules.png?w=2500&fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=5d34b458631dc2b0f8c645669ec12a0e 2500w" />
</Frame>

`market_cap >= 1000` means at least \$1 billion, since `market_cap` is in millions of US dollars.

Tilt records the change in the Tilt's **History**, alongside the original rules.

To make the same change by hand, open **Selection rules**, edit the filter expression, and select **Apply changes**. The **Theme importance** control in that section sets how much each theme counts in the score. Tilt drafts the new score expression for you to review before it applies.

## 3. Review the result

The **Methodology** tab shows a backtest against a benchmark and every rule by section:

<Frame>
  <img src="https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-methodology-tab.png?fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=33bb925c7ccdf7c757ff39df21939752" alt="The Methodology tab for Nuclear Energy Exposure, with a one-year backtest against SPY, risk statistics, and the methodology sections" width="2880" height="1800" data-path="images/index-construction/nuclear-methodology-tab.png" />
</Frame>

The **Portfolio** tab lists each constituent's exposure, sector, market cap, and weight:

<Frame>
  <img src="https://mintcdn.com/tilt/CizYNoSLp0Sv3sdD/images/index-construction/nuclear-portfolio-tab.png?fit=max&auto=format&n=CizYNoSLp0Sv3sdD&q=85&s=da5ad8fbd557f4b2a8d62546839e70f7" alt="The Portfolio tab listing 25 holdings, including Duke Energy, Energy Fuels, PG&E, and Cameco, with score, market cap, sector, and weight" width="2880" height="1800" data-path="images/index-construction/nuclear-portfolio-tab.png" />
</Frame>

Each quarter, Tilt reruns the rules on fresh data. Companies that gain nuclear exposure can enter the Tilt, and companies that lose it drop out.

## Variations

| Goal                                   | Change                                                                    |
| -------------------------------------- | ------------------------------------------------------------------------- |
| Start from an existing index's members | Add `index("S&P 500") > 0` to the filter.                                 |
| Require consistent profits             | Add `min(operating_income, "3y") > 0` to the filter.                      |
| Blend two themes                       | Score with `theme("Nuclear Energy") + 0.5 * theme("Grid Modernization")`. |
| Exclude a theme                        | Add `theme("Fossil Fuels") < 0.55` to the filter.                         |

[How theme() scores companies](/index-construction/expressions#how-theme-scores-companies) explains where exposure scores come from.
