Skip to content

Find Entry Candidates - 5 New Positions

Created: 2025-10-28 Goal: Find 5 stocks matching trend following entry criteria Time Required: 30-45 minutes


🎯 Entry Criteria Reminder

Need 2+ of 3 criteria:

  1. Price > 20-day MA AND 50-day MA (uptrend)
  2. RSI 50-70 OR ADX > 25 (momentum)
  3. Volume > 20-day average (institutional buying)

Optional filters: - Sector strength (stock outperforming sector) - Market environment (SPY > 50-day MA) - Price range: $2-500 (avoid penny stocks and mega-expensive)


🛠️ Screening Tools (Choose One)

Setup (5 minutes, one-time):

  1. Go to: https://www.tradingview.com/screener/
  2. Click "Filters"
  3. Add these filters:

Price & Volume: - Price: between $2 and $500 - Volume: > 500,000 (liquid stocks) - Average Volume (30d): > 500,000

Technical Indicators: - MA20 Simple: Price > MA20 - MA50 Simple: Price > MA50 - RSI (14): between 50 and 70 - Volume: > SMA Volume 20

  1. Click "Screener" → Save as "Trend Following"
  2. Review results (typically 50-200 stocks)

Manual check (for top 10 results): - Check ADX > 25 (if RSI not in range) - Check recent price action (clean uptrend?) - Check sector strength


Option 2: ThinkorSwim (Schwab/TD Ameritrade)

Setup:

  1. Open ThinkorSwim desktop app
  2. Go to: Tools → Stock Hacker
  3. Add filters:
Price: $2 to $500
Volume: > 500,000
Price > SMA(20)
Price > SMA(50)
RSI(14) between 50 and 70
Volume > SMA(20, volume)
  1. Run scan
  2. Sort by "% Above MA50" (strongest trends first)
  3. Review top 20 results

Option 3: Finviz (FREE)

Quick screening:

  1. Go to: https://finviz.com/screener.ashx
  2. Select filters:

Descriptive: - Average Volume: Over 500K

Technical: - Price: Over $2 - 20-Day Simple Moving Average: Price above SMA20 - 50-Day Simple Moving Average: Price above SMA50 - RSI (14): 50 to 70 - Volume: Above Average

  1. Click "Filters" → Review results
  2. Export list (free: 20 stocks, elite: all)

Option 4: Python Screener (Automated)

cd ~/mem-agent-mcp

# Create screener script
cat > /tmp/screen_entries.py << 'EOF'
#!/usr/bin/env python3
"""
Trend Following Stock Screener
Finds stocks matching entry criteria
"""
import yfinance as yf
import pandas as pd
import numpy as np
from datetime import datetime, timedelta

# Universe: S&P 500 + popular growth stocks
# (In production, use full universe or sector-specific lists)
symbols = [
    # Tech
    'NVDA', 'AMD', 'MSFT', 'AAPL', 'GOOGL', 'META', 'TSLA', 'NFLX',
    # Crypto-related
    'COIN', 'MARA', 'RIOT', 'CLSK', 'MSTR',
    # Healthcare
    'LLY', 'JNJ', 'UNH', 'PFE', 'ABBV',
    # Finance
    'JPM', 'BAC', 'GS', 'MS', 'C',
    # Energy
    'XOM', 'CVX', 'COP', 'SLB', 'OXY',
    # Add more sectors...
]

print("Screening for trend following candidates...")
print("=" * 80)

candidates = []

