Last reorganized: December 11, 2025
This directory contains all outputs from the trading analysis system, organized into a structured hierarchy for easy navigation and maintenance.
output/
├── analysis/ - Analysis and screening results
│ ├── screening/ - Stock screening results
│ ├── quantitative/ - Quantitative factor analysis
│ ├── technical/ - Technical analysis
│ └── red-flags/ - Red flag risk analysis
│
├── research/ - Stock research and analysis
│ └── stocks/ - One folder per ticker
│ ├── AAPL/ - All AAPL-related files
│ ├── PLTR/ - All PLTR-related files
│ └── ... - 50+ ticker folders
│
├── market-data/ - Market data and snapshots
│ ├── snapshots/ - Market snapshots by month
│ │ ├── 2025-10/
│ │ ├── 2025-11/
│ │ └── 2025-12/
│ ├── finnhub/ - Raw Finnhub API data
│ └── yfinance/ - Raw yFinance data
│
├── strategies/ - Trading strategies
│ ├── momentum/ - Momentum desk playbooks
│ │ └── 2025-12/
│ ├── aggressive/ - Aggressive strategies
│ │ └── 2025-12/
│ ├── ultra-aggressive/ - Ultra-aggressive strategies
│ │ └── 2025-12/
│ ├── value/ - Value investing plans
│ └── weekly/ - Weekly strategy documents
│
├── portfolios/ - Portfolio data
│ ├── snapshots/ - Portfolio snapshots by month
│ │ └── 2025-12/
│ ├── allocations/ - Allocation models
│ └── recommendations/ - Portfolio recommendations
│
├── trading-desk/ - Trading desk decisions
│ ├── final-decisions/
│ └── executive-summaries/
│
├── reports/ - Custom reports
└── archive/ - Archived files
Location: analysis/
screening/ - Screening results and candidate lists
screening_results.csv - Main screening outputfinal_shortlist.csv - Filtered candidatesscreen-results-*.md - Screening reports with datesquantitative/ - Quantitative factor analysis and scoring
quantitative_analysis.json - Factor scoresquant_factor_scores.json - Individual factor metricstechnical/ - Technical analysis results
technical_analysis.json - Technical indicators (RSI, MACD, etc.)red-flags/ - Risk analysis and catalyst tracking
red_flag_analysis.json - Risk flags for each tickercatalyst_analysis.csv - Upcoming catalysts and eventsLocation: research/stocks/<TICKER>/
Each ticker has its own folder containing all related files:
{ticker}_research*.md, {ticker}_research*.json){ticker}_bull_case.md){ticker}_bear_case.md){ticker}_fundamental.md, Graham analysis){ticker}_sentiment.md){ticker}_data_summary.md)Example: All Palantir files are in research/stocks/PLTR/
Location: market-data/
snapshots/YYYY-MM/ - Monthly market snapshots
market_snapshot_20251211_073658.jsonfinnhub/ - Raw Finnhub API data
{ticker}_finnhub_data.json - Company profiles, metricsall_finnhub_data.json - Aggregated datayfinance/ - Raw yFinance data
{ticker}_yfinance_data.json - Historical prices, fundamentalsall_yfinance_data.json - Aggregated dataLocation: strategies/<type>/YYYY-MM/
momentum/ - Momentum trading desk playbooks
{date}-momentum-desk-{team-name}.md20251210-momentum-desk-lunar-penguins.mdaggressive/ - Aggressive trading strategies
{date}-aggressive-{team-name}.mdultra-aggressive/ - Ultra-aggressive strategies
{date}-ultra-aggressive-{team-name}.mdvalue/ - Value investing plans
weekly/ - Weekly strategy documents
weekly-strategy-{date}.mdLocation: portfolios/
snapshots/YYYY-MM/ - Monthly portfolio snapshots
portfolio_snapshot_20251207_140534.jsonallocations/ - Portfolio allocation models
quantitative_portfolio_allocation_final.mdquantitative_allocation_report_dec7.mdrecommendations/ - Portfolio recommendations
recommended_portfolio.csv - Recommended holdingsportfolio_recommendation_dec6_2025.jsonportfolio_data.json - Historical portfolio dataLocation: trading-desk/
final-decisions/ - Final trading decisions
ultra-aggressive/ - Ultra-aggressive portfolio decisionsstocks/{TICKER}/ - Ticker-specific trading desk analysesexecutive-summaries/ - Quick reference documents
EXECUTIVE_SUMMARY_ONE_PAGE.mdTRADE_CARD_QUICK_REFERENCE.txtThe PM library provides helper methods to get the correct output paths:
from pm.config import TradingConfig
config = TradingConfig.from_yaml("config.yaml")
# Get analysis directory
analysis_dir = config.output.get_analysis_dir("screening")
# Returns: output/analysis/screening/
# Get research directory for a specific ticker
research_dir = config.output.get_research_dir("AAPL")
# Returns: output/research/stocks/AAPL/
# Get market data directory with month
market_dir = config.output.get_market_data_dir("snapshots", "2025-12")
# Returns: output/market-data/snapshots/2025-12/
# Get strategy directory with month
strategy_dir = config.output.get_strategy_dir("momentum", "2025-12")
# Returns: output/strategies/momentum/2025-12/
# Get portfolio directory
portfolio_dir = config.output.get_portfolio_dir("snapshots", "2025-12")
# Returns: output/portfolios/snapshots/2025-12/
The PM CLI automatically uses the new structure:
# Research - automatically creates ticker folder
uv run pm research AAPL
# Saves to: output/research/stocks/AAPL/aapl_research_20251211_123456.md
# Market snapshot - automatically organizes by month
uv run pm market
# Saves to: output/market-data/snapshots/2025-12/market_snapshot_20251211_123456.json
# Portfolio - automatically organizes by month
uv run pm portfolio AAPL NVDA 10000
# Saves to: output/portfolios/snapshots/2025-12/portfolio_snapshot_20251211_123456.json
# Screening - saves to analysis/screening/
uv run pm screen --universe tickers.txt
# Saves to: output/analysis/screening/screening_results.csv
# Quantitative analysis
uv run pm analyze --input screening_results.csv
# Saves to: output/analysis/quantitative/quantitative_analysis.json
# Technical analysis
uv run pm technical -t AAPL -t NVDA
# Saves to: output/analysis/technical/technical_analysis.json
# Red flag checks
uv run pm check -t AAPL
# Saves to: output/analysis/red-flags/red_flag_analysis.json
Slash commands reference the new paths:
/screen - Saves to output/analysis/screening/screen-results-{DATE}.md
/momentum-desk - Saves to output/strategies/momentum/{YYYY-MM}/
/weekly-analysis - Saves to output/strategies/{type}/{YYYY-MM}/
YYYYMMDD_HHMMSS formatYYYY-MM-DD formatAAPL_research_20251211_123456.mdmarket_snapshot_20251211_073658.json2025-12-11-momentum-desk-team-name.mdTime-series data (market snapshots, portfolio snapshots, strategies) are organized by year-month:
market-data/snapshots/
├── 2025-10/
├── 2025-11/
└── 2025-12/
├── market_snapshot_20251207_165717.json
├── market_snapshot_20251210_203914.json
└── market_snapshot_20251211_073658.json
This keeps folders manageable as files accumulate over time.
scripts/migrate_output_structure.shoutput_backup_20251211_*/# All screening results
ls -la output/analysis/screening/
# All AAPL research
ls -la output/research/stocks/AAPL/
# December 2025 market snapshots
ls -la output/market-data/snapshots/2025-12/
# December 2025 momentum strategies
ls -la output/strategies/momentum/2025-12/
All files for a ticker are in one place:
ls -la output/research/stocks/PLTR/
Time-series files are organized by YYYY-MM:
ls -la output/market-data/snapshots/2025-12/
ls -la output/strategies/momentum/2025-12/
Consider archiving files older than 90 days:
# Move old snapshots to archive
find output/market-data/snapshots -name "*.json" -mtime +90 -exec mv {} output/archive/ \;
Compress old strategy documents:
# Compress strategies older than 30 days
find output/strategies -name "*.md" -mtime +30 -exec gzip {} \;
Remove duplicate or temporary files periodically:
# Find duplicate files
fdupes -r output/
# Remove temporary files
find output/ -name "*.tmp" -delete
find output/research/stocks/ -name "*{TICKER}*"find output/ -name "*{pattern}*"If a script uses old paths like output/screening_results.csv, update to:
output/analysis/screening/screening_results.csv
Or use the config methods:
config.output.get_analysis_dir("screening") / "screening_results.csv"
Directories are auto-created when files are saved. If manually creating:
mkdir -p output/analysis/screening
mkdir -p output/research/stocks/TICKER
mkdir -p output/market-data/snapshots/2025-12
For questions or issues with the output structure, check:
scripts/migrate_output_structure.shpm/config.py.claude/plans/velvet-launching-blanket.md