import pandas as pd
import yfinance as yf
# Load historical data
data = yf.download("AAPL", start="2022-01-01", end="2023-01-01")
data['SMA_9'] = data['Close'].rolling(window=9).mean()
data['SMA_21'] = data['Close'].rolling(window=21).mean()
# Create crossover/crossunder signals
data['Buy'] = (data['SMA_9'] > data['SMA_21']) & (data['SMA_9'].shift(1) <= data['SMA_21'].shift(1))
data['Sell'] = (data['SMA_9'] < data['SMA_21']) & (data['SMA_9'].shift(1) >= data['SMA_21'].shift(1))
# Show signals
print(data[['Close', 'SMA_9', 'SMA_21', 'Buy', 'Sell']].dropna().tail(10))