The Period and Period Contract settings in the structure panel allow you to control how and when contracts are entered based on seasonal or calendar logic. This adds powerful flexibility for building strategies that respond to market cycles, seasonality, or contract-specific dynamics.
🔧 Period Types
You can choose from several built-in contract period frameworks:
- Month - Default mode using standard calendar months
- Quarter - Follows quarterly expiries (Q1, Q2, Q3, Q4)
- Crop - Agricultural calendar based on planting/harvest (NewCrop / OldCrop)
- Season - Groups months into seasons (Winter, Summer)
- Year - Selects a single contract per year
- Half-Year - Divides the year into HY1 and HY2
🧠 How It Works
- When you select a period, such as a season, the backtester will automatically calculate entry points for that period across the entire history.
- For example, if you select "Season" and target "Summer," the engine will create six trades per entry (April, May, June, July, August, and September) based on the structure defined in your leg.
- This enables you to simulate how a strategy would behave during specific cycles without manually filtering by month.
🎯 Period Contract Filter
The Period Contract dropdown allows you to narrow the backtest to specific time segments within the selected period type (e.g., Season, Quarter, Month).
By default, "All" is selected, which includes every contract within the chosen period type.
To filter by specific periods, you need to remove "All" first:
Click on "All" in the dropdown.
Then press Backspace or Delete on your keyboard.
After removing "All", you can select one or more specific periods from the dropdown.
| Examples | Effect |
|---|---|
| All (default) | Includes every contract in the period |
| Summer (under Season) | Trades only in summer |
| Q1 (under Quarter) | Trades only Q1 expiries each year |
| Jul (under Month) | Trades only in July each year |
| Q1, Q3 | Trades only in Q1 and Q3 each year |
| Jan, Jul, Oct | Trades only in January, July, and October each year |
📌 Example Use Case
Suppose you want to backtest a put spread that is only for summer:
- Set Period = Season
- Set Period Contract = Summer
- Define your option legs and DTE rules as usual
The engine will automatically generate entries in April, May, June, July, August, September every year using the same logic defined by your leg structure.
🔍 Why Use Periods?
- Capture seasonal trends (e.g., grain harvest cycles)
- Focus on strong months while skipping weak ones
- Test quarterly earnings or macro cycles
- Cleanly segment risk exposure across time
This gives you precise control over which seasonal windows or expiration cycles you want to backtest.
Comments
0 comments
Please sign in to leave a comment.