for symbol in symbols:
    try:
        ticker = yf.Ticker(symbol)
        hist = ticker.history(period="3mo")

        if len(hist) < 50:
            continue

        # Calculate indicators
        hist['SMA20'] = hist['Close'].rolling(20).mean()
        hist['SMA50'] = hist['Close'].rolling(50).mean()
        hist['Volume_SMA20'] = hist['Volume'].rolling(20).mean()

        # RSI calculation
        delta = hist['Close'].diff()
        gain = (delta.where(delta > 0, 0)).rolling(14).mean()
        loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
        rs = gain / loss
        hist['RSI'] = 100 - (100 / (1 + rs))

        # Latest values
        latest = hist.iloc[-1]
        price = latest['Close']
        sma20 = latest['SMA20']
        sma50 = latest['SMA50']
        rsi = latest['RSI']
        volume = latest['Volume']
        avg_volume = latest['Volume_SMA20']

        # Check criteria
        criteria_met = 0
        reasons = []

        # Criterion 1: Price > MA20 and MA50
        if price > sma20 and price > sma50:
            criteria_met += 1
            reasons.append("✅ Uptrend")

        # Criterion 2: RSI 50-70
        if 50 <= rsi <= 70:
            criteria_met += 1
            reasons.append(f"✅ RSI {rsi:.1f}")

        # Criterion 3: Volume > avg
        if volume > avg_volume:
            criteria_met += 1
            reasons.append("✅ Volume")

        # Need 2+ criteria
        if criteria_met >= 2:
            candidates.append({
                'symbol': symbol,
                'price': price,
                'sma20': sma20,
                'sma50': sma50,
                'rsi': rsi,
                'volume_ratio': volume / avg_volume,
                'criteria_met': criteria_met,
                'reasons': ', '.join(reasons)
            })

    except Exception as e:
        continue

# Sort by criteria met, then RSI
candidates.sort(key=lambda x: (x['criteria_met'], -abs(60 - x['rsi'])), reverse=True)

print(f"\nFound {len(candidates)} candidates:\n")
print("=" * 80)

for i, c in enumerate(candidates[:10], 1):  # Top 10
    print(f"{i}. {c['symbol']:6s} @ ${c['price']:7.2f}")
    print(f"   Criteria: {c['criteria_met']}/3 | {c['reasons']}")
    print(f"   SMA20: ${c['sma20']:.2f} | SMA50: ${c['sma50']:.2f}")
    print(f"   RSI: {c['rsi']:.1f} | Vol Ratio: {c['volume_ratio']:.2f}x")
    print()

print("=" * 80)
print("\nNext: Manually review charts for these top 10 candidates")
EOF

# Install yfinance if needed
uv add yfinance

# Run screener
uv run python3 /tmp/screen_entries.py

📊 Manual Chart Review (Critical Step!)

For each candidate from screener:

1. Visual Chart Check (TradingView)

Go to: https://www.tradingview.com/chart/

  1. Enter symbol (e.g., NVDA)
  2. Add indicators:
  3. SMA(20) - blue line
  4. SMA(50) - red line
  5. RSI(14) - below chart
  6. Volume - bottom pane

  7. Look for:

  8. ✅ Clean uptrend (higher highs, higher lows)
  9. ✅ Price well above MAs (not just touching)
  10. ✅ Recent volume surge
  11. ❌ Avoid: Choppy sideways action
  12. ❌ Avoid: Just broke resistance (wait for pullback)
  13. ❌ Avoid: Parabolic move (RSI >80)

2. Entry Timing

Wait for pullback if: - RSI > 70 (overbought) - Price >10% above SMA20 (extended) - Recent vertical move (gap up 5%+)

Enter now if: - RSI 55-65 (sweet spot) - Price 2-5% above SMA20 (not extended) - Consolidating after breakout

3. Risk Assessment

Before entering, calculate:

Entry: [Current price]
Stop: Entry × 0.95 (-5%)
Target: Entry × 1.15 (+15%)
Position size: (Account × 0.02) / 0.05

Example (NVDA at $450):

Entry: $450
Stop: $427.50 (-5%, risk $22.50/share)
Target: $517.50 (+15%, reward $67.50/share)
R/R: 3:1 ✅

Alpaca Paper ($100k × 0.02 = $2k risk):
Position: $2,000 / 0.05 = $40,000
Shares: $40,000 / $450 = 88 shares
Capped at: $5,000 = 11 shares max
Actual risk: 11 × $22.50 = $247.50


🎯 Example: 5 Candidates (As of Oct 28, 2025)

Note: These are examples. Run fresh screen for current candidates!

Candidate 1: NVDA (Nvidia)

  • Price: $450
  • Criteria: 3/3 ✅
  • Price > MA20 ($430) ✅
  • Price > MA50 ($410) ✅
  • RSI: 62 ✅
  • Volume: Above avg ✅
  • Entry: Wait for pullback to $440-445
  • Stop: $418 (-5%)
  • Target: $506 (+15%)

