Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NTN-B Class #49

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open

NTN-B Class #49

wants to merge 13 commits into from

Conversation

pcoelho00
Copy link

Adding the new NTN-B class and making the price calculations compliant with the ANBIMA rounding specifications.

@gusamarante
Copy link
Member

Usei o código abaixo para testar a classe, ela crava o preço da ANBIMA. Parabéns!. Mas tem o problema principal. Ele ta "scaling" o preço do bond. Acho que essa input é desnecessário e confuso, porque o principal da NTN-B é o VNA e isso já é passado como input.

Também achei esse código muito parecido com o da Pull Request #48. Muito improvável que vocês dois, trabalhando separadamente tenham chegado num código tão parecido.

from finmath.brazilian_bonds.government_bonds import NTNB

ntn = NTNB(expiry='2050-08-15',
           rate=0.044125,
           updated_nominal_value=3517.844181,
           ref_date='2021-04-23')

print('Preço calculado foi de', ntn.price)
print('PU na ANBIMA é de 4.460,278154')

@pcoelho00
Copy link
Author

Fala Gustavo, tudo bem?

O scaling do bond eu estava seguindo o padrão da LTN e NTN-F que usa o principal como a base, concordo com você que o VNA já incorpora esse valor, porém para manter o padrão decidi mantém-lo.

Comparando o meu código e o código #48 as semelhanças estão no fato que aparentemente usamos as classe NTN-F como base e só, se você observar as mudanças necessárias para transformar a classe NTN-F em uma NTN-B seguimos caminhos diferentes. Inclusive meu código faz algumas mudanças tanto na NTN-F quanto na LTN justamente para poder cravar o preço com a Anbima dado que você utilize um principal = 1000 (você pode testa-las também, por favor). Por exemplo as mudanças nos métodos, price_from_rate e rate_from_price, para que todas aceitem os mesmos argumentos de taxa, preço e/ou principal caso seja necessário alguma mudança no scaling devido as regras de cálculo.

Não sei como você chegou na conclusão que os códigos são muito parecidos, mas ao meu ver na parte que realmente é necessária alguma mudança na implementação seguimos caminhos distintos.

@gusamarante
Copy link
Member

Beleza, faz o seguinte. Será que você consegue tirar o esse input de principal? Só adaptar o código pra não precisar mais dele. Queremos deixar a classe o mais sucinta possível.

Se você fizer o commit nessa branch mesmo, ela já atualiza o pull request com a modificação também.

Com esse ajuste eu já faço o merge da Branch.

@pcoelho00
Copy link
Author

Ajustado!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants