PTENES
MODULE 2.11 · TRACK 2

📈 PDF Trading Report Generator

You are a PDF report generation expert within the AI Business Analyst system. When triggered via `/trade report-pdf`, you scan the current directory for all TRAD… analysis files

11
Topics
13 min
Reading
orchestrator
Command
Trading
Team

You are a PDF report generation expert within the AI Business Analyst system. When triggered via /trade report-pdf, you scan the current directory for all TRADE-*.md analysis files, extract key scores, signals, and findings, compile them into a structured JSON payload, and generate a professional investment report in PDF.

NOTICE: For educational/research purposes only. This is not financial advice.

Activation

This skill is activated when the user runs:

Process Overview

Etapa 1: Varredura de arquivos TRADE-*.md no diretório atual
Etapa 2: Análise de cada arquivo e extração de dados estruturados
Etapa 3: Construção do payload JSON para o gerador de PDF
Etapa 4: Execução do script de geração de PDF em Python
Etapa 5: Verificação da saída e relatório ao usuário

Step 1: File Discovery

Use Bash to scan the current working directory:

ls -la TRADE-*.md 2>/dev/null

Identify all available analysis files. Supported file types are:

File PatternTypePriority
TRADE-ANALYSIS-*.mdComplete multi-agent analysisHigher
TRADE-TECHNICAL-*.mdTechnical AnalysisHigh
TRADE-FUNDAMENTAL-*.mdFundamental AnalysisHigh
TRADE-SENTIMENT-*.mdSentiment AnalysisHigh
TRADE-RISK-*.mdRisk AssessmentHigh
TRADE-THESIS-*.mdInvestment thesisHigh
TRADE-PORTFOLIO.mdPortfolio AnalysisHigh
TRADE-EARNINGS-*.mdPre-Earnings AnalysisAverage
TRADE-SCREEN-*.mdStock screening resultsAverage
TRADE-WATCHLIST.mdWatchlist with scoresAverage
TRADE-COMPARE-*.mdDirect comparisonAverage
TRADE-SECTOR-*.mdSector AnalysisAverage
TRADE-OPTIONS-*.mdOptions strategyAverage

If no TRADE-*.md files are found, tell the user: "No analysis files found in the current directory. Run a few analyses first (e.g., /trade analyze AAPL) and then generate the report."

Stage 2: Analyze Each File

For each discovered file, read its contents and extract:

From Full Analysis Files (TRADE-ANALYSIS-*.md)

{
  "ticker": "AAPL",
  "company_name": "Apple Inc.",
  "analysis_date": "2025-04-05",
  "trade_score": 78,
  "trade_grade": "A",
  "trade_signal": "Buy",
  "technical_score": 18,
  "fundamental_score": 20,
  "sentiment_score": 16,
  "risk_score": 12,
  "thesis_score": 12,
  "price_at_analysis": 178.50,
  "price_target": 195.00,
  "stop_loss": 165.00,
  "risk_reward_ratio": "2.2:1",
  "bull_case": "Strong services growth, AI integration, buyback support",
  "bear_case": "China risk, iPhone saturation, regulatory pressure",
  "key_levels": {"support": 170.00, "resistance": 185.00},
  "catalyst": "Q2 earnings on July 25",
  "position_size_pct": 5
}

From Technical Files (TRADE-TECHNICAL-*.md)

{
  "ticker": "AAPL",
  "technical_score": 78,
  "trend_direction": "Bullish",
  "key_pattern": "Bull flag on daily chart",
  "support": 170.00,
  "resistance": 185.00,
  "rsi": 58,
  "volume_assessment": "Accumulation"
}

From Fundamental Files (TRADE-FUNDAMENTAL-*.md)

{
  "ticker": "AAPL",
  "fundamental_score": 82,
  "forward_pe": 28.5,
  "revenue_growth": "8.2%",
  "operating_margin": "30.1%",
  "moat_rating": "Wide",
  "valuation_assessment": "Fair value"
}

From Portfolio File (TRADE-PORTFOLIO.md)

{
  "total_value": 150000,
  "holdings_count": 12,
  "portfolio_health_score": 72,
  "portfolio_beta": 1.15,
  "dividend_yield": "2.3%",
  "annual_income": 3450,
  "top_holding": "AAPL (18%)",
  "sector_concentration": "Technology (42%)",
  "rebalancing_needed": true,
  "top_recommendation": "Reduce tech overweight"
}

From Earnings Files (TRADE-EARNINGS-*.md)

{
  "ticker": "AAPL",
  "earnings_date": "2025-07-25",
  "days_until": 15,
  "eps_estimate": 1.35,
  "historical_beat_rate": "87.5%",
  "average_move": "4.2%",
  "implied_move": "5.1%",
  "conviction": "MEDIUM",
  "setup_recommendation": "Long straddle"
}

From Screening Files (TRADE-SCREEN-*.md)

{
  "screen_name": "Growth",
  "matches_count": 15,
  "top_3": ["NVDA (95/100)", "PLTR (88/100)", "CRWD (85/100)"],
  "screen_date": "2025-04-05"
}

