Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|