zman35 commited on
Commit
a204cfd
Β·
verified Β·
1 Parent(s): b055962

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -21
app.py CHANGED
@@ -550,50 +550,56 @@ def generate_risk_matrix():
550
 
551
  # πŸ₯Š Battle Strategies (Preset vs Preset)
552
 
553
- def battle_strategies(style1, style2, enable_fatigue, fatigue_level, enable_trump, trump_vol_level):
 
 
 
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
- fatigue = fatigue_level if enable_fatigue else 0.0
561
- trump_vol = trump_vol_level if enable_trump else 0.0
 
 
562
 
563
  try:
564
- config1 = strategy_presets[style1].copy()
565
- config2 = strategy_presets[style2].copy()
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"], fatigue, trump_vol
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"], fatigue, trump_vol
577
  )
578
 
579
  s1["Strategy"], s2["Strategy"] = style1, style2
580
- comparison_df = pd.DataFrame([s1, s2])[["Strategy", "Final Balance", "Sharpe Ratio", "EdgeCast Score", "Max Drawdown %"]]
581
 
582
  for col in ["Final Balance", "Sharpe Ratio", "EdgeCast Score"]:
583
- best_val = comparison_df[col].astype(float).max()
584
- comparison_df[col] = [f"{val} πŸ†" if float(val) == best_val else val for val in comparison_df[col]]
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 comparison_df, fig
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
- gr.Interface(
664
  fn=battle_strategies,
665
  inputs=[
666
- gr.Dropdown(choices=["None"] + list(strategy_presets.keys()), value="None", label="Strategy 1"),
667
- gr.Dropdown(choices=["None"] + list(strategy_presets.keys()), value="None", label="Strategy 2"),
668
- gr.Checkbox(label="Enable Fatigue"),
669
- gr.Slider(0, 1, 0.0, step=0.1, label="Fatigue Level"),
670
- gr.Checkbox(label="Enable Trump Volatility"),
671
- gr.Slider(0, 1, 0.0, step=0.1, label="Trump Volatility Index")
 
 
 
 
 
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)