| name | openbb-equity |
| description | Comprehensive equity analysis using OpenBB - historical prices,... |
OpenBB Equity Analysis
Perform comprehensive stock analysis using the OpenBB Platform.
Usage
/openbb-equity TICKER [--analysis fundamental|technical|all] [--period 1y]
What This Command Does
Retrieves and analyzes equity data for any stock ticker using OpenBB's comprehensive data sources.
Workflow
1. Check OpenBB Installation
First, verify OpenBB is installed:
try:
from openbb import obb
print("✅ OpenBB installed")
except ImportError:
print("⚠️ Installing OpenBB...")
import subprocess
subprocess.run(["pip", "install", "openbb"], check=True)
from openbb import obb
2. Parse Arguments
import sys
ticker = sys.argv[1].upper() if len(sys.argv) > 1 else "AAPL"
analysis_type = "all"
period = "1y"
for arg in sys.argv[2:]:
if arg.startswith("--analysis="):
analysis_type = arg.split("=")[1]
elif arg.startswith("--period="):
period = arg.split("=")[1]
3. Retrieve Historical Price Data
price_data = obb.equity.price.historical(
symbol=ticker,
interval="1d",
period=period
)
df = price_data.to_dataframe()
print(f"\n📈 Historical Prices for {ticker}")
print(f"Period: {period}")
print(f"Latest Close: ${df['close'].iloc[-1]:.2f}")
print(f"52-Week High: ${df['high'].max():.2f}")
print(f"52-Week Low: ${df['low'].min():.2f}")
print(f"YTD Return: {((df['close'].iloc[-1] / df['close'].iloc[0]) - 1) * 100:.2f}%")
4. Fundamental Analysis (if requested)
if analysis_type in ["fundamental", "all"]:
print(f"\n📊 Fundamental Analysis for {ticker}")
try:
profile = obb.equity.profile(symbol=ticker)
print(f"\nCompany: {profile.name}")
print(f"Sector: {profile.sector}")
print(f"Industry: {profile.industry}")
print(f"Market Cap: ${profile.market_cap / 1e9:.2f}B")
except:
print("Profile data not available")
try:
metrics = obb.equity.fundamental.metrics(symbol=ticker)
print(f"\nKey Metrics:")
print(f"P/E Ratio: {metrics.pe_ratio:.2f}")
print(f"EPS: ${metrics.eps:.2f}")
print(f"Dividend Yield: {metrics.dividend_yield:.2%}")
print(f"ROE: {metrics.roe:.2%}")
except:
print("Metrics data not available")
:
ratings = obb.equity.estimates.analyst(symbol=ticker)
()
()
()
()
()
:
()
5. Technical Analysis (if requested)
if analysis_type in ["technical", "all"]:
print(f"\n📉 Technical Analysis for {ticker}")
import pandas as pd
df['SMA_20'] = df['close'].rolling(window=20).mean()
df['SMA_50'] = df['close'].rolling(window=50).mean()
df['SMA_200'] = df['close'].rolling(window=200).mean()
current_price = df['close'].iloc[-1]
sma_20 = df['SMA_20'].iloc[-1]
sma_50 = df['SMA_50'].iloc[-1]
sma_200 = df['SMA_200'].iloc[-1]
print(f"\nMoving Averages:")
print(f"Current Price: ${current_price:.2f}")
print(f"SMA 20: ${sma_20:.2f} {'🟢' if current_price > sma_20 else '🔴'}")
print(f"SMA 50: ${sma_50:.2f} {'🟢' if current_price > sma_50 else '🔴'}")
()
delta = df[].diff()
gain = (delta.where(delta > , )).rolling(window=).mean()
loss = (-delta.where(delta < , )).rolling(window=).mean()
rs = gain / loss
df[] = - ( / ( + rs))
rsi = df[].iloc[-]
()
rsi > :
()
rsi < :
()
:
()
avg_volume = df[].rolling(window=).mean().iloc[-]
current_volume = df[].iloc[-]
()
()
()
()
6. AI-Powered Insights
Generate investment insights using Claude's analysis:
summary = {
"ticker": ticker,
"current_price": current_price,
"52w_high": df['high'].max(),
"52w_low": df['low'].min(),
"ytd_return": ((df['close'].iloc[-1] / df['close'].iloc[0]) - 1) * 100,
"technical": {
"sma_position": "bullish" if current_price > sma_200 else "bearish",
"rsi": rsi,
"volume_trend": "high" if current_volume > avg_volume else "normal"
}
}
print(f"\n🤖 AI Analysis for {ticker}:")
print("\nBased on the data above, here's my assessment:")
print(f"- Trend: {'Bullish' if current_price > sma_200 else 'Bearish'} (price {'above' if current_price > sma_200 else 'below'} 200-day SMA)")
print(f"- Momentum: {'Overbought' if rsi > 70 else rsi < } (RSI: )")
()
()
7. Generate Report
Create a formatted analysis report:
print(f"\n{'='*60}")
print(f"EQUITY ANALYSIS REPORT: {ticker}")
print(f"{'='*60}")
print(f"Generated: {pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')}")
print(f"Data Source: OpenBB Platform")
print(f"\nAnalysis Type: {analysis_type.upper()}")
print(f"Period Analyzed: {period}")
print(f"\n{'='*60}")
Examples
Basic equity analysis
/openbb-equity AAPL
Fundamental analysis only
/openbb-equity TSLA --analysis=fundamental
Technical analysis with custom period
/openbb-equity NVDA --analysis=technical --period=6m
Complete analysis
/openbb-equity GOOGL --analysis=all --period=1y
Data Coverage
- Price Data: Historical OHLCV, real-time quotes
- Fundamentals: Income statements, balance sheets, cash flow, ratios
- Technical: SMA, EMA, RSI, MACD, Bollinger Bands, volume
- Analyst Data: Ratings, price targets, recommendations
- Insider Trading: Recent insider transactions
- News: Latest company news and sentiment
Tips
- Compare Multiple Stocks: Run for different tickers to compare
- Track Over Time: Save reports to monitor changes
- Combine with AI Agents: Use with equity-analyst agent for deeper insights
- Export Data: Save dataframes to CSV for further analysis
- Set Alerts: Monitor key technical levels (support/resistance)
Integration with Other Commands
/openbb-crypto BTC --compare=equity
/openbb-portfolio --add=AAPL
/openbb-macro --impact=equity
Requirements
- OpenBB Platform installed (
pip install openbb)
- Python 3.9.21 - 3.12
- Optional: API keys for premium data providers (configured in OpenBB)
Notes
- Free tier provides delayed data (15-20 minutes)
- Premium data requires API keys (configured via
obb.user.credentials)
- All financial data is for informational purposes only
- Not financial advice - always do your own research