pm6six commited on
Commit
c51bf55
·
verified ·
1 Parent(s): 67c024b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -3
app.py CHANGED
@@ -65,6 +65,7 @@ def sma_crossover_strategy(initial_budget, start_date, end_date, ticker):
65
  profit_loss = final_value - initial_budget
66
  percentage_return = (profit_loss / initial_budget) * 100
67
 
 
68
  results = f"""
69
  Ticker: {ticker}
70
  Trading Period: {start_date} to {end_date}
@@ -73,8 +74,13 @@ def sma_crossover_strategy(initial_budget, start_date, end_date, ticker):
73
  Total Profit/Loss: ${profit_loss:.2f}
74
  Percentage Return: {percentage_return:.2f}%
75
  """
76
-
77
- return plot_file, results
 
 
 
 
 
78
 
79
  # Define Gradio interface components
80
  with gr.Blocks() as app:
@@ -96,6 +102,7 @@ with gr.Blocks() as app:
96
  with gr.Row():
97
  portfolio_graph = gr.Image(label="Portfolio Value Over Time")
98
  summary_text = gr.Textbox(label="Simulation Summary", lines=8)
 
99
 
100
  # Tab for Instructions
101
  with gr.Tab("Instructions"):
@@ -105,6 +112,7 @@ with gr.Blocks() as app:
105
  2. Specify the trading period (start and end dates).
106
  3. Select a stock ticker symbol (e.g., SPY, TSLA, GOOGL).
107
  4. Click "Run Simulation" to visualize the portfolio value over time and view a summary of results.
 
108
 
109
  ### Notes:
110
  - The 50-day and 150-day SMAs are used for buy and sell signals.
@@ -115,7 +123,7 @@ with gr.Blocks() as app:
115
  run_button.click(
116
  sma_crossover_strategy,
117
  inputs=[initial_budget, start_date, end_date, ticker],
118
- outputs=[portfolio_graph, summary_text],
119
  )
120
 
121
  # Launch the app
 
65
  profit_loss = final_value - initial_budget
66
  percentage_return = (profit_loss / initial_budget) * 100
67
 
68
+ # Create summary text
69
  results = f"""
70
  Ticker: {ticker}
71
  Trading Period: {start_date} to {end_date}
 
74
  Total Profit/Loss: ${profit_loss:.2f}
75
  Percentage Return: {percentage_return:.2f}%
76
  """
77
+
78
+ # Save results to a text file
79
+ results_file = "simulation_results.txt"
80
+ with open(results_file, "w") as f:
81
+ f.write(results)
82
+
83
+ return plot_file, results, results_file
84
 
85
  # Define Gradio interface components
86
  with gr.Blocks() as app:
 
102
  with gr.Row():
103
  portfolio_graph = gr.Image(label="Portfolio Value Over Time")
104
  summary_text = gr.Textbox(label="Simulation Summary", lines=8)
105
+ download_button = gr.File(label="Download Results (.txt)")
106
 
107
  # Tab for Instructions
108
  with gr.Tab("Instructions"):
 
112
  2. Specify the trading period (start and end dates).
113
  3. Select a stock ticker symbol (e.g., SPY, TSLA, GOOGL).
114
  4. Click "Run Simulation" to visualize the portfolio value over time and view a summary of results.
115
+ 5. Download the results as a `.txt` file using the download button.
116
 
117
  ### Notes:
118
  - The 50-day and 150-day SMAs are used for buy and sell signals.
 
123
  run_button.click(
124
  sma_crossover_strategy,
125
  inputs=[initial_budget, start_date, end_date, ticker],
126
+ outputs=[portfolio_graph, summary_text, download_button],
127
  )
128
 
129
  # Launch the app