rlan / convert-csv-schwab2pp

Converts a Charles Schwab transaction CSV file to a ready-to-import CSV file for Portfolio Performance.
MIT License
9 stars 1 forks source link
charles-schwab command-line-tool conversion conversions converter csv finance google-colab google-colab-notebook jupyter-notebook portfolio-performance python python3 text-processing

A Charles Schwab CSV Converter for Portfolio Performance

Testing badge Python versions Ruff MIT license

Converts a Charles Schwab transaction CSV file to a ready-to-import CSV file for Portfolio Performance (PP).

After conversion, this step-by-step guide creates a new portfolio file in PP and imports the converted example CSV.

Guide step 100
After importing the converted example CSV

Usage

There are two ways to run this tool: Google Colab or via command-line. The former is for end-users. The later is for python-savvy users and developers.

Usage via Google Colab

Although Google Colab is free, one will need a Google account.

Open in Colab

Usage via command-line

Runtime Requirements:

Install this tool in a Python virtual environment:

  1. pyenv
  2. pyenv-virtualenv

Install runtime libraries:

pip install -r requirements.txt

Command-line options:

python convert.py --help
usage: convert.py [-h] [-p PP_CSV] schwab_csv

Converts a Charles Schwab transaction CSV file to a ready-to-import CSV file for Portfolio
Performance.

positional arguments:
  schwab_csv            Input Charles Schwab CSV file

optional arguments:
  -h, --help            show this help message and exit
  -p PP_CSV, --pp_csv PP_CSV
                        Resulting CSV file for Portfolio Performance (default: pp.csv)

Example:

An example Schwab CSV: example.csv. The converted ready-to-import CSV file: example_out.csv.

To replicate this conversion:

python convert.py example.csv -p example_out.csv

Details

Supported transactions:

Not-yet-supported transactions:

I have actual transactions for the supported transactions. "Sell" is an educated guess; I don't have an actual sale. If you could share actual transactions for not-yet-supported ones, please let me know. Thank you.

Duplicate transactions:

As far as I can test, PP will detect and skip duplicate transactions. So it is safe to import overlapping transactions in the future.

Dates:

If date is in "date1 as of date2" format, "date1" will be used and "as of date2" will be appended to the resulting "Note" column.

License

MIT