Hi, Maybe worth asking over at the Pandas list? I bet there are more Python / finance people over there.
Cheers, Matthew On Wed, Sep 4, 2019 at 7:11 PM Ilhan Polat <ilhanpo...@gmail.com> wrote: > > +1 on removing them from NumPy. I think there are plenty of alternatives > already so many that we might even consider deprecating them just like SciPy > misc module by pointing to alternatives. > > On Tue, Sep 3, 2019 at 6:38 PM Sebastian Berg <sebast...@sipsolutions.net> > wrote: >> >> On Tue, 2019-09-03 at 08:56 -0400, Warren Weckesser wrote: >> > Github issue 2880 ("Get financial functions out of main namespace", >> >> Very briefly, I am absolutely in favor of this. >> >> Keeping the functions in numpy seems more of a liability than help >> anyone. And this push is more likely to help users by spurring >> development on a good replacement, than a practically unmaintained >> corner of NumPy that may seem like it solves a problem, but probably >> does so very poorly. >> >> Moving them into a separate pip installable package seems like the best >> way forward until a better replacement, to which we can point users, >> comes up. >> >> - Sebastian >> >> >> > https://github.com/numpy/numpy/issues/2880) has been open since 2013. >> > In a recent community meeting, it was suggested that we create a NEP >> > to propose the removal of the financial functions from NumPy. I have >> > submitted "NEP 32: Remove the financial functions from NumPy" in a >> > pull request at https://github.com/numpy/numpy/pull/14399. A copy of >> > the latest version of the NEP is below. >> > >> > According to the NEP process document, "Once the PR is in place, the >> > NEP should be announced on the mailing list for discussion (comments >> > on the PR itself should be restricted to minor editorial and >> > technical fixes)." This email is the announcement for NEP 32. >> > >> > The NEP includes a brief summary of the history of the financial >> > functions, and has links to several relevant mailing list threads, >> > dating back to when the functions were added to NumPy in 2008. I >> > recommend reviewing those threads before commenting here. >> > >> > Warren >> > >> > ----- >> > >> > ================================================== >> > NEP 32 — Remove the financial functions from NumPy >> > ================================================== >> > >> > :Author: Warren Weckesser <warren.weckes...@gmail.com> >> > :Status: Draft >> > :Type: Standards Track >> > :Created: 2019-08-30 >> > >> > >> > Abstract >> > -------- >> > >> > We propose deprecating and ultimately removing the financial >> > functions [1]_ >> > from NumPy. The functions will be moved to an independent >> > repository, >> > and provided to the community as a separate package with the name >> > ``numpy_financial``. >> > >> > >> > Motivation and scope >> > -------------------- >> > >> > The NumPy financial functions [1]_ are the 10 functions ``fv``, >> > ``ipmt``, >> > ``irr``, ``mirr``, ``nper``, ``npv``, ``pmt``, ``ppmt``, ``pv`` and >> > ``rate``. >> > The functions provide elementary financial calculations such as >> > future value, >> > net present value, etc. These functions were added to NumPy in 2008 >> > [2]_. >> > >> > In May, 2009, a request by Joe Harrington to add a function called >> > ``xirr`` to >> > the financial functions triggered a long thread about these functions >> > [3]_. >> > One important point that came up in that thread is that a "real" >> > financial >> > library must be able to handle real dates. The NumPy financial >> > functions do >> > not work with actual dates or calendars. The preference for a more >> > capable >> > library independent of NumPy was expressed several times in that >> > thread. >> > >> > In June, 2009, D. L. Goldsmith expressed concerns about the >> > correctness of the >> > implementations of some of the financial functions [4]_. It was >> > suggested then >> > to move the financial functions out of NumPy to an independent >> > package. >> > >> > In a GitHub issue in 2013 [5]_, Nathaniel Smith suggested moving the >> > financial >> > functions from the top-level namespace to ``numpy.financial``. He >> > also >> > suggested giving the functions better names. Responses at that time >> > included >> > the suggestion to deprecate them and move them from NumPy to a >> > separate >> > package. This issue is still open. >> > >> > Later in 2013 [6]_, it was suggested on the mailing list that these >> > functions >> > be removed from NumPy. >> > >> > The arguments for the removal of these functions from NumPy: >> > >> > * They are too specialized for NumPy. >> > * They are not actually useful for "real world" financial >> > calculations, because >> > they do not handle real dates and calendars. >> > * The definition of "correctness" for some of these functions seems >> > to be a >> > matter of convention, and the current NumPy developers do not have >> > the >> > background to judge their correctness. >> > * There has been little interest among past and present NumPy >> > developers >> > in maintaining these functions. >> > >> > The main arguments for keeping the functions in NumPy are: >> > >> > * Removing these functions will be disruptive for some users. >> > Current users >> > will have to add the new ``numpy_financial`` package to their >> > dependencies, >> > and then modify their code to use the new package. >> > * The functions provided, while not "industrial strength", are >> > apparently >> > similar to functions provided by spreadsheets and some >> > calculators. Having >> > them available in NumPy makes it easier for some developers to >> > migrate their >> > software to Python and NumPy. >> > >> > It is clear from comments in the mailing list discussions and in the >> > GitHub >> > issues that many current NumPy developers believe the benefits of >> > removing >> > the functions outweigh the costs. For example, from [5]_:: >> > >> > The financial functions should probably be part of a separate >> > package >> > -- Charles Harris >> > >> > If there's a better package we can point people to we could just >> > deprecate >> > them and then remove them entirely... I'd be fine with that >> > too... >> > -- Nathaniel Smith >> > >> > +1 to deprecate them. If no other package exists, it can be >> > created if >> > someone feels the need for that. >> > -- Ralf Gommers >> > >> > I feel pretty strongly that we should deprecate these. If nobody >> > on numpy’s >> > core team is interested in maintaining them, then it is purely a >> > drag on >> > development for NumPy. >> > -- Stephan Hoyer >> > >> > And from the 2013 mailing list discussion, about removing the >> > functions from >> > NumPy:: >> > >> > I am +1 as well, I don't think they should have been included in >> > the first >> > place. >> > -- David Cournapeau >> > >> > But not everyone was in favor of removal:: >> > >> > The fin routines are tiny and don't require much maintenance once >> > written. If we made an effort (putting up pages with examples of >> > common >> > financial calculations and collecting those under a topical web >> > page, >> > then linking to that page from various places and talking it up), >> > I >> > would think they could attract users looking for a free way to >> > play with >> > financial scenarios. [...] >> > So, I would say we keep them. If ours are not the best, we >> > should bring >> > them up to snuff. >> > -- Joe Harrington >> > >> > For an idea of the maintenance burden of the financial functions, one >> > can >> > look for all the GitHub issues [7]_ and pull requests [8]_ that have >> > the tag >> > ``component: numpy.lib.financial``. >> > >> > One method for measuring the effect of removing these functions is to >> > find >> > all the packages on GitHub that use them. Such a search can be >> > performed >> > with the ``python-api-inspect`` service [9]_. A search for all uses >> > of the >> > NumPy financial functions finds just eight repositories. (See the >> > comments >> > in [5]_ for the actual SQL query.) >> > >> > >> > Implementation >> > -------------- >> > >> > * Create a new Python package, ``numpy_financial``, to be maintained >> > in the >> > top-level NumPy github organization. This repository will contain >> > the >> > definitions and unit tests for the financial functions. The >> > package will >> > be added to PyPI so it can be installed with ``pip``. >> > * Deprecate the financial functions in the ``numpy`` namespace, >> > beginning in >> > NumPy version 1.18. Remove the financial functions from NumPy >> > version 1.20. >> > >> > >> > Backward compatibility >> > ---------------------- >> > >> > The removal of these functions breaks backward compatibility, as >> > explained >> > earlier. The effects are mitigated by providing the >> > ``numpy_financial`` >> > library. >> > >> > >> > Alternatives >> > ------------ >> > >> > The following alternatives were mentioned in [5]_: >> > >> > * *Maintain the functions as they are (i.e. do nothing).* >> > A review of the history makes clear that this is not the preference >> > of many >> > NumPy developers. A recurring comment is that the functions simply >> > do not >> > belong in NumPy. When that sentiment is combined with the history >> > of bug >> > reports and the ongoing questions about the correctness of the >> > functions, the >> > conclusion is that the cleanest solution is deprecation and >> > removal. >> > * *Move the functions from the ``numpy`` namespace to >> > ``numpy.financial``.* >> > This was the initial suggestion in [5]_. Such a change does not >> > address the >> > maintenance issues, and doesn't change the misfit that many >> > developers see >> > between these functions and NumPy. It causes disruption for the >> > current >> > users of these functions without addressing what many developers >> > see as the >> > fundamental problem. >> > >> > >> > Discussion >> > ---------- >> > >> > Links to past mailing list discussions, and to relevant GitHub issues >> > and pull >> > requests, have already been given. >> > >> > >> > References and footnotes >> > ------------------------ >> > >> > .. [1] Financial functions, >> > https://numpy.org/doc/1.17/reference/routines.financial.html >> > >> > .. [2] Numpy-discussion mailing list, "Simple financial functions for >> > NumPy", >> > >> > https://mail.python.org/pipermail/numpy-discussion/2008-April/032353.html >> > >> > .. [3] Numpy-discussion mailing list, "add xirr to numpy financial >> > functions?", >> > >> > https://mail.python.org/pipermail/numpy-discussion/2009-May/042645.html >> > >> > .. [4] Numpy-discussion mailing list, "Definitions of pv, fv, nper, >> > pmt, and rate", >> > >> > https://mail.python.org/pipermail/numpy-discussion/2009-June/043188.html >> > >> > .. [5] Get financial functions out of main namespace, >> > https://github.com/numpy/numpy/issues/2880 >> > >> > .. [6] Numpy-discussion mailing list, "Deprecation of financial >> > routines", >> > >> > https://mail.python.org/pipermail/numpy-discussion/2013-August/067409.html >> > >> > .. [7] ``component: numpy.lib.financial`` issues, >> > >> > https://github.com/numpy/numpy/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22component%3A+numpy.lib.financial%22+ >> > >> > .. [8] ``component: numpy.lib.financial`` pull request, >> > >> > https://github.com/numpy/numpy/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3A%22component%3A+numpy.lib.financial%22+ >> > >> > .. [9] Quansight-Labs/python-api-inspect, >> > https://github.com/Quansight-Labs/python-api-inspect/ >> > >> > >> > Copyright >> > --------- >> > >> > This document has been placed in the public domain. >> > >> > _______________________________________________ >> > NumPy-Discussion mailing list >> > NumPy-Discussion@python.org >> > https://mail.python.org/mailman/listinfo/numpy-discussion >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@python.org >> https://mail.python.org/mailman/listinfo/numpy-discussion > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion