Trading Expert Knowledge
Reference Knowledge
- Technical Analysis Indicators Reference
RSI (Relative Strength Index)
Formula: RSI = 100 - (100 / (1 + RS)) Where: RS = Average Gain / Average Loss over N periods (default N = 14)
Step-by-step calculation:
- For each period, compute change = Close(t) - Close(t-1)
- Gains = max(change, 0), Losses = abs(min(change, 0))
- First average: simple mean of first 14 gains/losses
- Subsequent: AvgGain = (PrevAvgGain * 13 + CurrentGain) / 14 (Wilder smoothing)
- RS = AvgGain / AvgLoss
- RSI = 100 - (100 / (1 + RS))
Worked example (14-period): Avg Gain over 14 periods = 1.02 Avg Loss over 14 periods = 0.68 RS = 1.02 / 0.68 = 1.50 RSI = 100 - (100 / (1 + 1.50)) = 100 - 40 = 60.0
Interpretation:
-
RSI < 30: Oversold territory (potential buy signal)
-
RSI > 70: Overbought territory (potential sell signal)
-
RSI = 50: Neutral — price momentum balanced
Advanced RSI Signals:
Signal Description Strength
Bearish divergence Price makes new high, RSI makes lower high Strong reversal warning
Bullish divergence Price makes new low, RSI makes higher low Strong reversal warning
Bullish failure swing RSI drops below 30, bounces, pulls back above 30, breaks prior RSI high Very strong buy
Bearish failure swing RSI rises above 70, drops, bounces below 70, breaks prior RSI low Very strong sell
Range shift RSI oscillates 40-80 in uptrend, 20-60 in downtrend Trend confirmation
Best practices: Never use RSI as a sole signal. Combine with trend direction (moving averages) and volume. In strong trends, RSI can stay overbought/oversold for extended periods.
MACD (Moving Average Convergence Divergence)
MACD Line = EMA(12) - EMA(26) Signal Line = EMA(9) of MACD Line Histogram = MACD Line - Signal Line
EMA formula: EMA(t) = Price(t) * k + EMA(t-1) * (1 - k) Where: k = 2 / (N + 1) For EMA(12): k = 2/13 = 0.1538 For EMA(26): k = 2/27 = 0.0741
Worked example: EMA(12) = 155.20 EMA(26) = 152.80 MACD Line = 155.20 - 152.80 = 2.40 Previous Signal Line = 1.80 Signal Line = 2.40 * (2/10) + 1.80 * (8/10) = 0.48 + 1.44 = 1.92 Histogram = 2.40 - 1.92 = 0.48 (positive = bullish momentum increasing)
Interpretation:
Signal Condition Strength
Bullish crossover MACD crosses above Signal Line Moderate buy
Bearish crossover MACD crosses below Signal Line Moderate sell
Zero-line bullish cross MACD crosses above zero Trend change to bullish
Zero-line bearish cross MACD crosses below zero Trend change to bearish
Histogram expansion Bars growing taller Momentum accelerating
Histogram contraction Bars shrinking Momentum weakening, reversal may come
Bullish divergence Price new low, MACD higher low Strong reversal signal
Bearish divergence Price new high, MACD lower high Strong reversal signal
Bollinger Bands
Middle Band = SMA(20) Upper Band = SMA(20) + 2 * StdDev(20) Lower Band = SMA(20) - 2 * StdDev(20) Bandwidth = (Upper - Lower) / Middle %B = (Price - Lower) / (Upper - Lower)
Worked example: SMA(20) = 150.00 StdDev(20) = 3.50 Upper = 150.00 + 2 * 3.50 = 157.00 Lower = 150.00 - 2 * 3.50 = 143.00 Bandwidth = (157.00 - 143.00) / 150.00 = 0.0933 (9.33%) Current price = 155.00 %B = (155.00 - 143.00) / (157.00 - 143.00) = 12/14 = 0.857 Interpretation: Price is 85.7% of the way from lower to upper band — near upper band
Key Bollinger Band Signals:
Signal Condition Meaning
Squeeze Bandwidth at 6-month low Volatility contraction, big move imminent
Squeeze breakout up Price breaks above upper band after squeeze Strong bullish breakout
Squeeze breakout down Price breaks below lower band after squeeze Strong bearish breakout
Walking the upper band Price hugs upper band with middle band rising Strong uptrend — do NOT short
Walking the lower band Price hugs lower band with middle band falling Strong downtrend — do NOT buy
Mean reversion touch Price touches outer band, %B reverses Potential reversion to middle band
W-bottom Price hits lower band twice, second low has higher %B Bullish reversal pattern
M-top Price hits upper band twice, second high has lower %B Bearish reversal pattern
VWAP (Volume Weighted Average Price)
VWAP = Cumulative(Typical Price * Volume) / Cumulative(Volume) Typical Price = (High + Low + Close) / 3
Worked example (first 3 bars of the day): Bar 1: TP = (101+99+100)/3 = 100.00, Vol = 10,000 -> cumTPV = 1,000,000 Bar 2: TP = (102+100+101)/3 = 101.00, Vol = 15,000 -> cumTPV = 2,515,000 Bar 3: TP = (103+101+102)/3 = 102.00, Vol = 8,000 -> cumTP*V = 3,331,000 Cumulative Volume = 33,000 VWAP = 3,331,000 / 33,000 = 100.94
Usage:
-
Institutional benchmark: If price > VWAP, buyers dominate; price < VWAP, sellers dominate
-
Intraday S/R: VWAP acts as dynamic support in uptrends, resistance in downtrends
-
Entry filter: Buy only when price pulls back to VWAP (not chasing extended moves)
-
Standard deviations: VWAP +1/-1 and +2/-2 StdDev bands serve as profit targets
-
Resets daily: Do NOT carry VWAP across sessions — it is an intraday metric
Moving Averages
SMA(N) = (Close_1 + Close_2 + ... + Close_N) / N EMA(N) = Close * (2/(N+1)) + PrevEMA * (1 - 2/(N+1))
Key Moving Averages: EMA(9) — very short-term trend (scalping, day trading) EMA(20) — short-term trend EMA(50) — medium-term trend SMA(100) — intermediate trend SMA(200) — long-term trend (institutional benchmark)
Critical Cross Signals:
Cross Name Meaning Reliability
50 MA > 200 MA Golden Cross Bullish trend reversal High (lag ~2 weeks)
50 MA < 200 MA Death Cross Bearish trend reversal High (lag ~2 weeks)
9 EMA > 21 EMA Fast bullish cross Short-term momentum shift Moderate
Price > 200 SMA Above long-term trend Bullish regime Very High
Price < 200 SMA Below long-term trend Bearish regime Very High
Moving Average Ribbon (20/50/100/200 MAs all fanning out): Indicates a very strong trend. When all are stacked in order (20 > 50 > 100 > 200 for uptrend), the trend is highly reliable.
ATR (Average True Range)
True Range = max(High - Low, |High - PrevClose|, |Low - PrevClose|) ATR(14) = Simple or Wilder Moving Average of True Range over 14 periods
Worked example: Today: High = 105, Low = 101, PrevClose = 102 TR = max(105-101, |105-102|, |101-102|) = max(4, 3, 1) = 4 If ATR(14) was 3.50 yesterday: ATR(14) = (3.50 * 13 + 4) / 14 = (45.50 + 4) / 14 = 3.536
Practical Applications:
Use Case Formula Example
Stop-loss placement Entry - 2 * ATR Entry $100, ATR $2.50 -> Stop at $95.00
Take-profit target Entry + 3 * ATR Entry $100, ATR $2.50 -> Target $107.50
Position sizing Risk$ / ATR $200 risk / $2.50 ATR = 80 shares
Volatility filter ATR > threshold Only trade when ATR > daily average (avoid dead markets)
Trailing stop Highest close - 3 * ATR Locks in profit as price rises
Volume Analysis
OBV (On-Balance Volume): If Close > PrevClose: OBV = PrevOBV + Volume If Close < PrevClose: OBV = PrevOBV - Volume If Close = PrevClose: OBV = PrevOBV
Volume Rate of Change: VROC = (Volume - Volume_N_ago) / Volume_N_ago * 100
Volume Confirmation Rules:
Price Action Volume Interpretation
Price up Volume up Strong bullish — legitimate move
Price up Volume down Weak rally — likely to reverse
Price down Volume up Strong bearish — capitulation or breakdown
Price down Volume down Weak decline — may be nearing bottom
Breakout Volume > 150% of 20-day avg Confirmed breakout — take the trade
Breakout Volume < average Failed breakout likely — wait or fade
Volume climax Extreme volume spike (3x+ average) Potential exhaustion/reversal point
Support & Resistance
Fibonacci Retracement Levels:
After a move from Low (L) to High (H): 23.6% level = H - (H - L) * 0.236 38.2% level = H - (H - L) * 0.382 50.0% level = H - (H - L) * 0.500 61.8% level = H - (H - L) * 0.618 (Golden Ratio — strongest level) 78.6% level = H - (H - L) * 0.786
Worked example (move from $80 to $120): Range = $40 23.6% = 120 - 40 * 0.236 = 120 - 9.44 = $110.56 38.2% = 120 - 40 * 0.382 = 120 - 15.28 = $104.72 50.0% = 120 - 40 * 0.500 = 120 - 20.00 = $100.00 61.8% = 120 - 40 * 0.618 = 120 - 24.72 = $95.28 (most likely bounce) 78.6% = 120 - 40 * 0.786 = 120 - 31.44 = $88.56
Pivot Points (Standard):
PP = (High + Low + Close) / 3 S1 = 2 * PP - High S2 = PP - (High - Low) R1 = 2 * PP - Low R2 = PP + (High - Low)
Worked example (prev day: High=155, Low=148, Close=152): PP = (155 + 148 + 152) / 3 = 151.67 S1 = 2 * 151.67 - 155 = 148.33 S2 = 151.67 - (155 - 148) = 144.67 R1 = 2 * 151.67 - 148 = 155.33 R2 = 151.67 + (155 - 148) = 158.67
- Candlestick Patterns
Single-Candle Patterns
Pattern Signal Body Wicks Context Required
Doji Indecision Open = Close (or nearly) Long both sides At S/R level = reversal
Hammer Bullish reversal Small, at top of candle Lower wick > 2x body Must appear at bottom of downtrend
Inverted Hammer Bullish reversal Small, at bottom of candle Upper wick > 2x body At bottom of downtrend, needs confirmation
Shooting Star Bearish reversal Small, at bottom of candle Upper wick > 2x body Must appear at top of uptrend
Hanging Man Bearish reversal Small, at top of candle Lower wick > 2x body At top of uptrend (same shape as Hammer)
Marubozu (Bullish) Strong continuation Full green body, no wicks None Strong buying pressure
Marubozu (Bearish) Strong continuation Full red body, no wicks None Strong selling pressure
Spinning Top Indecision Small body centered Equal wicks both sides Trend may be losing steam
Dragonfly Doji Bullish reversal Open = Close = High Long lower wick only At support = strong reversal signal
Gravestone Doji Bearish reversal Open = Close = Low Long upper wick only At resistance = strong reversal signal
Multi-Candle Patterns
Pattern Signal Description Reliability
Bullish Engulfing Reversal up Large green candle fully engulfs prior red candle High at support
Bearish Engulfing Reversal down Large red candle fully engulfs prior green candle High at resistance
Morning Star Bullish reversal Red candle, small body/doji with gap, large green candle Very High
Evening Star Bearish reversal Green candle, small body/doji with gap, large red candle Very High
Three White Soldiers Strong bullish Three consecutive large green candles, each closing higher Very High
Three Black Crows Strong bearish Three consecutive large red candles, each closing lower Very High
Bullish Harami Potential reversal Large red, then small green contained within red's body Moderate (needs confirmation)
Bearish Harami Potential reversal Large green, then small red contained within green's body Moderate (needs confirmation)
Tweezer Bottom Bullish reversal Two candles with matching lows at support High
Tweezer Top Bearish reversal Two candles with matching highs at resistance High
Piercing Line Bullish reversal Red candle, then green opens below red's low and closes above 50% of red's body Moderate-High
Dark Cloud Cover Bearish reversal Green candle, then red opens above green's high and closes below 50% of green's body Moderate-High
- Risk Management Formulas
Position Sizing (Fixed Fractional)
Position Size (shares) = Account Risk Amount / (Entry Price - Stop Loss Price) Account Risk Amount = Portfolio Value * Risk Per Trade %
RULE: Never risk more than 1-2% of portfolio on a single trade.
Worked example: Portfolio Value = $10,000 Risk Per Trade = 2% ($200) Entry Price = $100.00 Stop Loss = $95.00 (based on 2x ATR below entry) Risk per share = $100.00 - $95.00 = $5.00 Position Size = $200 / $5.00 = 40 shares Position Value = 40 * $100 = $4,000 (40% of portfolio)
CONCENTRATION CHECK: If position value > 10% of portfolio, reduce size. Adjusted: max position = $1,000 / $100 = 10 shares Adjusted risk = 10 * $5.00 = $50 (only 0.5% of portfolio — acceptable)
Kelly Criterion (Optimal Bet Size)
Kelly % = W - ((1 - W) / R) Where: W = win rate (decimal) R = average win / average loss ratio (reward-to-risk)
Worked example: Win rate: 60% (W = 0.60) Average win: $300, Average loss: $200 R = 300 / 200 = 1.5 Kelly = 0.60 - (0.40 / 1.5) = 0.60 - 0.267 = 0.333 (33.3%)
Full Kelly is too aggressive for real trading. Use fractions: Half-Kelly = 0.333 / 2 = 16.7% of portfolio per trade Quarter-Kelly = 0.333 / 4 = 8.3% of portfolio per trade (recommended)
If Kelly is negative, the system has NEGATIVE expectancy — do not trade it.
Value at Risk (VaR)
Parametric VaR = Portfolio Value * Portfolio Volatility * Z-score * sqrt(Time Horizon)
Z-scores: 90% confidence = 1.282 95% confidence = 1.645 99% confidence = 2.326
Worked example (daily VaR, 95% confidence): Portfolio = $10,000 Daily volatility (stddev of daily returns) = 2.0% VaR = $10,000 * 0.02 * 1.645 * sqrt(1) = $329.00 Meaning: 95% confident daily loss will not exceed $329.
Weekly VaR = $329 * sqrt(5) = $329 * 2.236 = $735.65 Monthly VaR = $329 * sqrt(21) = $329 * 4.583 = $1,507.81
Sharpe Ratio
Sharpe = (Rp - Rf) / StdDev(Rp) * sqrt(252) Where: Rp = mean daily portfolio return Rf = daily risk-free rate (Treasury yield / 252) StdDev(Rp) = standard deviation of daily returns 252 = trading days per year (annualization factor)
Worked example: Mean daily return = 0.10% (0.001) Annual Treasury yield = 5.0% -> daily Rf = 0.05/252 = 0.000198 StdDev of daily returns = 0.80% (0.008) Daily Sharpe = (0.001 - 0.000198) / 0.008 = 0.100 Annualized Sharpe = 0.100 * sqrt(252) = 0.100 * 15.875 = 1.59
Ratings: < 0.5 = Poor (not compensated for risk) 0.5-1.0 = Acceptable 1.0-2.0 = Good 2.0-3.0 = Very Good > 3.0 = Excellent (verify — may indicate overfitting)
Sortino Ratio (Downside-Only Risk)
Sortino = (Rp - Rf) / DownsideDeviation * sqrt(252) DownsideDeviation = sqrt(mean(min(Ri - Rf, 0)^2))
Better than Sharpe because it only penalizes downside volatility, not upside. Sortino > 2.0 is considered very good.
Maximum Drawdown
For each point t in equity curve: Peak(t) = max(Equity[0..t]) Drawdown(t) = (Peak(t) - Equity(t)) / Peak(t) * 100% MaxDrawdown = max(Drawdown(t)) for all t
Worked example: Equity curve: $10,000 -> $12,000 -> $9,600 -> $11,500 Peak at $12,000 Drawdown at $9,600 = (12,000 - 9,600) / 12,000 = 20.0% Max Drawdown = 20.0%
Recovery Factor = Total Net Profit / Max Drawdown If total profit = $3,000, MaxDD = $2,400 -> RF = 3,000/2,400 = 1.25
Calmar Ratio = Annual Return / Max Drawdown If annual return = 25%, MaxDD = 20% -> Calmar = 1.25 (target > 1.0)
Profit Factor
Profit Factor = Gross Winning Trades / Gross Losing Trades
Worked example: 10 winning trades totaling $5,000 8 losing trades totaling $3,200 Profit Factor = 5,000 / 3,200 = 1.5625
Ratings: < 1.0 = losing system, 1.0-1.5 = marginal, 1.5-2.0 = good, 2.0-3.0 = very good, > 3.0 = excellent (verify with enough trades)
Expectancy Per Trade
Expectancy = (Win% * AvgWin) - (Loss% * AvgLoss)
Worked example: Win rate: 55%, Average win: $150, Average loss: $100 Expectancy = (0.55 * 150) - (0.45 * 100) = 82.50 - 45.00 = $37.50/trade Over 100 trades: expected profit = $3,750
Minimum for a viable system: Expectancy > 0 with at least 30 sample trades.
Risk/Reward Ratio
R:R = (Target Price - Entry Price) / (Entry Price - Stop Loss Price)
Worked example: Entry = $100, Stop = $95, Target = $112 R:R = (112 - 100) / (100 - 95) = 12 / 5 = 2.4:1
Minimum acceptable R:R = 1.5:1 With 40% win rate and 2:1 R:R: Expectancy = 0.402 - 0.601 = +0.20 (profitable!) With 40% win rate and 1:1 R:R: Expectancy = 0.401 - 0.601 = -0.20 (losing!)
- Alpaca Trading API Reference
Authentication
Paper trading (ALWAYS start here)
BASE_URL="https://paper-api.alpaca.markets"
Live trading (only after paper validation)
BASE_URL="https://api.alpaca.markets"
Data API (same for both paper and live)
DATA_URL="https://data.alpaca.markets"
Auth headers (required on every request)
HEADERS="-H 'APCA-API-KEY-ID: $ALPACA_API_KEY' -H 'APCA-API-SECRET-KEY: $ALPACA_SECRET_KEY'"
Account Information
Get account details
curl -s "$BASE_URL/v2/account" $HEADERS
Key fields: id, status, equity, cash, buying_power, portfolio_value,
pattern_day_trader (bool), daytrade_count, last_equity
Get Current Positions
All positions
curl -s "$BASE_URL/v2/positions" $HEADERS
Returns array: symbol, qty, side, avg_entry_price, current_price,
unrealized_pl, unrealized_plpc, market_value, cost_basis
Single position
curl -s "$BASE_URL/v2/positions/AAPL" $HEADERS
Place Orders
Market order (fills immediately at best available price)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{"symbol":"AAPL","qty":"10","side":"buy","type":"market","time_in_force":"day"}'
Limit order (fills only at your price or better)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{"symbol":"AAPL","qty":"10","side":"buy","type":"limit","time_in_force":"gtc","limit_price":"150.00"}'
Stop order (triggers market order when stop price hit)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{"symbol":"AAPL","qty":"10","side":"sell","type":"stop","time_in_force":"gtc","stop_price":"145.00"}'
Stop-limit order (triggers limit order when stop price hit)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{"symbol":"AAPL","qty":"10","side":"sell","type":"stop_limit","time_in_force":"gtc","stop_price":"145.00","limit_price":"144.50"}'
Trailing stop (dynamic stop that trails price by dollar or percent amount)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{"symbol":"AAPL","qty":"10","side":"sell","type":"trailing_stop","time_in_force":"gtc","trail_percent":"5"}'
Bracket order (entry + stop loss + take profit as one atomic order)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{
"symbol": "AAPL",
"qty": "10",
"side": "buy",
"type": "limit",
"time_in_force": "day",
"limit_price": "150.00",
"order_class": "bracket",
"stop_loss": {"stop_price": "145.00"},
"take_profit": {"limit_price": "165.00"}
}'
OCO order (one-cancels-other: stop loss OR take profit, whichever hits first)
curl -s -X POST "$BASE_URL/v2/orders" $HEADERS
-H "Content-Type: application/json"
-d '{
"symbol": "AAPL",
"qty": "10",
"side": "sell",
"type": "limit",
"time_in_force": "gtc",
"limit_price": "165.00",
"order_class": "oco",
"stop_loss": {"stop_price": "145.00"}
}'
Order parameters reference:
Parameter Values Notes
side
buy , sell
type
market , limit , stop , stop_limit , trailing_stop
time_in_force
day , gtc , ioc , fok
day = cancel at close, gtc = good til canceled
order_class
simple , bracket , oco , oto
bracket = entry + stop + target
qty
String number Whole shares for stocks
notional
String dollar amount Alternative to qty (fractional shares)
Manage Orders
List open orders
curl -s "$BASE_URL/v2/orders?status=open" $HEADERS
Get specific order
curl -s "$BASE_URL/v2/orders/{order_id}" $HEADERS
Cancel specific order
curl -s -X DELETE "$BASE_URL/v2/orders/{order_id}" $HEADERS
Cancel ALL open orders
curl -s -X DELETE "$BASE_URL/v2/orders" $HEADERS
Close Positions
Close entire position in a symbol
curl -s -X DELETE "$BASE_URL/v2/positions/AAPL" $HEADERS
Partially close (sell 5 of 10 shares)
curl -s -X DELETE "$BASE_URL/v2/positions/AAPL?qty=5" $HEADERS
EMERGENCY: Close ALL positions
curl -s -X DELETE "$BASE_URL/v2/positions" $HEADERS
Market Data (free with Alpaca account)
Latest quote (bid/ask)
curl -s "$DATA_URL/v2/stocks/AAPL/quotes/latest" $HEADERS
Latest trade (last fill)
curl -s "$DATA_URL/v2/stocks/AAPL/trades/latest" $HEADERS
Historical bars (OHLCV) — daily
curl -s "$DATA_URL/v2/stocks/AAPL/bars?timeframe=1Day&start=2024-01-01&limit=100" $HEADERS
Intraday bars — 5-minute
curl -s "$DATA_URL/v2/stocks/AAPL/bars?timeframe=5Min&start=$(date -d 'today' +%Y-%m-%d)&limit=78" $HEADERS
Multi-symbol snapshot
curl -s "$DATA_URL/v2/stocks/snapshots?symbols=AAPL,MSFT,GOOGL" $HEADERS
Crypto bars
curl -s "$DATA_URL/v1beta3/crypto/us/bars?symbols=BTC/USD&timeframe=1Day&limit=30" $HEADERS
Crypto latest quote
curl -s "$DATA_URL/v1beta3/crypto/us/latest/quotes?symbols=BTC/USD,ETH/USD" $HEADERS
Market Clock & Calendar
Is market open right now?
curl -s "$BASE_URL/v2/clock" $HEADERS
Returns: timestamp, is_open (bool), next_open, next_close
Upcoming market calendar
curl -s "$BASE_URL/v2/calendar?start=$(date +%Y-%m-%d)&end=$(date -d '+7 days' +%Y-%m-%d)" $HEADERS
Crypto Trading Notes
-
Symbols use slash format: BTC/USD , ETH/USD , SOL/USD , DOGE/USD
-
24/7 trading (no market hours restriction)
-
Fractional quantities allowed (e.g., "qty": "0.001" for BTC)
-
Paper trading works identically to live
-
Use notional for dollar-based crypto orders: "notional": "100.00" buys $100 worth
Account Activity & History
Trade history
curl -s "$BASE_URL/v2/account/activities/FILL?after=2024-01-01" $HEADERS
Portfolio history
curl -s "$BASE_URL/v2/account/portfolio/history?period=1M&timeframe=1D" $HEADERS
Returns: timestamp[], equity[], profit_loss[], profit_loss_pct[]
- Free Financial Data Sources
Price Data (via web_search + web_fetch)
Source URL Pattern Data Available
Yahoo Finance finance.yahoo.com/quote/AAPL
Realtime quotes, charts, financials, analyst ratings
Google Finance google.com/finance/quote/AAPL:NASDAQ
Quotes, news, related stocks, earnings
CoinGecko coingecko.com/en/coins/bitcoin
Crypto prices, market cap, volume, 24h change
CoinMarketCap coinmarketcap.com/currencies/bitcoin/
Crypto prices, rankings, dominance, supply
MarketWatch marketwatch.com/investing/stock/AAPL
Quotes, news, analysis, options data
Finviz finviz.com/quote.ashx?t=AAPL
Technical + fundamental screener, charts
TradingView tradingview.com/symbols/NASDAQ-AAPL/
Charts, technicals, community ideas
Fundamental Data
Source URL Pattern Data Available
Macrotrends macrotrends.net/stocks/charts/AAPL/apple/pe-ratio
P/E, revenue, margins, historical
Simply Wall St Web search: "AAPL simply wall st"
Visual fundamental analysis, fair value
SEC EDGAR sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AAPL&type=10-K
Official 10-K, 10-Q, 8-K filings
Earnings Whispers earningswhispers.com/stocks/AAPL
Earnings estimates, surprise history, calendar
Stock Analysis stockanalysis.com/stocks/AAPL/financials/
Clean financial statements, ratios
Wisesheets Web search: "AAPL income statement"
Financial data in spreadsheet format
Sentiment & Alternative Data
Source URL Data Available
CNN Fear & Greed money.cnn.com/data/fear-and-greed/
Market sentiment index 0-100 (Extreme Fear to Extreme Greed)
CBOE VIX Web search: "VIX index today"
Volatility index (>30 = fear, <15 = complacency)
Finviz Map finviz.com/map.ashx
Market heatmap by sector/size
StockTwits stocktwits.com/symbol/AAPL
Social sentiment (bullish/bearish ratio)
Put/Call Ratio Web search: "CBOE put call ratio today"
Options sentiment (>1.0 = bearish, <0.7 = bullish)
Short Interest finviz.com/quote.ashx?t=AAPL -> Short Float Percent of float sold short
Insider Trading openinsider.com/screener
CEO/CFO buy/sell patterns
Macro Economic Data
Source URL Data Available
FRED fred.stlouisfed.org
Interest rates, CPI, employment, GDP, M2, yield curve
Treasury.gov treasury.gov/resource-center/data-chart-center/interest-rates/
Daily Treasury yield curve
CME FedWatch Web search: "CME FedWatch tool"
Federal funds rate probabilities
BLS bls.gov/news.release/
Employment situation, CPI, PPI
ISM Web search: "ISM manufacturing PMI"
PMI (>50 = expansion, <50 = contraction)
Conference Board Web search: "consumer confidence index"
Consumer confidence, leading indicators
Earnings Calendar earningswhispers.com/calendar
Upcoming earnings dates
Economic Calendar Web search: "economic calendar this week"
Scheduled data releases
Crypto-Specific Sources
Source URL Data Available
CoinGecko coingecko.com
Prices, market cap, volume, DeFi TVL
DefiLlama defillama.com
Total Value Locked across all chains
Glassnode (free tier) Web search: "bitcoin on-chain metrics"
On-chain analytics (NUPL, MVRV, exchange flows)
Bitcoin Fear & Greed alternative.me/crypto/fear-and-greed-index/
Crypto-specific sentiment 0-100
Ultrasound Money ultrasound.money
ETH supply/burn metrics
- Confidence Calibration Guide (Superforecasting)
Calibration Principles (Philip Tetlock)
-
A "70% confident" prediction should be right about 70% of the time
-
Most people are overconfident: their "90%" predictions are right only ~70%
-
Track your predictions systematically and compare predicted vs actual frequency
-
Update incrementally (2-5% per new piece of evidence), not dramatically
Confidence Level Guide
Level Meaning Evidence Required Trading Action
20-30% Slight lean Single weak signal, limited data No trade — insufficient edge
40-50% Toss-up with slight edge Conflicting signals, moderate evidence No trade — coin flip
55-65% Moderate conviction Multiple aligned signals, historical precedent Small position, wide stops
70-80% Strong conviction Strong multi-factor alignment, catalyst identified Standard position size
85-95% Very high conviction Overwhelming evidence — be suspicious of yourself Full position, but NEVER all-in
Brier Score for Trade Predictions
Brier Score = mean((predicted_probability - actual_outcome)^2) actual_outcome: 1 if prediction was correct, 0 if wrong
Worked example (5 predictions): Pred 1: 80% confident -> correct (1) -> (0.80 - 1)^2 = 0.04 Pred 2: 60% confident -> wrong (0) -> (0.60 - 0)^2 = 0.36 Pred 3: 70% confident -> correct (1) -> (0.70 - 1)^2 = 0.09 Pred 4: 90% confident -> correct (1) -> (0.90 - 1)^2 = 0.01 Pred 5: 55% confident -> wrong (0) -> (0.55 - 0)^2 = 0.30 Brier Score = (0.04 + 0.36 + 0.09 + 0.01 + 0.30) / 5 = 0.16
Ratings: 0.00 = perfect, < 0.15 = excellent, 0.15-0.25 = good, 0.25 = coin flip, > 0.25 = worse than random
Calibration Self-Check Protocol
After accumulating 20+ trade predictions, group by confidence bucket:
-
Are your 60% predictions right ~60% of the time?
-
If your 60% predictions are right 80% of the time, you are underconfident — adjust up
-
If your 80% predictions are right 55% of the time, you are overconfident — adjust down
-
Recalibrate your confidence scale after every 50 resolved predictions
- Trading Psychology & Cognitive Biases
Biases to Watch For
Bias Description Mitigation
Confirmation Bias Seeking info that confirms your thesis Always build the opposing case first (adversarial debate)
Anchoring Over-weighting the first number you see (entry price, analyst target) Start analysis from base rates and current data, not old prices
Recency Bias Over-weighting recent events (last week's crash, last month's rally) Look at longer timeframes — 6-month and 1-year charts minimum
Loss Aversion Holding losers too long ("it'll come back"), cutting winners too fast Use mechanical stop-losses and take-profit targets, set BEFORE entry
Overconfidence Believing you are more right than you are Track Brier scores, use Kelly fractions, never bet > 2% per trade
Narrative Bias Compelling story = good trade (often false) Focus on quantitative data, not stories. "Good company" != "good trade"
FOMO Fear of missing out, chasing entries Only enter at planned levels. The market is open 252 days a year
Sunk Cost "I've lost so much, I can't sell now" Each moment is a new decision. Ask: "Would I enter this trade NOW at current price?"
Hindsight Bias "I knew that would happen" Journal BEFORE trades with specific predictions, not after
Disposition Effect Selling winners early to "lock in profits" but holding losers Let winners run (trail stops), cut losers at planned stops
Gambler's Fallacy "It's dropped 5 days in a row, it HAS to bounce" Each day is independent. Trends persist more often than they reverse
Endowment Effect Overvaluing positions you already own Evaluate positions as if you were building from scratch today
Discipline Rules
-
Every trade has a written plan BEFORE entry: entry price, stop loss, target, position size, thesis
-
Write down your reasoning BEFORE entering — if you cannot articulate the edge, do not trade
-
Set stop-losses at order entry time, not "in your head"
-
Review your journal weekly — look for patterns in wins AND losses
-
Take breaks after big wins (overconfidence risk) AND big losses (emotional risk)
-
Never average down on a losing position unless the original thesis explicitly planned for it
-
Never move a stop-loss further away from your entry (only tighten, never widen)
-
The market will be there tomorrow — missing a trade is not a loss, but a blown account is
- Portfolio Construction
Asset Allocation Guidelines
Style Equities Crypto Fixed Income / Cash Max Single Position
Conservative 50-60% 0-5% 35-50% 5%
Moderate 60-75% 5-15% 10-35% 8%
Aggressive 70-85% 10-25% 5-20% 10%
Speculative 50-70% 20-40% 5-10% 15% (with strict stops)
Sector Diversification
Maximum 30% in any single sector:
-
Technology, Healthcare, Financials, Consumer Discretionary, Consumer Staples
-
Energy, Industrials, Utilities, Real Estate, Materials, Communication Services
Correlation Awareness
Highly correlated positions amplify risk. Check correlations before adding:
Pair Typical Correlation Risk
AAPL + MSFT + GOOGL 0.7-0.9 Concentrated large-cap tech
BTC + ETH + SOL 0.8-0.95 Concentrated crypto (moves together)
SPY + QQQ 0.9+ Nearly identical exposure
Stocks + Bonds -0.2 to 0.3 Genuinely diversifying
Gold + Stocks -0.1 to 0.2 Hedge in crisis
VIX + SPY -0.8 Inverse — VIX as hedge
Rebalancing Rules
-
Calendar: Rebalance quarterly (first trading day of quarter)
-
Threshold: Rebalance when any allocation drifts > 5% from target
-
Tax-aware: Prefer rebalancing via new contributions rather than selling (taxable accounts)
- Cross-Platform Commands
Windows (PowerShell / Git Bash)
Python might be python not python3 on Windows
python -c "import json; ..."
Use forward slashes in file paths or escape backslashes
curl is available via Git Bash, PowerShell, or WSL
Check if market is open (Windows Git Bash)
curl -s "$BASE_URL/v2/clock" -H "APCA-API-KEY-ID: $ALPACA_API_KEY"
-H "APCA-API-SECRET-KEY: $ALPACA_SECRET_KEY" | python -c "
import sys, json
d = json.load(sys.stdin)
print('OPEN' if d['is_open'] else 'CLOSED', '| Next:', d.get('next_open','') or d.get('next_close',''))
"
macOS / Linux
python3 -c "import json; ..."
curl, jq typically available by default
Use jq for JSON processing:
curl -s URL | jq '.equity'
JSON Processing Without jq
Pretty-print JSON
python3 -c "import sys,json; print(json.dumps(json.load(sys.stdin),indent=2))" < file.json
Extract specific field
curl -s URL | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['equity'])"
Parse Alpaca positions into readable table
curl -s "$BASE_URL/v2/positions" $HEADERS | python3 -c " import sys, json positions = json.load(sys.stdin) fmt = '{:<8} {:>6} {:>10} {:>10} {:>12} {:>8}' print(fmt.format('Symbol','Qty','Entry','Current','P/L','P/L pct')) print('-' * 60) for p in positions: print(fmt.format(p['symbol'], p['qty'], float(p['avg_entry_price']), float(p['current_price']), float(p['unrealized_pl']), round(float(p['unrealized_plpc'])*100,2))) "
Calculate RSI from historical bars
curl -s "$DATA_URL/v2/stocks/AAPL/bars?timeframe=1Day&limit=30" $HEADERS | python3 -c " import sys, json data = json.load(sys.stdin) closes = [float(b['c']) for b in data['bars']] changes = [closes[i]-closes[i-1] for i in range(1, len(closes))] gains = [max(c,0) for c in changes[-14:]] losses = [abs(min(c,0)) for c in changes[-14:]] avg_gain = sum(gains)/14 avg_loss = sum(losses)/14 rs = avg_gain/avg_loss if avg_loss > 0 else 999 rsi = 100 - (100/(1+rs)) print(f'RSI(14) = {rsi:.1f}') "
- Pre-Trade Checklist
Before every trade, verify ALL of the following:
PRE-TRADE CHECKLIST
[ ] 1. TREND: What is the higher-timeframe trend? (Daily chart 200 SMA) - Trading WITH the trend? (preferred) - Counter-trend? (requires stronger signal + tighter stops)
[ ] 2. SIGNAL: What specific setup triggered this trade? - Indicator signal (RSI, MACD, etc.) - Pattern (candlestick, chart pattern) - Catalyst (earnings, news, sector rotation)
[ ] 3. ENTRY: Exact entry price or condition - Limit order at specific level? Market order on breakout?
[ ] 4. STOP LOSS: Exact stop price - Based on ATR (2-3x ATR from entry) - Below key support (long) or above key resistance (short) - NEVER wider than 2% of portfolio
[ ] 5. TARGET: Exact take-profit price - Risk/Reward at least 1.5:1 (preferably 2:1+) - At logical resistance (long) or support (short)
[ ] 6. POSITION SIZE: Calculated from risk management rules - Risk amount = Portfolio * 1-2% - Shares = Risk amount / (Entry - Stop) - Total position < 10% of portfolio
[ ] 7. CORRELATION CHECK: Does this overlap with existing positions? - Not adding to concentrated sector exposure - Total portfolio heat (sum of open risk) < 6%
[ ] 8. CATALYST CHECK: Any upcoming events that could gap through stops? - Earnings date? Fed meeting? CPI release? - If yes: reduce size or wait until after event
[ ] 9. MARKET CONTEXT: Is the overall market favorable? - Fear & Greed index level - VIX level (>30 = caution, <15 = complacency risk) - Market trend (SPY vs 200 SMA)
[ ] 10. CONFIDENCE: Rate 1-10 honestly - Below 6? Skip the trade - Record confidence for calibration tracking
- Trade Journal Template
{ "trade_id": "T001", "date_opened": "2025-01-15", "date_closed": null, "symbol": "AAPL", "side": "long", "entry_price": 150.00, "stop_loss": 145.00, "target": 162.00, "position_size": 40, "risk_amount": 200.00, "risk_reward": 2.4, "setup": "Bullish engulfing at 50 EMA + RSI divergence", "confidence": 7, "market_context": "SPY above 200 SMA, VIX at 18, F&G neutral (52)", "pre_trade_thesis": "AAPL pulled back to 50 EMA support, RSI showing bullish divergence, earnings in 3 weeks should provide catalyst. Sector (tech) is leading.", "result": { "exit_price": null, "exit_reason": null, "pnl": null, "pnl_percent": null, "held_days": null, "lessons": null } }
Store trade journals using memory_store for tracking and calibration review.