Seasonal: Read Event Trajectory And Volatility Around Day Zero
A beginner-safe Seasonal lesson for reading event trajectory charts as timing context: anchor day zero, separate pre-event from post-event movement, and reject paths that are too noisy to carry forward.
Educational only
The examples teach workflow and risk framing. They do not provide trade recommendations, personalized advice, leverage guidance, or guaranteed outcomes.
Chapter 01
Anchor the event at day zero
Trader question
What is day zero, and which days are before or after the event?
Event trajectory starts by aligning every historical occurrence to the same D0 marker. Without that anchor, the learner cannot tell whether the chart is showing anticipation, event-day movement, or post-event follow-through.
Desk checklist
- Find the D0 reference line.
- Confirm the selected event and metal lane.
- Separate D- days from D+ days before interpreting the line.
Interactive proof
Event-relative performance chart, day-zero reference line, and event inspector
Use the trajectory lab to toggle the full window and point to the day-zero anchor before reading the path.
Day zero is the anchor; trajectory, volatility band, occurrences, and worst return decide whether an event path is early, late, mixed, or too noisy.
Interactive desk lab
Seasonal Event Trajectory Lab
A practical Seasonal Analysis event trajectory lab for anchoring day zero, toggling pre-event/event-day/post-event windows, reading volatility bands and occurrences, then labeling the path as early, late, mixed, or too noisy.
A practical Seasonal Analysis event trajectory lab for anchoring day zero, toggling pre-event/event-day/post-event windows, reading volatility bands and occurrences, then labeling the path as early, late, mixed, or too noisy.
Day zero timeline
Previous event paths align around D0, fan into an average band, and end with a volatility warning.
Three prior-year paths enter the frame one at a time.
The paths align on the same day-zero event marker.
An average path and uncertainty band appear over the paths.
The final frame asks whether the move happened before, during, or after D0.
Remotion code
SeasonalDayZeroTrajectoryVideo
The snippet is stored with the lesson so a future Remotion project can render the chapter video.
Show component snippet
import {AbsoluteFill, Easing, Sequence, interpolate, useCurrentFrame} from "remotion";
const paths = [
{label: "Year A", color: "#2454a6", values: [-0.2, 0.1, 0.4, 0.7, 0.9, 1.1, 1.0, 0.8]},
{label: "Year B", color: "#047857", values: [-0.4, -0.1, 0.3, 0.5, 0.4, 0.2, 0.1, -0.1]},
{label: "Year C", color: "#b42318", values: [0.2, 0.4, 0.6, 0.4, -0.2, -0.8, -0.6, -0.3]},
];
const pointsFor = (values: number[]) =>
values.map((value, index) => String(100 + index * 122) + "," + String(260 - value * 92)).join(" ");
export const SeasonalDayZeroTrajectoryVideo = () => {
const frame = useCurrentFrame();
const reveal = interpolate(frame, [20, 98], [0, 1], {
extrapolateLeft: "clamp",
extrapolateRight: "clamp",
easing: Easing.bezier(0.16, 1, 0.3, 1),
});
const band = interpolate(frame, [90, 128], [0, 1], {
extrapolateLeft: "clamp",
extrapolateRight: "clamp",
easing: Easing.bezier(0.16, 1, 0.3, 1),
});
return (
<AbsoluteFill style={{background: "#fff8e8", color: "#071126", padding: 72}}>
<h1 style={{fontSize: 52, lineHeight: 1}}>Align every event to day zero.</h1>
<svg viewBox="0 0 980 420" style={{marginTop: 42, width: "100%", height: 420, background: "#fffdf7", border: "2px solid #ad862d"}}>
<line x1="466" y1="44" x2="466" y2="360" stroke="#d9971f" strokeWidth="5" />
<text x="438" y="36" fill="#805407" fontSize="25" fontWeight="900">D0</text>
<line x1="70" y1="260" x2="928" y2="260" stroke="#d9c69a" strokeWidth="2" />
<path d="M100 192 C220 168 344 150 466 158 C588 166 710 192 954 210 L954 300 C710 280 588 250 466 238 C344 226 220 238 100 252 Z" fill="#d9971f" opacity={band * 0.2} />
{paths.map((path, index) => (
<polyline key={path.label} points={pointsFor(path.values)} fill="none" stroke={path.color} strokeWidth="7" strokeLinecap="round" strokeLinejoin="round" opacity={interpolate(reveal, [index * 0.18, index * 0.18 + 0.25], [0, 1], {extrapolateLeft: "clamp", extrapolateRight: "clamp"})} />
))}
</svg>
<Sequence from={132} layout="none">
<p style={{fontSize: 28, color: "#805407"}}>Question: did the path move before D0, at D0, or after D0?</p>
</Sequence>
</AbsoluteFill>
);
};Sources used for this tutorial
Next step
Open the tool with the checklist beside you.
Move from the lesson into the matching Bullion Brains tool, keep the checklist visible, and treat the output as evidence until the caveats are clear.