CLI Usage Examples

This section provides comprehensive examples of how to use the Portfolio Toolkit command-line interface (CLI). The CLI has been built using the Click framework for an intuitive and user-friendly experience.

Installation

Install the package using pip:

pip install portfolio-toolkit

After installation, you can access the CLI directly:

# View available commands
portfolio-toolkit --help

# Check version
portfolio-toolkit --version

Creating Your Portfolio File

Before using the CLI commands, you need to create a portfolio JSON file that describes your investments. For detailed information about the portfolio file format, see Portfolio JSON Format.

Here’s a basic example of a portfolio file:

{
  "name": "My Investment Portfolio",
  "currency": "USD",
  "account": [
    {
      "date": "2023-01-15",
      "type": "deposit",
      "amount": 10000,
      "currency": "USD"
    }
  ],
  "assets": [
    {
      "ticker": "AAPL",
      "transactions": [
        {
          "date": "2023-01-20",
          "type": "buy",
          "quantity": 50,
          "price": 150.25,
          "currency": "USD"
        }
      ]
    },
    {
      "ticker": "MSFT",
      "transactions": [
        {
          "date": "2023-02-10",
          "type": "buy",
          "quantity": 30,
          "price": 280.50,
          "currency": "USD"
        }
      ]
    }
  ]
}

Save this as portfolio.json to use with the examples below.

Available Commands

The CLI is organized around portfolio analysis commands. Here are the main command groups and their usage:

Portfolio Transactions

List and export transaction data from your portfolio.

List asset transactions:

# Show all asset transactions
portfolio-toolkit portfolio transactions portfolio.json

# Export asset transactions to CSV
portfolio-toolkit portfolio transactions portfolio.json --output transactions.csv

List cash transactions:

# Show cash account transactions (deposits, withdrawals)
portfolio-toolkit portfolio transactions portfolio.json --cash

# Export cash transactions to CSV
portfolio-toolkit portfolio transactions portfolio.json --cash --output cash_transactions.csv

Example output:

📊 Portfolio asset transactions
============================================================
ticker    date        type  quantity     price currency
AAPL   2023-01-20     buy      50.0    150.25      USD
MSFT   2023-02-10     buy      30.0    280.50      USD

Portfolio Positions

View current portfolio positions and create visualizations.

Show current positions:

# Show positions for a specific date
portfolio-toolkit portfolio positions portfolio.json 2025-07-30

Position visualizations:

# Create a pie chart of current positions
portfolio-toolkit portfolio positions portfolio.json 2025-07-30 --plot

# Group positions by country
portfolio-toolkit portfolio positions portfolio.json 2025-07-30 --country

# Group positions by sector
portfolio-toolkit portfolio positions portfolio.json 2025-07-30 --sector

Example output:

📊 Portfolio Positions as of 2025-07-30
============================================================
Ticker  Quantity  Current Price  Market Value  % of Portfolio
AAPL         50         208.62      10,431.00           55.2%
MSFT         30         445.91      13,377.30           44.8%
============================================================
Total Portfolio Value: $23,808.30

Performance Analysis

Analyze portfolio performance across different time periods.

Basic performance analysis:

# Compare returns over the last 4 weeks (default)
portfolio-toolkit portfolio performance portfolio.json

Customized time periods:

# Last 4 weeks (explicit)
portfolio-toolkit portfolio performance portfolio.json --period-type weeks -n 4

# Last 6 months
portfolio-toolkit portfolio performance portfolio.json --period-type months -n 6

# Last 6 quarters
portfolio-toolkit portfolio performance portfolio.json --period-type quarters -n 6

Export performance data:

# Export returns to CSV file
portfolio-toolkit portfolio performance portfolio.json --output performance.csv

Display options:

# Show percentage returns (default)
portfolio-toolkit portfolio performance portfolio.json --display return

# Show absolute position values
portfolio-toolkit portfolio performance portfolio.json --display value

Example output:

📊 Performance Summary - Last 4 Weeks
============================================================
        W27 2025    W28 2025    W29 2025    W30 2025
AAPL    -           3.33%       2.86%       1.92%
MSFT    -           -1.25%      4.17%       2.10%
============================================================
Note: Percentage returns vs previous period

Portfolio Evolution

Visualize how your portfolio has evolved over time.

# Plot portfolio evolution chart
portfolio-toolkit portfolio evolution portfolio.json

This command creates a time-series chart showing your portfolio’s value evolution, including:

  • Total portfolio value over time

  • Individual asset performance

  • Cash position changes

  • Overall return trends

