Skip to main content

CLI tool for plotting financial data and analyzing options

Project description

fplot - Financial Plotting & Options Analysis CLI

PyPI version Python versions

A command-line tool for plotting comparative stock price history and analyzing options contracts.

Installation

From PyPI

pip install grynn-fplot

Or with uv:

uv tool install grynn-fplot

From Source

For development, install the package in editable mode:

make dev

Or install locally:

make install  # Uses uv tool install .

Usage

Stock Plotting

fplot <ticker> [--since <date>] [--interval <interval>]

Examples:

  • fplot AAPL
  • fplot AAPL --since 2020
  • fplot AAPL,TSLA --since "mar 2023"

Options Listing

fplot <ticker> --call                  # List call options (default: 6 months max)
fplot <ticker> --put                   # List put options (default: 6 months max)
fplot <ticker> --call --max 3m         # List calls with 3 month max expiry
fplot <ticker> --put --all             # List all available put options
fplot <ticker> --call --min-dte 1y     # List long-dated calls (min 1 year)
fplot <ticker> --call --filter "dte>1y"  # Filter using time expressions

Examples:

  • fplot AAPL --call
  • fplot TSLA --put --max 3m
  • fplot AAPL --call --all
  • fplot AAPL --call --min-dte 1y # Long-dated calls (1+ year)
  • fplot AAPL --call --min-dte 6m # Calls with 6+ months to expiry
  • fplot AAPL --call --filter "dte>10, dte<50" # 10-50 days to expiry
  • fplot AAPL --call --filter "dte>1y" # Options with 1+ year to expiry

The options output includes pricing and return metrics:

AAPL 225C 35DTE ($5.25, 18.5%)
AAPL 230C 35DTE ($3.10, 25.2%)
AAPL 235C 35DTE ($1.85, 35.1%)

Format: TICKER STRIKE[C|P] DAYS_TO_EXPIRY (price, return_metric)

  • For calls: return_metric is CAGR to breakeven
  • For puts: return_metric is annualized return

Expiry Filtering Options:

  • --max <time>: Filter to show only options expiring within the specified time
    • Examples: 3m (3 months), 6m (6 months), 1y (1 year), 2w (2 weeks), 30d (30 days)
    • Default: 6m (6 months)
  • --min-dte <time>: Minimum days to expiry (useful for long-dated options)
    • Accepts plain days or time expressions: 300, 1y, 1.5y, 6m, 2w
    • Examples: --min-dte 1y (1+ year), --min-dte 6m (6+ months)
    • Note: Using --min-dte automatically enables --all behavior
  • --all: Show all available expiries (overrides --max)

Advanced Filtering with --filter:

The --filter option supports complex filter expressions with logical operators:

  • Syntax:

    • Comma (,) represents AND operation
    • Plus (+) represents OR operation
    • Comparison operators: >, <, >=, <=, =, !=
    • Parentheses for grouping: (expr1 + expr2), expr3
  • Filter Fields:

    • dte: Days to expiry
    • volume: Option volume
    • price: Last price
    • return, ret, ar: Return metric (CAGR for calls, annualized return for puts) - all aliases work
    • strike_pct, sp: Strike percentage above/below spot (positive = above spot, negative = below spot)
    • lt_days: Days since last trade (useful for filtering stale options)
  • Examples:

    • --filter "dte>300" - Options with more than 300 days to expiry
    • --filter "dte>10, dte<50" - Options between 10-50 days (AND operation)
    • --filter "dte<30 + dte>300" - Short-term OR long-dated (OR operation)
    • --filter "sp>5, sp<15" - Strikes 5-15% above current spot price
    • --filter "(dte>300 + dte<30), sp>5" - Complex nested filters
    • --filter "volume>=100" - High volume options
    • --filter "lt_days<=7" - Options traded within last 7 days
    • --filter "ar>50" - Annualized return > 50%
  • Time Values:

    • DTE-style expressions: 1y (365 days), 6m (180 days), 2w (14 days)
    • Duration expressions: 2d15h, 30m, 1d (converted to hours for duration fields)
    • Examples:
      • --filter "dte>1y" - Options with more than 1 year to expiry
      • --filter "dte>6m" - Options with more than 6 months to expiry
      • --filter "lt_days<=7" - Options traded in the last week

Options data is cached for 1 hour to improve performance and reduce API calls.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grynn_fplot-0.3.1.tar.gz (130.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grynn_fplot-0.3.1-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

Details for the file grynn_fplot-0.3.1.tar.gz.

File metadata

  • Download URL: grynn_fplot-0.3.1.tar.gz
  • Upload date:
  • Size: 130.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for grynn_fplot-0.3.1.tar.gz
Algorithm Hash digest
SHA256 269dafb28f6c9938153b3ae115d8c7cee770fa20f264dc97d653f721de6b5eb8
MD5 cfb48b0242fc62e6d0a9a1920cd93351
BLAKE2b-256 ee252c234f1946da33a87d7cccecb5633089bbe82b4dea18e17ef11adac4e8df

See more details on using hashes here.

Provenance

The following attestation bundles were made for grynn_fplot-0.3.1.tar.gz:

Publisher: publish.yml on Grynn/grynn_cli_fplot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grynn_fplot-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: grynn_fplot-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 33.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for grynn_fplot-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2dc35b102c670d73011262fa2f2dc885934cbc0d0b68e6b0dfb511f848984e96
MD5 b3933a9bd782951f773a6a46cb93c297
BLAKE2b-256 78d34deb763935b6248ccdd6ca38806dba3a6450a69a61f0d4e55265e3fe37f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for grynn_fplot-0.3.1-py3-none-any.whl:

Publisher: publish.yml on Grynn/grynn_cli_fplot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page