Kr08 commited on
Commit
1d1de4f
·
verified ·
1 Parent(s): c992acc

Update stock_analysis.py

Browse files
Files changed (1) hide show
  1. stock_analysis.py +16 -6
stock_analysis.py CHANGED
@@ -20,14 +20,12 @@ def forecast_series(series, model="ARIMA", forecast_period=FORECAST_PERIOD):
20
 
21
  # Get confidence intervals
22
  conf_int = model_fit.get_forecast(steps=forecast_period).conf_int()
23
- lower_ci = conf_int.iloc[:, 0] if isinstance(conf_int, pd.DataFrame) else conf_int[:, 0]
24
- upper_ci = conf_int.iloc[:, 1] if isinstance(conf_int, pd.DataFrame) else conf_int[:, 1]
25
 
26
  # Ensure all arrays have the same length
27
- min_length = min(len(forecast), len(lower_ci), len(upper_ci))
28
  predictions = forecast[:min_length]
29
- lower_ci = lower_ci[:min_length]
30
- upper_ci = upper_ci[:min_length]
31
 
32
  elif model == "Prophet":
33
  # Implement Prophet forecasting method
@@ -38,6 +36,12 @@ def forecast_series(series, model="ARIMA", forecast_period=FORECAST_PERIOD):
38
  else:
39
  raise ValueError(f"Unsupported model: {model}")
40
 
 
 
 
 
 
 
41
  return predictions, pd.DataFrame({'Lower_CI': lower_ci, 'Upper_CI': upper_ci})
42
 
43
  def get_stock_graph_and_info(idx, stock, interval, graph_type, forecast_method, start_date, end_date):
@@ -53,7 +57,13 @@ def get_stock_graph_and_info(idx, stock, interval, graph_type, forecast_method,
53
 
54
  last_date = pd.to_datetime(series['Date'].values[-1])
55
  forecast_dates = pd.date_range(start=last_date + timedelta(days=1), periods=len(predictions))
56
- forecast_dates = [date for date in forecast_dates if is_business_day(date)][:len(predictions)]
 
 
 
 
 
 
57
 
58
  forecast = pd.DataFrame({
59
  "Date": forecast_dates,
 
20
 
21
  # Get confidence intervals
22
  conf_int = model_fit.get_forecast(steps=forecast_period).conf_int()
 
 
23
 
24
  # Ensure all arrays have the same length
25
+ min_length = min(len(forecast), conf_int.shape[0])
26
  predictions = forecast[:min_length]
27
+ lower_ci = conf_int.iloc[:min_length, 0] if isinstance(conf_int, pd.DataFrame) else conf_int[:min_length, 0]
28
+ upper_ci = conf_int.iloc[:min_length, 1] if isinstance(conf_int, pd.DataFrame) else conf_int[:min_length, 1]
29
 
30
  elif model == "Prophet":
31
  # Implement Prophet forecasting method
 
36
  else:
37
  raise ValueError(f"Unsupported model: {model}")
38
 
39
+ # Ensure all arrays are of the same length
40
+ min_length = min(len(predictions), len(lower_ci), len(upper_ci))
41
+ predictions = predictions[:min_length]
42
+ lower_ci = lower_ci[:min_length]
43
+ upper_ci = upper_ci[:min_length]
44
+
45
  return predictions, pd.DataFrame({'Lower_CI': lower_ci, 'Upper_CI': upper_ci})
46
 
47
  def get_stock_graph_and_info(idx, stock, interval, graph_type, forecast_method, start_date, end_date):
 
57
 
58
  last_date = pd.to_datetime(series['Date'].values[-1])
59
  forecast_dates = pd.date_range(start=last_date + timedelta(days=1), periods=len(predictions))
60
+ forecast_dates = [date for date in forecast_dates if is_business_day(date)]
61
+
62
+ # Ensure all data has the same length
63
+ min_length = min(len(predictions), len(forecast_dates), len(confidence_intervals))
64
+ predictions = predictions[:min_length]
65
+ forecast_dates = forecast_dates[:min_length]
66
+ confidence_intervals = confidence_intervals.iloc[:min_length]
67
 
68
  forecast = pd.DataFrame({
69
  "Date": forecast_dates,