codelion commited on
Commit
d9c4174
·
verified ·
1 Parent(s): e44a316

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -4
app.py CHANGED
@@ -19,11 +19,19 @@ TICKERS = [
19
 
20
  def optimize_portfolio(years, target_return):
21
  try:
22
- data = yf.download(TICKERS, period=f"{years}y", interval="1mo")
23
- if "Adj Close" not in data.columns:
24
- return pd.DataFrame(), "Error: 'Adj Close' column missing.", "", "", ""
 
 
 
 
 
 
 
 
 
25
 
26
- prices = data['Adj Close']
27
  returns = prices.pct_change().dropna()
28
  mean_returns = returns.mean() * 12
29
  cov_matrix = returns.cov() * 12
 
19
 
20
  def optimize_portfolio(years, target_return):
21
  try:
22
+ data = yf.download(TICKERS, period=f"{years}y", interval="1mo", group_by="ticker", auto_adjust=True)
23
+
24
+ if isinstance(data.columns, pd.MultiIndex):
25
+ try:
26
+ prices = pd.concat([data[ticker]['Close'] for ticker in TICKERS], axis=1)
27
+ prices.columns = TICKERS
28
+ except Exception:
29
+ return pd.DataFrame(), "Error: Failed to extract Close prices from multi-index data.", "", "", ""
30
+ else:
31
+ prices = data.get("Adj Close")
32
+ if prices is None or prices.empty:
33
+ return pd.DataFrame(), "Error: 'Adj Close' data not found or empty.", "", "", ""
34
 
 
35
  returns = prices.pct_change().dropna()
36
  mean_returns = returns.mean() * 12
37
  cov_matrix = returns.cov() * 12