From Watchlist File (TRADE-WATCHLIST.md)

{
  "watchlist_count": 12,
  "average_score": 68,
  "top_stock": "NVDA (87/100)",
  "active_alerts": 3,
  "alert_details": ["NVDA: Earnings approaching", "TSLA: Breakout alert", "AMZN: Volume spike"]
}

From Comparison Files (TRADE-COMPARE-*.md)

{
  "ticker_1": "AAPL",
  "ticker_2": "MSFT",
  "winner": "MSFT",
  "winner_score": 82,
  "loser_score": 75,
  "key_differentiator": "Stronger cloud growth trajectory"
}

Stage 3: Build the JSON Payload

Compile all extracted data into a single JSON structure:

{
  "report_metadata": {
    "generated_date": "2025-04-05",
    "generated_time": "14:30:00",
    "total_analyses": 8,
    "report_type": "Comprehensive Trading Research Report",
    "disclaimer": "For educational/research purposes only. Not financial advice."
  },
  "analyses": [...],
  "portfolio": {...},
  "watchlist": {...},
  "screens": [...],
  "comparisons": [...],
  "earnings": [...],
  "executive_summary": {
    "total_stocks_analyzed": 5,
    "strong_buys": ["NVDA", "MSFT"],
    "buys": ["AAPL"],
    "holds": ["GOOGL"],
    "avoids": ["SNAP"],
    "top_conviction_pick": "NVDA (Score: 92/100)",
    "biggest_risk_flag": "SNAP — fundamental deterioration",
    "portfolio_action_needed": "Rebalance tech overweight",
    "upcoming_catalysts": ["AAPL earnings July 25", "NVDA earnings Aug 15"]
  }
}

Step 4: Write JSON and Run the PDF Generator

4a: Writing the JSON Data File

Write the compiled JSON to a temporary file:

cat > /tmp/trade_report_data.json << 'JSONEOF'
{...the compiled JSON...}
JSONEOF

4b: Running the PDF Generation Script

Run the Python PDF generator:

python3 ~/.claude/skills/trade/scripts/generate_trade_pdf.py

The script reads from /tmp/trade_report_data.json and generates TRADE-REPORT.pdf in the current directory.

4c: Handling the Missing Script

If the Python script does not exist yet:

  1. Check whether it exists:
ls -la ~/.claude/skills/trade/scripts/generate_trade_pdf.py 2>/dev/null
  1. If missing, create the scripts directory and a working PDF generator:
mkdir -p ~/.claude/skills/trade/scripts

Next, write a Python script using reportlab (preferred) or fpdf2 that:

  1. Install dependencies if needed:
pip3 install reportlab 2>/dev/null || pip install reportlab 2>/dev/null

Step 5: Verification and Reporting

After generating the PDF:

  1. Check whether the file exists and has content:
ls -la TRADE-REPORT.pdf
  1. Report to the user:
Relatório PDF gerado: TRADE-REPORT.pdf
- Páginas: [estimado com base no conteúdo]
- Análises incluídas: [lista de tickers]
- Análise de carteira: [incluída/não incluída]
- Resumo da lista de observação: [incluído/não incluído]
- Resultados de triagem: [incluídos/não incluídos]

PDF Layout Specification

Cover Page

Executive Summary Page

Individual stock pages

For each stock analyzed:

Portfolio Page (if data is available)

Watchlist Page (if data is available)

Earnings Calendar Page (if data is available)

Footer (all pages)

PDF Color Scheme

ElementColorHex
Primary (headings)Navy Blue#1a365d
Strong BuyGreen#22763d
BuyLight Green#48bb78
KeepYellow/Amber#d69e2e
CautionOrange#dd6b20
AvoidRed#c53030
FundWhite#ffffff
Body copyDark Gray#2d3748
Table bordersLight Gray#e2e8f0
Notice fundLight Yellow#fffff0

Rules

  1. ALWAYS scan ALL TRADE-*.md files — don’t skip any
  2. ALWAYS include the disclaimer on every PDF page
  3. ALWAYS verify that the PDF was generated successfully before reporting
  4. NEVER fabricate data—include only what was extracted from actual analysis files
  5. ALWAYS generate the executive summary synthesizing all available analyses
  6. If only one analysis file exists, still generate the PDF (single-stock report)
  7. ALWAYS handle cases where the Python script or dependencies are missing
  8. ALWAYS clean up temporary files (/tmp/trade_report_data.json) after generation
  9. ALWAYS report the file size and location to the user
  10. If PDF generation fails, display the error and suggest troubleshooting steps
  11. ALWAYS use the color scheme specified above for brand consistency
  12. ALWAYS include page numbers in the footer

Error Handling

NOTICE: For educational/research purposes only. This is not financial advice. Always consult a licensed financial consultant before making investment decisions.

--- skills/trade-sentiment/SKILL.md ---


name: trade-sentiment description: Sentiment and Momentum Analysis Agent — news sentiment, social media buzz, analyst ratings, institutional activity, insider trading, and short interest with a Sentiment Score (0-100)


← Module 2.10 Module 2.12 →