import pandas as pd
import numpy as np

# Sample data: past performance simulation
data = {
    'Date': pd.date_range(start='1/1/2023', periods=100, freq='D'),
    'Close': np.random.uniform(low=1.1000, high=1.1500, size=100)
}
df = pd.DataFrame(data)

# Gann Angle Calculation
def calculate_gann_angle(close_prices, angle_degree=45):
    angle_radian = np.radians(angle_degree)
    return close_prices * np.tan(angle_radian)

# Simple Gann Strategy Simulation
df['GannAngle'] = calculate_gann_angle(df['Close'])
df['Signal'] = np.where(df['Close'] > df['Close'].shift(1) + df['GannAngle'], 'Buy', 
                        np.where(df['Close'] < df['Close'].shift(1) - df['GannAngle'], 'Sell', 'Hold'))

# Output the signals
print(df[['Date', 'Close', 'GannAngle', 'Signal']])