Candidate 2: COIN (Coinbase)

  • Price: $215
  • Criteria: 2/3 ✅
  • Uptrend ✅
  • RSI: 58 ✅
  • Volume: Below avg ❌
  • Entry: Monitor for volume surge
  • Stop: $204 (-5%)
  • Target: $247 (+15%)

Candidate 3: AVGO (Broadcom)

  • Price: $365 (you already own this!)
  • Status: Currently +3.1%
  • Action: Hold for target ($407)

Candidate 4: LLY (Eli Lilly)

  • Price: $825
  • Criteria: 2/3 ✅
  • Uptrend ✅
  • RSI: 54 ✅
  • Volume: Average ⚠️
  • Entry: $820-830 range
  • Stop: $783 (-5%)
  • Target: $946 (+15%)

Candidate 5: META (Meta Platforms)

  • Price: $575
  • Criteria: 3/3 ✅
  • Strong uptrend ✅
  • RSI: 65 ✅
  • Volume surge ✅
  • Entry: Current or pullback to $565
  • Stop: $546 (-5%)
  • Target: $661 (+15%)

✅ Entry Checklist (Before Placing Order)

For each candidate:

  • [ ] Passes 2+ entry criteria
  • [ ] Chart looks clean (no choppy action)
  • [ ] Not overextended (RSI <75)
  • [ ] Stop loss calculated (entry × 0.95)
  • [ ] Profit target calculated (entry × 1.15)
  • [ ] Position size calculated (2% risk rule)
  • [ ] Within max position limit ($5k paper, $500 live, $1k Schwab)
  • [ ] Maintains 50%+ cash reserve
  • [ ] Stop loss will be set IMMEDIATELY after entry
  • [ ] Trade documented in log

🚨 Common Screening Mistakes

❌ Mistake #1: "This stock moved 20%, I should chase it"

Reality: You'll buy at the top of the move. Fix: Wait for pullback to MA20.

❌ Mistake #2: "Only 1 criterion met but it looks good"

Reality: "Looks good" is not a criterion. Fix: Strict 2+ criteria or skip.

❌ Mistake #3: "I'll check fundamentals first"

Reality: This is a technical strategy, fundamentals don't matter. Fix: Trust the technicals.

❌ Mistake #4: "I found 20 great setups!"

Reality: You can't track 20 positions effectively. Fix: Pick top 5, enter 1-2 per week max.


📅 Screening Schedule

Daily (10 min): - Check existing positions for target/stop hits - Review watchlist for entry signals

Weekly (30 min): - Run full screener - Update watchlist with new candidates - Remove stale candidates

Monthly: - Review screening process - Adjust criteria if needed (after 30+ trades)


🎯 Your Action Plan

Today (45 minutes):

  1. Choose screening tool (TradingView recommended)
  2. Run initial screen (get 20-50 candidates)
  3. Chart review top 10 (visual inspection)
  4. Select 5 best (cleanest trends)
  5. Calculate entries/stops/targets for each
  6. Add to watchlist (for monitoring)

This Week:

  1. Enter 1-2 positions (don't rush all 5 at once)
  2. Set stops immediately
  3. Document entries in trade log
  4. Monitor daily

Patience: You don't need to enter all 5 today. Wait for best setups.


📝 Watchlist Template

Create: ~/Documents/memory/entities/trading/watchlist-2025.md

# Trend Following Watchlist

## Active Candidates

### NVDA - Nvidia
- **Screened**: 2025-10-28
- **Price**: $450
- **Criteria**: 3/3 ✅
- **Entry Target**: $440-445 (waiting for pullback)
- **Stop**: $418
- **Target**: $506
- **Status**: Monitoring

### COIN - Coinbase
- **Screened**: 2025-10-28
- **Price**: $215
- **Criteria**: 2/3 (need volume)
- **Entry Target**: $215-220 (if volume picks up)
- **Stop**: $204
- **Target**: $247
- **Status**: Waiting for volume

[Add 3 more...]

## Rejected

### TSLA - Tesla
- **Screened**: 2025-10-28
- **Price**: $220
- **Reason**: Only 1/3 criteria (below MA50)
- **Status**: Skip

Status: 🎯 Ready to screen Time: 45 minutes for initial screening Goal: Find 5 solid candidates, enter 1-2 this week