Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -22,6 +22,15 @@ def identify_signals(data):
|
|
22 |
data['Sell Signal'] = (data['Close'] < data['Low Short'].shift(1))
|
23 |
return data
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
# Calculate returns and metrics for backtesting
|
26 |
def backtest_signals(data):
|
27 |
data['Position'] = 0
|
@@ -52,7 +61,7 @@ def plot_data(data):
|
|
52 |
|
53 |
# Main application function
|
54 |
def main():
|
55 |
-
st.title("Enhanced Turtle Trading Strategy with Backtesting")
|
56 |
|
57 |
# Sidebar for user inputs
|
58 |
with st.sidebar:
|
@@ -67,9 +76,12 @@ def main():
|
|
67 |
if not data.empty:
|
68 |
data = calculate_indicators(data, window_short, window_long)
|
69 |
data = identify_signals(data)
|
|
|
70 |
data, market_return, strategy_return = backtest_signals(data)
|
71 |
fig = plot_data(data)
|
72 |
st.plotly_chart(fig, use_container_width=True)
|
|
|
|
|
73 |
st.subheader("Backtesting Results")
|
74 |
st.write(f"Market Return: {market_return * 100:.2f}%")
|
75 |
st.write(f"Strategy Return: {strategy_return * 100:.2f}%")
|
|
|
22 |
data['Sell Signal'] = (data['Close'] < data['Low Short'].shift(1))
|
23 |
return data
|
24 |
|
25 |
+
# Collect and display signals
|
26 |
+
def collect_signals(data):
|
27 |
+
signals = pd.DataFrame()
|
28 |
+
signals['Date'] = data[data['Buy Signal'] | data['Sell Signal']].index
|
29 |
+
signals['Price'] = data[data['Buy Signal'] | data['Sell Signal']]['Close']
|
30 |
+
signals['Signal'] = 'Buy'
|
31 |
+
signals.loc[data['Sell Signal'], 'Signal'] = 'Sell'
|
32 |
+
return signals
|
33 |
+
|
34 |
# Calculate returns and metrics for backtesting
|
35 |
def backtest_signals(data):
|
36 |
data['Position'] = 0
|
|
|
61 |
|
62 |
# Main application function
|
63 |
def main():
|
64 |
+
st.title("Enhanced Turtle Trading Strategy with Backtesting and Signal Table")
|
65 |
|
66 |
# Sidebar for user inputs
|
67 |
with st.sidebar:
|
|
|
76 |
if not data.empty:
|
77 |
data = calculate_indicators(data, window_short, window_long)
|
78 |
data = identify_signals(data)
|
79 |
+
signals = collect_signals(data)
|
80 |
data, market_return, strategy_return = backtest_signals(data)
|
81 |
fig = plot_data(data)
|
82 |
st.plotly_chart(fig, use_container_width=True)
|
83 |
+
st.subheader("Trading Signals")
|
84 |
+
st.dataframe(signals)
|
85 |
st.subheader("Backtesting Results")
|
86 |
st.write(f"Market Return: {market_return * 100:.2f}%")
|
87 |
st.write(f"Strategy Return: {strategy_return * 100:.2f}%")
|