Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -550,50 +550,56 @@ def generate_risk_matrix():
|
|
| 550 |
|
| 551 |
# π₯ Battle Strategies (Preset vs Preset)
|
| 552 |
|
| 553 |
-
def battle_strategies(
|
|
|
|
|
|
|
|
|
|
| 554 |
if style1 == "None" or style2 == "None":
|
| 555 |
return pd.DataFrame([{"β οΈ Error": "Please select two valid strategies."}]), go.Figure()
|
| 556 |
|
| 557 |
if style1 == style2:
|
| 558 |
return pd.DataFrame([{"β οΈ Error": "Please select two different strategies."}]), go.Figure()
|
| 559 |
|
| 560 |
-
|
| 561 |
-
|
|
|
|
|
|
|
| 562 |
|
| 563 |
try:
|
| 564 |
-
config1 = strategy_presets[style1]
|
| 565 |
-
config2 = strategy_presets[style2]
|
| 566 |
|
| 567 |
df1, s1 = simulate_tp_strategy_full(
|
| 568 |
config1["starting_balance"], config1["trades_min"], config1["trades_max"], config1["weeks"],
|
| 569 |
config1["tp1_prob"], config1["tp2_prob"], config1["tp1_r"], config1["tp2_r"],
|
| 570 |
-
config1["base_risk_pct"], config1["profit_target"],
|
| 571 |
)
|
| 572 |
|
| 573 |
df2, s2 = simulate_tp_strategy_full(
|
| 574 |
config2["starting_balance"], config2["trades_min"], config2["trades_max"], config2["weeks"],
|
| 575 |
config2["tp1_prob"], config2["tp2_prob"], config2["tp1_r"], config2["tp2_r"],
|
| 576 |
-
config2["base_risk_pct"], config2["profit_target"],
|
| 577 |
)
|
| 578 |
|
| 579 |
s1["Strategy"], s2["Strategy"] = style1, style2
|
| 580 |
-
|
| 581 |
|
| 582 |
for col in ["Final Balance", "Sharpe Ratio", "EdgeCast Score"]:
|
| 583 |
-
best_val =
|
| 584 |
-
|
| 585 |
|
| 586 |
fig = go.Figure()
|
| 587 |
fig.add_trace(go.Scatter(x=df1["Week"], y=df1["End Balance"], name=style1))
|
| 588 |
fig.add_trace(go.Scatter(x=df2["Week"], y=df2["End Balance"], name=style2))
|
| 589 |
fig.update_layout(title=f"π₯ {style1} vs {style2}", xaxis_title="Week", yaxis_title="Balance")
|
| 590 |
|
| 591 |
-
return
|
| 592 |
|
| 593 |
except Exception as e:
|
| 594 |
return pd.DataFrame([{"Error": str(e)}]), go.Figure()
|
| 595 |
|
| 596 |
|
|
|
|
| 597 |
# π App UI Launch
|
| 598 |
|
| 599 |
app = gr.TabbedInterface(
|
|
@@ -660,24 +666,26 @@ app = gr.TabbedInterface(
|
|
| 660 |
|
| 661 |
# π₯ Battle Mode β Preset
|
| 662 |
|
| 663 |
-
|
| 664 |
fn=battle_strategies,
|
| 665 |
inputs=[
|
| 666 |
-
gr.Dropdown(choices=["None"] + list(strategy_presets.keys()), value="None", label="Strategy
|
| 667 |
-
gr.
|
| 668 |
-
gr.
|
| 669 |
-
gr.
|
| 670 |
-
gr.
|
| 671 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 672 |
],
|
| 673 |
outputs=["dataframe", gr.Plot()],
|
| 674 |
title="π₯ Battle Mode"
|
| 675 |
),
|
| 676 |
|
| 677 |
|
| 678 |
-
|
| 679 |
-
|
| 680 |
-
|
| 681 |
# π§ͺ Manual Battle Mode
|
| 682 |
|
| 683 |
# π§ͺ Manual Battle Mode (Slider Version)
|
|
|
|
| 550 |
|
| 551 |
# π₯ Battle Strategies (Preset vs Preset)
|
| 552 |
|
| 553 |
+
def battle_strategies(
|
| 554 |
+
style1, enable_fatigue1, fatigue1, enable_trump1, trump1,
|
| 555 |
+
style2, enable_fatigue2, fatigue2, enable_trump2, trump2
|
| 556 |
+
):
|
| 557 |
if style1 == "None" or style2 == "None":
|
| 558 |
return pd.DataFrame([{"β οΈ Error": "Please select two valid strategies."}]), go.Figure()
|
| 559 |
|
| 560 |
if style1 == style2:
|
| 561 |
return pd.DataFrame([{"β οΈ Error": "Please select two different strategies."}]), go.Figure()
|
| 562 |
|
| 563 |
+
fatigue_a = fatigue1 if enable_fatigue1 else 0.0
|
| 564 |
+
trump_a = trump1 if enable_trump1 else 0.0
|
| 565 |
+
fatigue_b = fatigue2 if enable_fatigue2 else 0.0
|
| 566 |
+
trump_b = trump2 if enable_trump2 else 0.0
|
| 567 |
|
| 568 |
try:
|
| 569 |
+
config1 = strategy_presets[style1]
|
| 570 |
+
config2 = strategy_presets[style2]
|
| 571 |
|
| 572 |
df1, s1 = simulate_tp_strategy_full(
|
| 573 |
config1["starting_balance"], config1["trades_min"], config1["trades_max"], config1["weeks"],
|
| 574 |
config1["tp1_prob"], config1["tp2_prob"], config1["tp1_r"], config1["tp2_r"],
|
| 575 |
+
config1["base_risk_pct"], config1["profit_target"], fatigue_a, trump_a
|
| 576 |
)
|
| 577 |
|
| 578 |
df2, s2 = simulate_tp_strategy_full(
|
| 579 |
config2["starting_balance"], config2["trades_min"], config2["trades_max"], config2["weeks"],
|
| 580 |
config2["tp1_prob"], config2["tp2_prob"], config2["tp1_r"], config2["tp2_r"],
|
| 581 |
+
config2["base_risk_pct"], config2["profit_target"], fatigue_b, trump_b
|
| 582 |
)
|
| 583 |
|
| 584 |
s1["Strategy"], s2["Strategy"] = style1, style2
|
| 585 |
+
df_compare = pd.DataFrame([s1, s2])[["Strategy", "Final Balance", "Sharpe Ratio", "EdgeCast Score", "Max Drawdown %"]]
|
| 586 |
|
| 587 |
for col in ["Final Balance", "Sharpe Ratio", "EdgeCast Score"]:
|
| 588 |
+
best_val = df_compare[col].astype(float).max()
|
| 589 |
+
df_compare[col] = [f"{val} π" if float(val) == best_val else val for val in df_compare[col]]
|
| 590 |
|
| 591 |
fig = go.Figure()
|
| 592 |
fig.add_trace(go.Scatter(x=df1["Week"], y=df1["End Balance"], name=style1))
|
| 593 |
fig.add_trace(go.Scatter(x=df2["Week"], y=df2["End Balance"], name=style2))
|
| 594 |
fig.update_layout(title=f"π₯ {style1} vs {style2}", xaxis_title="Week", yaxis_title="Balance")
|
| 595 |
|
| 596 |
+
return df_compare, fig
|
| 597 |
|
| 598 |
except Exception as e:
|
| 599 |
return pd.DataFrame([{"Error": str(e)}]), go.Figure()
|
| 600 |
|
| 601 |
|
| 602 |
+
|
| 603 |
# π App UI Launch
|
| 604 |
|
| 605 |
app = gr.TabbedInterface(
|
|
|
|
| 666 |
|
| 667 |
# π₯ Battle Mode β Preset
|
| 668 |
|
| 669 |
+
gr.Interface(
|
| 670 |
fn=battle_strategies,
|
| 671 |
inputs=[
|
| 672 |
+
gr.Dropdown(choices=["None"] + list(strategy_presets.keys()), value="None", label="Strategy A"),
|
| 673 |
+
gr.Checkbox(label="Enable Fatigue for A"),
|
| 674 |
+
gr.Slider(0, 1, 0.0, step=0.1, label="Fatigue Level A"),
|
| 675 |
+
gr.Checkbox(label="Enable Trump Volatility for A"),
|
| 676 |
+
gr.Slider(0, 1, 0.0, step=0.1, label="Trump Volatility A"),
|
| 677 |
+
|
| 678 |
+
gr.Dropdown(choices=["None"] + list(strategy_presets.keys()), value="None", label="Strategy B"),
|
| 679 |
+
gr.Checkbox(label="Enable Fatigue for B"),
|
| 680 |
+
gr.Slider(0, 1, 0.0, step=0.1, label="Fatigue Level B"),
|
| 681 |
+
gr.Checkbox(label="Enable Trump Volatility for B"),
|
| 682 |
+
gr.Slider(0, 1, 0.0, step=0.1, label="Trump Volatility B"),
|
| 683 |
],
|
| 684 |
outputs=["dataframe", gr.Plot()],
|
| 685 |
title="π₯ Battle Mode"
|
| 686 |
),
|
| 687 |
|
| 688 |
|
|
|
|
|
|
|
|
|
|
| 689 |
# π§ͺ Manual Battle Mode
|
| 690 |
|
| 691 |
# π§ͺ Manual Battle Mode (Slider Version)
|