Skip to main content

HPy12C - A pure python implementation of HP-12C financial calculator

Project description

HPy12C

A pure python implementation of HP-12C financial calculator.

Installation

pip install 'hpy12c'

Usage

First import hpy12c module and use any financial function provided by the library:

import hpy12c

hpy12c.pmt(0.075 / 12, 12 * 15, 200_000) # ==> -1854.0247200054619

Available Functions

FV

What is the future value after 10 years of saving $100 now, with an additional monthly savings of $100 with the interest rate at 5% (annually) compounded monthly?

hpy12c.fv(0.05 / 12, 10 * 12, -100, -100) # ==> 15692.928894335748

By convention, the negative sign represents cash flow out (i.e. money not available today). Thus, saving $100 a month at 5% annual interest leads to $15,692.93 available to spend in 10 years.

IRR

Suppose one invests 100 units and then makes the following withdrawals at regular (fixed) intervals: 39, 59, 55, 20. Assuming the ending value is 0, one's 100 unit investment yields 173 units; however, due to the combination of compounding and the periodic withdrawals, the "average" rate of return is neither simply 0.73/4 nor (1.73)^0.25-1.

hpy12c.irr([-100, 39, 59, 55, 20]) # ==> 0.28095

So, the internal rate of return is 28.09%

IPMT

What is the interest part of a payment in the 8th period (i.e., 8th month), having a $5,000 loan to be paid in 2 years at an annual interest rate of 7.5%?

hpy12c.ipmt(0.075 / 12, 8, 12 * 2, 5_000.00) # ==> -22.612926783996798

So, in the 8th payment, $22.61 are the interest part.

NPER

If you only had $150/month to pay towards the loan, how long would it take to pay-off a loan of $8,000 at 7% annual interest?

hpy12c.nper(0.07 / 12, -150, 8000) # ==> 64.07334877066185

So, over 64 months would be required to pay off the loan.

NPV

Calculates the Net Present Value of an investment

hpy12c.npv(0.281, [-100, 39, 59, 55, 29]) # ==> -0.00661872883563408

PMT

What is the monthly payment needed to pay off a $200,000 loan in 15 years at an annual interest rate of 7.5%?

hpy12c.pmt(0.075 / 12, 12 * 15, 200_000) # ==> -1854.0247200054619

In order to pay-off (i.e., have a future-value of 0) the $200,000 obtained today, a monthly payment of $1,854.02 would be required. Note that this example illustrates usage of fv (future value) having a default value of 0.

PV

What is the present value (e.g., the initial investment) of an investment that needs to total $20,000.00 after 10 years of saving $100 every month? Assume the interest rate is 5% (annually) compounded monthly.

hpy12c.pv(0.05 / 12, 12 * 10, -100, 20_000) # ==> -2715.0857731569663

By convention, the negative sign represents cash flow out (i.e., money not available today). Thus, to end up with $20,000.00 in 10 years saving $100 a month at 5% annual interest, an initial deposit of $2715,09 should be made.

RATE

Suppose you take a loan of $50,000.00 to pay in 3 years with a monthly payment of $2,500.00. What is the rate applied to this loan?

hpy12c.rate(12 * 3, 2_500, -50_000) # ==> 0.036006853458478955

So, the rate applied is 3.60%.

What about others financial libraries available (e.g NumPy financials)?

Most of the algorithms here was heavily inspired by the NumPy project. The main difference, is that HPy12C does not need any dependency, as it was written in Pure Python. There are some special cases that influenced the development of this library:

  • Having a C (or Rust) binding dependency in some environments is not feasable;
  • Having the full blown NumPy library could be too much (e.g AWS Lambda);
  • Cases when you just want to do some simple financial calculation;

License

hpy12c is released under the MIT License.

Special Thanks

A special thanks goes to the python NumPy project and Exonio, which was the source for most of the functions.

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

hpy12c-0.2.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

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

hpy12c-0.2.0-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file hpy12c-0.2.0.tar.gz.

File metadata

  • Download URL: hpy12c-0.2.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for hpy12c-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bf7112fced0fc28b4be372e79246ff5501816a792fd95d59e90a63f19f26c7b5
MD5 b9d4ba953e8ca26250f5c41cd938f13a
BLAKE2b-256 297c4b7dc119fff2dc1014599276dd6ebf545b5d0217ab2ae7614dba86f13c48

See more details on using hashes here.

File details

Details for the file hpy12c-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: hpy12c-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for hpy12c-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 771b89475abdc0d74900f2b7c6aa423c58c5b64d6d857971304e6585076718c2
MD5 43528cba1415b52519c015bc592a21b5
BLAKE2b-256 149adfcd657a7ea232761e000d8d7da97a4745796766fb6c10582caa75d02164

See more details on using hashes here.

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