sábado, 16 de fevereiro de 2013

Projeto FinDt


Durante esta semana, consegui fazer algumas alterações no módulo FinDt para Python, fazendo algumas correções para pequenos erros e problemas que detectei na versão 1.0.0:


  • 13.02.2013
    • Retirado comentários de funções do comentário do módulo, já que o help do módulo traz todos os comentários (de módulo e funções).
    • Corrigida a função “ListaDiasCorridos” que havia perdido parte de sua implementação e, portanto, não estava retornando o resultado esperado.
  • 14.02.2013
    • Alterado o nome da função Weekday para DiaSemana e correção dos comentários.
    • Em testes que eu havia feito em outra máquina, esta função estava trazendo o dia da semana em inglês (Sunday, Monday, etc.)- o problema foi corrigido com a inclusão de "import locale" e setando a região com "locale.setlocale(locale.LC_ALL, ' ')".
  • 16.02.2013
    • Promovi a otimização de algumas funções que estavam com redundância no código.
    • Na função DiasUteisPorMes implementei o uso da função OrderedDict do módulo collections, o que agora permite retornar um dicionário classificado de meses e seus respectivos números de dias úteis.
    • Iniciei uma documentação para o projeto usando o Sphinx. Se alguém estiver interessado, tem algumas boas explicações aqui. Também conheço pouco do Sphinx, mas já vi alguns outros módulos Pyhton documentados com seu uso e me parece muito bom, inclusive para criar documentação para qualquer tipo de projeto.
Para o futuro, preciso descobrir uma forma de não ter tantos problemas na leitura do arquivo csv contendo a lista de feriados que é utilizada em algumas funções. Creio que parte do problema seja oriundo do fato de não haver tal lista para ser baixada no formato csv; o que estou fazendo atualmente é baixar o arquivo no formato xls (Excel - único formato disponível no site da Ambima), abri-lo no Excel e então salvá-lo no formato csv a partir da caixa de diálogo Salvar como e selecionando em Tipo o formato desejado.

segunda-feira, 11 de fevereiro de 2013

Projeto FinDt


Hoje publiquei no PyPi (Python Package Index) minha primeira versão do módulo FinDt (FinDt 1.0.0), totalmente escrito em Python.

Este módulo permite diversas operações com datas principalmente com o objetivo de auxiliar operações envolvendo seu uso em cálculos econômicos ou financeiros, tais como:
  1. criar listas contendo:
    • os dias corridos ou dias úteis entre duas datas específicas
    • os dias em que um determinado dia da semana se repete entre duas datas
  2. criar um dicionário:
    • dos feriados entre duas data
    • do número de dias uteis dos meses desejados
  3. identificar o primeiro e ultimo dia útil de um determinado mês.

O módulo ainda se encontra em seus estágios iniciais de desenvolvimento; há muitas arestas a serem aparadas e melhorias a se implementar.

Mas a sua publicação tem, justamente, o objetivo de atrair (quem sabe!) críticas e sugestões que ajudem na sua melhoria constante.

Ele fará parte de um projeto um pouco maior, onde pretendo criar alguns outros módulos voltados para Finanças (transformações de taxas, Valor Presente, Valor Futuro, PMT, cálculo de um CDB) e Economia (comparação entre taxas de juros, índices de inflação, projeções), dada minha observação pessoal da dificuldade de encontrar trabalhos deste tipo para uso cotidiano, que não sejam softwares proprietários ou que não se restrinjam ao Excel e, que, em último caso, forneçam uma alternativa para esta restrição.

Embora eu ainda tenha pouco conhecimento em Python, a linguagem não me pareceu tão complexa para entender e aplicar no projeto quanto o seria em C++ ou C#. Pesou também a quantidade imensa de projetos open source disponíveis em Python e a boa impressão que projetos como Numpy, Matplotlib, SageMath, entre outros tantos baseados em Python, me causaram.

Projeto FinDt


Neste blog pretendo manter um espaço para apontamentos na linguagem de programação Python, principalmente em suas aplicações nas áreas de modelagem matemática e estatística, financeira e econômica.