Skip to content

Quick Start

Get up and running with trend_classifier in 5 minutes.

Basic Usage

1. Import and Load Data

import yfinance as yf
from trend_classifier import Segmenter

# Download Apple stock data
df = yf.download("AAPL", start="2020-01-01", end="2023-01-01", progress=False)
print(f"Loaded {len(df)} data points")
# Create segmenter with DataFrame input
seg = Segmenter(df=df, column="Close", n=40)

# Calculate segments
seg.calculate_segments()

print(f"Found {len(seg.segments)} segments")

3. Visualize Results

# Plot all segments with trend lines
seg.plot_segments()

4. Analyze Segments

# Export to DataFrame
df_segments = seg.segments.to_dataframe()
print(df_segments[["start", "stop", "slope", "std"]])

Output:

   start  stop      slope       std
0      0    45   0.234521  1.234567
1     46   120  -0.156789  2.345678
2    121   200   0.089012  1.567890
...

Using Arrays Instead of DataFrames

import numpy as np

# Your data as arrays
x = np.arange(500)
y = np.cumsum(np.random.randn(500))  # Random walk

# Create segmenter
seg = Segmenter(x=x, y=y, n=30)
seg.calculate_segments()
seg.plot_segments()

Choosing a Detector

trend_classifier supports multiple detection algorithms:

seg = Segmenter(df=df, detector="sliding_window", detector_params={
    "n": 40,           # Window size
    "alpha": 2.0,      # Slope threshold
    "beta": 2.0,       # Offset threshold
})
seg = Segmenter(df=df, detector="bottom_up", detector_params={
    "max_segments": 10,  # Target number of segments
})
# Requires: pip install trend-classifier[pelt]
seg = Segmenter(df=df, detector="pelt", detector_params={
    "penalty": 5,   # Higher = fewer segments
    "model": "l2",  # Cost model
})

What's Next?