| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
As explained in NEP 32, the financial functions are to be removed
from version 1.20.
They are now replaced with module level `__getattr__` to give a useful
error message for those surprised by the `AttributeError`.
This only works for Python 3.7+, but it is expected that by the 1.20 release
Python 3.6 will not be supported.
|
| |
|
|
|
|
|
| |
As numpy is Python 3 only, these import statements are now unnecessary
and don't alter runtime behavior.
|
|
|
|
|
|
|
| |
The original version doesn't render correctly; see, for example,
https://numpy.org/devdocs/reference/generated/numpy.mirr.html#numpy.mirr
The HTML output for the updated markup looks much better.
|
|
|
|
| |
As per NEP-32, the financial functions are deprecated.
|
|
|
|
|
|
|
|
|
|
|
| |
The internal rate of return (irr) is defined as the rate of return
required for the net present values of a series of cashflows to be
zero. i.e the lowest rate of return required for a project to break
even.
This is currently checked by refering to the example output from
the ``irr`` and ``npv`` function documentation. This commit adds a
test to confirm the identity holds.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
``np.npv`` calculates the present value of a series of cashflows
starting in the present (t=0). Another common definition of NPV
uses the future cashflows i.e. starting at the end of the first
period.
The difference in definition can lead to confusion for users moving
between NumPy and other projects [1] and adds complexity for
maintainers [2]. This commit adds a warning to the ``npv``
function's documentation and adds an example on how to find the npv
of a project using the alternate definition.
[1] https://github.com/numpy/numpy/issue/10877
[2] https://github.com/numpy/numpy/pull/3346
|
|
|
|
|
|
|
|
| |
* ported the refguide_check module from SciPy for usage
in NumPy docstring execution/ verification; added the
refguide_check run to Azure Mac OS CI
* adjusted NumPy docstrings such that refguide_check passes
|
| |
|
|
|
|
| |
np.lib.arraypad through np.lib.nanfunctions
|
|
|
|
|
| |
Adds support for Decimal to the rate, pv, fv, pmt, ppmt, ipmt, mirr, npv functions
Closes #9781
|
|
|
|
|
| |
financial.pmt masked rate array in place, changing rate array.
Changed to mask to a new array, preserving the original rate array.
|
| |
|
| |
|
|
|
|
| |
Closes gh-6863.
|
| |
|
|
|
|
|
|
|
|
|
| |
The pmt function in financial.py does a zero divide when rate=0 because
error because the alternatives in np.where() are evaluated befor the
selection is made.first before going into the function however, the
denominator can be zero at that time.
Closes #4701.
|
| |
|
|
|
|
| |
The rules enforced are the same as those used for scipy.
|
|
|
|
|
|
| |
Some of those problems look like potential coding errors. In those
cases a Fixme comment was made and the offending code, usually an
unused variable, was commented out.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change corrects the following two bugs in numpy.irr:
* When the solution was negative, numpy.irr returned nan instead of the
correct solution because of the mask applied to the roots. Corrected
by removing the mask that 0 < res < 1.
* When multiple roots were found, numpy.irr was returning an array of
all roots rather than a single float. This bug was corrected by
selecting the single root closest to zero (min(abs(root)).
With these corrections, numpy.irr returns the same result as the
corresponding spreadsheet function in LibreOffice Calc for all test
cases (additional test cases were added to cover cases with multiple
positive and negative roots)
|
|
|
|
|
|
|
| |
Run the 2to3 ws_comma fixer on *.py files. Some lines are now too long
and will need to be broken at some point. OTOH, some lines were already
too long and need to be broken at some point. Now seems as good a time
as any to do this with open PRs at a minimum.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that Python < 2.6 is no longer supported we can use the errstate
context manager in places where constructs like
```
old = seterr(invalid='ignore')
try:
blah
finally:
seterr(**old)
```
were used.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Correct the implementation of the npv function, its documentation, and
the mirr function that depends on it. The test_financial.py is also
corrected to take into account those modifications
The npv function behavior was contrary to what the documentation stated
as it summed indexes 1 to M instead of 0 to M-1. The mirr function used
a corrective factor to get the correct result in spite of that error so
that factor is removed.
Closes #649
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In Python 3 `map` is an iterator while in Python 2 it returns a list.
The simple fix applied by the fixer is to inclose all instances of map
with `list(...)`. This is not needed in all cases, and even where
appropriate list comprehensions may be preferred for their clarity.
Consequently, this patch attempts to use list comprehensions where it
makes sense.
When the mapped function has two arguments there is another problem that
can arise. In Python 3 map stops execution when the shortest argument
list is exhausted, while in Python 2 it stops when the longest argument
list is exhausted. Consequently the two argument case might need special
care. However, we have been running Python3 converted versions of numpy
since 1.5 without problems, so it is probably not something that affects
us.
Closes #3068
|
|
|
|
|
|
|
| |
Add `print_function` to all `from __future__ import ...` statements
and use the python3 print function syntax everywhere.
Closes #3078.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new import `absolute_import` is added the `from __future__ import`
statement and The 2to3 `import` fixer is run to make the imports
compatible. There are several things that need to be dealt with to make
this work.
1) Files meant to be run as scripts run in a different environment than
files imported as part of a package, and so changes to those files need
to be skipped. The affected script files are:
* all setup.py files
* numpy/core/code_generators/generate_umath.py
* numpy/core/code_generators/generate_numpy_api.py
* numpy/core/code_generators/generate_ufunc_api.py
2) Some imported modules are not available as they are created during
the build process and consequently 2to3 is unable to handle them
correctly. Files that import those modules need a bit of extra work.
The affected files are:
* core/__init__.py,
* core/numeric.py,
* core/_internal.py,
* core/arrayprint.py,
* core/fromnumeric.py,
* numpy/__init__.py,
* lib/npyio.py,
* lib/function_base.py,
* fft/fftpack.py,
* random/__init__.py
Closes #3172
|
|
|
|
|
|
|
|
| |
This should be harmless, as we already are division clean. However,
placement of this import takes some care. In the future a script
can be used to append new features without worry, at least until
such time as it exceeds a single line. Having that ability will
make it easier to deal with absolute imports and printing updates.
|
|
|
|
|
| |
The ipmt function was also fixed to handle broadcasting. The tests
were improved and extended to cover the broadcasting capability.
|
|
|
|
| |
payment) functions. Added doctests and unit tests.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
summing booleans. Do some whitespace cleanup.
|
|
|
|
| |
and OO Calc.
|
| |
|
| |
|
|
|
|
| |
they are still an improvement)
|
|
|
|
| |
the docstrings in r5610
|
| |
|
|
|
|
|
| |
of explicit imports or dependency on the local scope where the doctest is
defined..
|
| |
|
| |
|
|
|
|
| |
exactness. Start filling in final function.
|
| |
|
| |
|
|
|
|
| |
and takes into account re-investing profits and expense of financing losses.
|
|
financial calculations.
|