āš ļø NOT Financial Advice

Educational purposes only. Start with paper trading. You are responsible for compliance with regulations in your jurisdiction.

šŸš€ Starter Guide: Your First Trading Agent in 1 Hour

Start with zero-risk automations and progressively unlock more complexity

šŸ“‹ Your Learning Path

āœ“ Level 1: Morning Market Briefing (15 min, zero risk)
āœ“ Level 2: Watchlist Price Alerts (30 min, zero risk)
āœ“ Level 3: Earnings Calendar Tracker (45 min, zero risk)
ā—‹ Level 4: Technical Indicator Scanner (2 hours, low risk)
ā—‹ Level 5: Paper Trading Bot (4+ hours, zero financial risk)

šŸ“¦ Prerequisites

Before You Start

  • OpenClaw installed and running (openclaw --version)
  • Telegram connected (or your preferred messaging channel)
  • Basic comfort with terminal commands
  • ~1 hour of uninterrupted time for Level 1-3

1Level 1: Morning Market Briefing (15 minutes)

What it does: Every morning at 7am SGT, delivers overnight US market summary, pre-market movers, SGX open preview, and earnings today.

Risk Level: āœ“ Zero Risk (Information only)

Time to complete: 15 minutes

Step 1: Create the Skill

cd ~/.openclaw/workspace/skills
mkdir market-briefing
cd market-briefing

Step 2: Create SKILL.md

# Market Briefing Skill

## Purpose
Generate daily morning market briefing for Singapore timezone.

## Data Sources
- Yahoo Finance (yfinance Python library)
- Investing.com (web scraping)

