Skip to main content

A Python CLI that does the necessary math to balance two investment funds with a new deposit

Project description

BalanceTwoFunds

A Python CLI that brings balance to your portfolio, your mind, and the universe.


Table of Contents

  1. Requirements
  2. Installation
  3. Examples
    1. Rebalance two funds, no deposit
    2. Rebalance two funds with a deposit
    3. I can't remember which one is fund one and fund two...
  4. Usage
  5. Notes

Requirements

BalanceTwoFunds requires Python 3.6 or later.


Installation

For simplicity's sake, we assume you have Python and pip properly configured and on your machine's path.

Download the latest source distribution or wheel and install it via pip:

pip install <distro/wheel file>

Alternatively, clone/fork the repository, use a terminal to change into its directory, and run

pip install setup.py

Examples

Rebalance two funds, no deposit

Say you have $55 dollars in fund one and $45 in fund two, but you want them to be balanced 50% and 50%.

Issue the following command from your terminal:

C:\some\dir>balancetwofunds 55 .5 45 .5

Which will output the following to your terminal:

╒════════════════╕
│    FUND ONE    │
╞════════════════╡
│  ACTION: SELL  │
│  MOVE: -5.00   │
├────────────────┤
│ Current: 55.00 │
│ Target: 50.00  │
└────────────────┘

╒════════════════╕
│    FUND TWO    │
╞════════════════╡
│  ACTION: BUY   │
│   MOVE: 5.00   │
├────────────────┤
│ Current: 45.00 │
│ Target: 50.00  │
└────────────────┘

Rebalance two funds with a deposit

Let's take the last example, but this time, instead of selling, you simply want to rebalance using a deposit or cash position. For our purposes, let's say we deposited $20.

Use the optional -d or --deposit flag to provide the program with the context:

C:\some\dir>balancetwofunds 55 .5 45 .5 -d 20

Which will output:

╒════════════════╕
│    FUND ONE    │
╞════════════════╡
│  ACTION: BUY   │
│   MOVE: 5.00   │
├────────────────┤
│ Current: 55.00 │
│ Target: 60.00  │
└────────────────┘

╒════════════════╕
│    FUND TWO    │
╞════════════════╡
│  ACTION: BUY   │
│  MOVE: 15.00   │
├────────────────┤
│ Current: 45.00 │
│ Target: 60.00  │
└────────────────┘

I can't remember which one is fund one and fund two...

Add the -n1 and -n2 optional arguments to provide the program with the names of your fund:

C:\some\dir>balancetwofunds 55 .5 -n1 FZROX 45 .5 -n2 FXNAX -d 20

Which will output:

╒════════════════╕
│     FZROX      │
╞════════════════╡
│  ACTION: BUY   │
│   MOVE: 5.00   │
├────────────────┤
│ Current: 55.00 │
│ Target: 60.00  │
└────────────────┘

╒════════════════╕
│     FXNAX      │
╞════════════════╡
│  ACTION: BUY   │
│  MOVE: 15.00   │
├────────────────┤
│ Current: 45.00 │
│ Target: 60.00  │
└────────────────┘

Usage

usage: balancewithdeposit.py [-h] [-v] [-d DEPOSIT] [-n1 FUNDONENAME]
                             [-n2 FUNDTWONAME]
                             fundOneCurrentBalance fundOneTargetPercentage
                             fundTwoCurrentBalance fundTwoTargetPercentage

A Python CLI that does the necessary math to balance two investment funds with
a new deposit.

positional arguments:
  fundOneCurrentBalance
                        The current value of the first fund to be rebalanced
  fundOneTargetPercentage
                        The desired percentage of how much the first fund
                        should contribute to the total balance between the two
                        funds
  fundTwoCurrentBalance
                        The current value of the second fund to be rebalanced
  fundTwoTargetPercentage
                        The desired percentage of how much the second fund
                        should contribute to the total balance between the two
                        funds

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -d DEPOSIT, --deposit DEPOSIT
                        An amount deposited to be accounted for the in the
                        rebalancing
  -n1 FUNDONENAME, --fundOneName FUNDONENAME
                        A name for the first fund to be used in the program
                        output
  -n2 FUNDTWONAME, --fundTwoName FUNDTWONAME
                        A name for the second fund to be used in the program
                        output

Notes

  • This program relies heavily on the Decimal Python standard library. It will provide up to 20 digits of precision.
  • Money values will be rounded to two cents before usage in the program's math.
  • Percentage values will take whatever precision you give them, but they must sum perfectly to one. The program will throw an explicit error if this is not the case.

The contents of this repository are distributed under the generic MIT License.

This program is maintained by Matt Youngberg. Feel free to email him with any issues at matt_youngberg@outlook.com

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

balancetwofunds-1.0.0.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

balancetwofunds-1.0.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file balancetwofunds-1.0.0.tar.gz.

File metadata

  • Download URL: balancetwofunds-1.0.0.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.6

File hashes

Hashes for balancetwofunds-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fb389068eed3990b1bfdeae0fce602898288cd85ea47f5ea8d54d24345a67887
MD5 924132b665afa9ba8bfc22d376b77cda
BLAKE2b-256 80381ac45b806c7e2e24a24b86642c044df8a3d26165314079dbf981d2038e2f

See more details on using hashes here.

File details

Details for the file balancetwofunds-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: balancetwofunds-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.6

File hashes

Hashes for balancetwofunds-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 75f23f140bc183ef4761282461b412e5b3ce4cd020d6428d8048aae8cb57b611
MD5 b1b6ce93591e5e3a6cb31c842e5fa857
BLAKE2b-256 e5fc95312d595b1df7088e84f975fbe8d4dcb827be0dff83a14a4988ccfbebe5

See more details on using hashes here.

Supported by

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