Tax Reporting

Generate tax reports for a specific year.

# Generate tax report for 2025
portfolio-toolkit portfolio tax-report portfolio.json 2025

Example output:

📊 Tax Report for 2025
============================================================
Realized Gains/Losses:

Asset    Sale Date    Quantity  Buy Price  Sale Price  Gain/Loss
AAPL   2025-06-15         10     150.25     180.50      +302.50
MSFT   2025-09-20          5     280.50     275.00       -27.50
============================================================
Total Realized Gain: +$275.00

Command Reference

Complete command reference with all available options:

portfolio transactions

Usage: portfolio-toolkit portfolio transactions [OPTIONS] FILE

Show portfolio transactions

Options:
  --output PATH  Save results to CSV file instead of printing to console
  --cash         Show cash transactions instead of asset transactions
  --help         Show this message and exit

portfolio positions

Usage: portfolio-toolkit portfolio positions [OPTIONS] FILE DATE

Show portfolio positions for a specific date

Options:
  --plot     Create pie chart visualization
  --country  Group positions by country
  --sector   Group positions by sector
  --help     Show this message and exit

portfolio performance

Usage: portfolio-toolkit portfolio performance [OPTIONS] FILE

Show performance summary across multiple periods

Options:
  --display [return|value]        Display mode: returns or values [default: return]
  -n, --periods INTEGER          Number of periods to analyze [default: 4]
  --period-type [weeks|months|quarters|years]  Period type [default: weeks]
  --output PATH                  Save results to CSV file
  --help                         Show this message and exit

portfolio evolution

Usage: portfolio-toolkit portfolio evolution [OPTIONS] FILE

Plot portfolio evolution over time

Options:
  --help  Show this message and exit

portfolio tax-report

Usage: portfolio-toolkit portfolio tax-report [OPTIONS] FILE YEAR

Generate tax report for a specific year

Options:
  --help  Show this message and exit

Development Usage

For development purposes, you can run commands using the module directly:

# Using the module directly (for development)
python -m portfolio_toolkit.cli.cli portfolio transactions portfolio.json
python -m portfolio_toolkit.cli.cli portfolio positions portfolio.json 2025-07-30
python -m portfolio_toolkit.cli.cli portfolio performance portfolio.json
python -m portfolio_toolkit.cli.cli portfolio tax-report portfolio.json 2025

Common Workflows

Daily Portfolio Check:

# Check current positions
portfolio-toolkit portfolio positions portfolio.json $(date +%Y-%m-%d)

# Check recent performance
portfolio-toolkit portfolio performance portfolio.json --period-type weeks -n 2

Monthly Review:

# Monthly performance analysis
portfolio-toolkit portfolio performance portfolio.json --period-type months -n 6

# Export data for spreadsheet analysis
portfolio-toolkit portfolio transactions portfolio.json --output monthly_transactions.csv
portfolio-toolkit portfolio performance portfolio.json --output monthly_performance.csv

Tax Season Preparation:

# Generate tax report
portfolio-toolkit portfolio tax-report portfolio.json 2025

# Export all transactions for tax software
portfolio-toolkit portfolio transactions portfolio.json --output tax_transactions.csv

Portfolio Analysis Session:

# Comprehensive analysis
portfolio-toolkit portfolio positions portfolio.json $(date +%Y-%m-%d) --plot
portfolio-toolkit portfolio performance portfolio.json --period-type quarters -n 4
portfolio-toolkit portfolio evolution portfolio.json

Getting Help

For more help with any command:

# General help
portfolio-toolkit --help

# Portfolio commands help
portfolio-toolkit portfolio --help

# Specific command help
portfolio-toolkit portfolio transactions --help
portfolio-toolkit portfolio positions --help
portfolio-toolkit portfolio performance --help

Error Handling

The CLI provides helpful error messages for common issues:

File not found:

$ portfolio-toolkit portfolio positions missing.json 2025-07-30
Error: Portfolio file 'missing.json' not found.

Invalid date format:

$ portfolio-toolkit portfolio positions portfolio.json 07-30-2025
Error: Invalid date format. Use YYYY-MM-DD format.

Missing arguments:

$ portfolio-toolkit portfolio positions portfolio.json
Usage: portfolio-toolkit portfolio positions [OPTIONS] FILE DATE
Error: Missing argument 'DATE'.

For more detailed information about portfolio file formats and data structures, see the Portfolio JSON Format documentation.