## Output Format
Deliver to Telegram every weekday at 7:00 AM SGT:
1. US Market Summary (Dow, S&P, Nasdaq overnight performance)
2. Pre-market movers (top 5 gainers/losers)
3. SGX Preview (STI futures, key stocks to watch)
4. Earnings Today (US + SGX)
5. Economic Calendar (today's key data releases)

## Risk Controls
- Information only, no recommendations
- Cite sources for all data
- Flag any data that is delayed or estimated

Step 3: Create the Python Script

#!/usr/bin/env python3
# save as: market_briefing.py

import yfinance as yf
from datetime import datetime
import requests

def get_us_market_summary():
    """Get overnight US market performance"""
    indices = {
        'Dow': '^DJI',
        'S&P 500': '^GSPC',
        'Nasdaq': '^IXIC'
    }
    summary = []
    for name, ticker in indices.items():
        data = yf.Ticker(ticker)
        hist = data.history(period='2d')
        if len(hist) >= 2:
            change = ((hist['Close'].iloc[-1] - hist['Close'].iloc[-2]) / hist['Close'].iloc[-2]) * 100
            summary.append(f"{name}: {hist['Close'].iloc[-1]:,.0f} ({change:+.2f}%)")
    return '\n'.join(summary)

def get_earnings_today():
    """Get today's earnings (simplified - use API in production)"""
    # In production, use Earnings Whispers API or similar
    return "Check earnings calendar API"

if __name__ == '__main__':
    print("šŸŒ… Morning Market Briefing")
    print("=" * 40)
    print(f"Date: {datetime.now().strftime('%Y-%m-%d %H:%M')} SGT\n")
    print("šŸ“ˆ US Market Overnight:")
    print(get_us_market_summary())
    print("\nšŸ’° Earnings Today:")
    print(get_earnings_today())

Step 4: Set Up Cron Job

# Edit crontab
crontab -e

# Add this line (weekday mornings at 7am SGT):
0 7 * * 1-5 cd ~/.openclaw/workspace/skills/market-briefing && python3 market_briefing.py | openclaw send --to telegram --message "stdin"
āœ… Success Criteria You should receive a Telegram message every weekday at 7am with market summary. Test by running the script manually first.

2Level 2: Watchlist Price Alerts (30 minutes)

What it does: Monitors your watchlist every 15 minutes during trading hours. Sends Telegram alerts when price moves ±3% or volume spikes 2x average.

Risk Level: āœ“ Zero Risk (Alerts only, no execution)

Time to complete: 30 minutes

Step 1: Create Your Watchlist

# Create watchlist.txt in your skills directory
# Example:
DBS.SI
UOB.SI
OCBC.SI
AAPL
MSFT
NVDA
TSLA

Step 2: Create Alert Script

#!/usr/bin/env python3
# save as: price_alerts.py

import yfinance as yf
import json
from datetime import datetime

WATCHLIST_FILE = 'watchlist.txt'
STATE_FILE = 'price_state.json'
ALERT_THRESHOLD = 3.0  # percent

def load_watchlist():
    with open(WATCHLIST_FILE) as f:
        return [line.strip() for line in f if line.strip()]

def load_state():
    try:
        with open(STATE_FILE) as f:
            return json.load(f)
    except FileNotFoundError:
        return {}

def save_state(state):
    with open(STATE_FILE, 'w') as f:
        json.dump(state, f)

def check_alerts():
    watchlist = load_watchlist()
    state = load_state()
    alerts = []
    
    for ticker in watchlist:
        try:
            data = yf.Ticker(ticker)
            hist = data.history(period='1d', interval='15m')
            if len(hist) < 2:
                continue
            
            current = hist['Close'].iloc[-1]
            previous = state.get(ticker, {}).get('price', current)
            avg_volume = hist['Volume'].mean()
            current_volume = hist['Volume'].iloc[-1]
            
            # Price change alert
            pct_change = ((current - previous) / previous) * 100
            if abs(pct_change) >= ALERT_THRESHOLD:
                direction = "šŸ“ˆ" if pct_change > 0 else "šŸ“‰"
                alerts.append(f"{direction} {ticker}: {current:.2f} ({pct_change:+.2f}%)")
            
            # Volume spike alert
            if current_volume > 2 * avg_volume:
                alerts.append(f"šŸ”Š {ticker}: Volume spike! {current_volume/1e6:.1f}M (2x avg)")
            
            # Update state
            state[ticker] = {'price': current, 'time': datetime.now().isoformat()}
            
        except Exception as e:
            print(f"Error checking {ticker}: {e}")
    
    save_state(state)
    return alerts

if __name__ == '__main__':
    alerts = check_alerts()
    if alerts:
        message = "🚨 Price Alerts\n\n" + "\n".join(alerts)
        print(message)
        # Pipe to openclaw send or use API
    else:
        print("No alerts")

Step 3: Set Up Cron (Trading Hours Only)

# SGX: 9am-5pm SGT, US: 9:30pm-4am SGT
# Run every 15 minutes during SGX hours:
*/15 9-16 * * 1-5 cd ~/.openclaw/workspace/skills/price-alerts && python3 price_alerts.py | grep -v "No alerts" | openclaw send --to telegram --message "stdin"

# US market hours (9:30pm-4am SGT = 13:30-20:00 UTC):
*/15 13-20 * * 1-5 cd ~/.openclaw/workspace/skills/price-alerts && python3 price_alerts.py | grep -v "No alerts" | openclaw send --to telegram --message "stdin"
āš ļø Important Yahoo Finance has 15-minute delay for SGX stocks. Not suitable for intraday trading. Use for swing trading alerts only.

3Level 3: Earnings Calendar Tracker (45 minutes)

What it does: Tracks earnings dates for your watchlist. Sends pre-earnings research summaries and post-earnings results.

Risk Level: āœ“ Zero Risk (Research only)

Time to complete: 45 minutes

Implementation Overview

  1. Use Earnings Whispers API or scrape earnings calendar sites
  2. Filter for your watchlist stocks
  3. Send pre-earnings briefing (analyst estimates, recent performance)
  4. Send post-earnings results (beat/miss, guidance changes)
āœ… You've Completed Level 3! You now have three zero-risk automations running:
  • āœ“ Morning briefing (7am daily)
  • āœ“ Price alerts (every 15 min during market hours)
  • āœ“ Earnings tracking (as needed)

Ready to move to Level 4? You'll start working with technical indicators.

4Level 4: Technical Indicator Scanner (Coming Next)

What it does: Scans watchlist for RSI oversold/overbought conditions, MACD crossovers, and moving average signals.

Risk Level: ⚔ Low-Medium Risk (Signals only, but may influence trading decisions)

Time to complete: 2-3 hours

Prerequisites: Complete Levels 1-3, comfortable with Python and technical analysis basics

→ View Full Level 4 Guide

5Level 5: Paper Trading Bot (Final Level)

What it does: Executes real trades on Alpaca paper trading account. Tests your strategy with zero financial risk.

Risk Level: āœ“ Zero Financial Risk (Paper trading only)

Time to complete: 4-8 hours (including strategy development and backtesting)

Prerequisites: Complete Levels 1-4, have a tested trading strategy, understand risk management

āš ļø Critical: Before Level 5
  • āœ… Paper trade for at least 3 months before considering live trading
  • āœ… Backtest your strategy against historical data
  • āœ… Implement position limits and daily loss limits
  • āœ… Set up kill switch (Telegram command to halt all trading)
  • āœ… Never skip the paper trading phase

→ View Full Level 5 Guide

šŸŽÆ What's Next?

šŸ–„ļø My Setup (Singapore)

See how I run this on an N150 mini PC with SGX/US market focus

šŸ›”ļø Risk Framework

Security, API key management, kill switches, compliance

šŸ’° Cost Analysis

Compare costs vs TradingView, Bloomberg, paid signal services

Last updated: 2026-03-29 | ← Back to Home