debug_stocks.pyโข2.37 kB
# debug_stocks.py - Debug stock data download issues
import yfinance as yf
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
def test_single_stock(ticker):
"""Test downloading data for a single stock."""
print(f"\n๐ Testing {ticker}...")
try:
# Try to download data
data = yf.download(ticker, period="1y", progress=False)
if data.empty:
print(f" โ No data returned for {ticker}")
return False
close = data['Close'].dropna()
print(f" โ
Downloaded {len(close)} data points")
print(f" ๐ Price range: ${float(close.min()):.2f} - ${float(close.max()):.2f}")
print(f" ๐
Date range: {data.index[0].date()} to {data.index[-1].date()}")
# Test volatility calculation
returns = close.pct_change().dropna()
daily_vol = float(returns.std())
print(f" ๐ Daily volatility: {daily_vol:.1%}")
return True
except Exception as e:
print(f" โ Error: {e}")
return False
def main():
"""Test all stocks in lenny_golub portfolio."""
# Your portfolio stocks
lenny_golub_stocks = ['COIN', 'GBTC', 'HOOD', 'MSTR', 'PYPL']
print("๐ DEBUGGING STOCK DATA DOWNLOAD")
print("=" * 50)
print(f"Testing {len(lenny_golub_stocks)} stocks from lenny_golub portfolio...")
successful = []
failed = []
for ticker in lenny_golub_stocks:
if test_single_stock(ticker):
successful.append(ticker)
else:
failed.append(ticker)
print(f"\n๐ SUMMARY:")
print(f" โ
Successful: {len(successful)} stocks")
if successful:
print(f" {', '.join(successful)}")
print(f" โ Failed: {len(failed)} stocks")
if failed:
print(f" {', '.join(failed)}")
if failed:
print(f"\n๐ก TROUBLESHOOTING:")
print(f" โข Check internet connection")
print(f" โข Try again in a few minutes (API rate limits)")
print(f" โข Verify ticker symbols are correct")
# Test with a known working stock
print(f"\n๐งช Testing with AAPL (known working stock)...")
test_single_stock("AAPL")
return successful, failed
if __name__ == "__main__":
main()