DOC: Clarify the sign convention for fv in pmt documentation.
I maintainer di solito rispondono entro 3 giorni
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Il report indica il punto di ingresso npf.pmt(), ma non specifica alcun file sorgente né alcun test. Inizia riproducendo i casi di valore futuro forniti, quindi esamina l’implementazione e i test del progetto per determinare se la convenzione dei segni è errata o necessita di documentazione. Il lavoro è completato quando questa scelta è stata risolta e i confronti dei pagamenti segnalati sono stati convalidati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the issue:
When calculating the payment required to end with a remaining open balance, aka with a final_value, the calculated payments are larger than the payments required for a achieving final_value=0.
Workaround is inputting the final_value in a flipped state.
In the current state, if a positive pv means a outstanding loan, a negative fv means a remaining outstanding debt; whilst a positive fv implies having 'overpaid' the loan. This is confusing.
Either the algorithm is wrong, and the sign should be flipped; or the documentation should be updated to clarify that pv and fv signs have opposite meaning.
Reproduce the code example:
import numpy_financial as npf
interest_rate = 0.05 / 12
principal_loan = 200_000
compounding_periods = 360
payment_value_fv0 = npf.pmt(
interest_rate,
compounding_periods,
principal_loan,
0,
)
payment_value_fv50 = npf.pmt(
interest_rate,
compounding_periods,
principal_loan,
50_000,
)
payment_value_fvn50 = npf.pmt(
interest_rate,
compounding_periods,
principal_loan,
-50_000,
)
print("{:.2f}".format(payment_value_fv50))
print("{:.2f}".format(payment_value_fv0))
print("{:.2f}".format(payment_value_fvn50))
assert abs(payment_value_fv50) < abs(payment_value_fv0),\
"Payment with remaining balance should be lower than fully paying off loan, but found {:.2f} > {:.2f}".format(abs(payment_value_fv50),abs(payment_value_fv0))
Error message:
-1133.72
-1073.64
-1013.57
Traceback (most recent call last):
File "[...]/debugPmt.py", line 28, in <module>
assert abs(payment_value_fv50) < abs(payment_value_fv0),\
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Payment with remaining balance should be lower than fully paying off loan, but found 1133.72 > 1073.64
Runtime information:
2.1.1
3.12.6 (main, Sep 9 2024, 00:00:00) [GCC 14.2.1 20240801 (Red Hat 14.2.1-1)]
[{'numpy_version': '2.1.1',
'python': '3.12.6 (main, Sep 9 2024, 00:00:00) [GCC 14.2.1 20240801 (Red '
'Hat 14.2.1-1)]',
'uname': uname_result(system='Linux', node='[...]', release='6.10.9-200.fc40.x86_64', version='#1 SMP PREEMPT_DYNAMIC Sun Sep 8 17:23:55 UTC 2024', machine='x86_64')},
{'simd_extensions': {'baseline': ['SSE', 'SSE2', 'SSE3'],
'found': ['SSSE3',
'SSE41',
'POPCNT',
'SSE42',
'AVX',
'F16C',
'FMA3',
'AVX2'],
'not_found': ['AVX512F',
'AVX512CD',
'AVX512_KNL',
'AVX512_KNM',
'AVX512_SKX',
'AVX512_CLX',
'AVX512_CNL',
'AVX512_ICL']}},
{'architecture': 'Haswell',
'filepath': '/home/[...]/.local/lib/python3.12/site-packages/numpy.libs/libscipy_openblas64_-ff651d7f.so',
'internal_api': 'openblas',
'num_threads': 8,
'prefix': 'libscipy_openblas',
'threading_layer': 'pthreads',
'user_api': 'blas',
'version': '0.3.27'}]
None
Context for the issue:
No response
- Lingua principale
- Python
- Stelle
- 414
- Fork
- 106
- Merge medio
- 2g 1h
- PR unite (30g)
- 2
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di numpy/numpy-financial
-
An integer `rate` truncates `fv` to an integer and makes `ipmt`/`ppmt` raiseForse già presa @naseweisssss l’ha presa 2 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
numpy/numpy-financial#166 ·
I maintainer di solito rispondono entro 3 giorni
-
Add CUMPRINC and CUMIPMT functionsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaenhancement sustain-2026
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
numpy/numpy-financial#38 · 6 commenti · 1 reazione ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
numpy/numpy-financial#131 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
BUG: rate returning incorrect valueForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
numpy/numpy-financial#126 · 4 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
MAINT: Avoid ``ZeroDivisionError``s in ``nper_inner_loop``Forse già presa Una pull request collegata a questa issue è aperta o già unita. ApertaCython maintenance
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
numpy/numpy-financial#119 · 3 commenti ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di numpy/numpy-financial
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
[Bug]: Queen's own Ollama model loses num_ctx when a running session switches to itForse già presa @anasamin26 l’ha presa oggi. Apertabug enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
aden-hive/hive#7508 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
llm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
BerriAI/litellm#47884 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug 🐛
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
netalertx/NetAlertX#1856 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno