Skip to content

Latest commit

 

History

History
221 lines (171 loc) · 6.85 KB

README.md

File metadata and controls

221 lines (171 loc) · 6.85 KB

Robson API : o seu Banker Digital

Project logo

Bem vindo ao Robson API!


Conteúdo

  1. Introdução
  2. O Problema
  3. Oportunidade de Mercado
  4. Nossa Solução
  5. Autores

Introdução

O Robson é um app conceituado para o Hackathon XP - Open Finance com o objetivo de fornecer consultorias de investimento personalizadas a qualquer investidor, através do uso de inteligência artificial aplicada à carteira consolidada do cliente via open finance.

O app oferece uma visualização consolidada da carteira do cliente, independentemente da instituição financeira onde investe, e vai fazendo sugestões de rebalanceamento de carteira para otimizar a performance dos investimentos.


O Problema

O Brasil ainda tem uma porcentagem pequena da população que investe no setor financeiro

E daqueles que investem, a grande maioria ainda não tem os conhecimentos adequados para fazer uma gestão apropriada de seus investimentos.

Segundo o último Raio X do Investidor Brasileiro 2021, realizado pela ANBIMA, dos brasileiros que investem:

  • 29% ainda investe na poupança
  • 55% busca informações de investimento com amigos e parentes
  • 61% não sabe o principal fator na escolha do investimento realizado.

Oportunidade de Mercado

Acreditamos que o Open Finance permitirá uma redemocratização no acesso a serviços financeiros de qualidade, pelo qual decidimos criar o Robson.

Através da agregação de contas, nosso algoritmo conseguirá realizar sugestões de investimento mais aderentes ao perfil do investidor, replicando o trabalho que um consultor de valores mobiliários faria com a carteira de pessoas de alta renda.

Assim qualquer pessoa conseguirá ter uma melhor segurança na gestão dos seus investimentos.

Nossa Solução

Usamos a inteligência artificial para segregar os usuários em grupos, para podermos oferecer investimentos objetivos e comum entre eles e oferecer para novos usuários com o mesmo perfil do grupo.

Arquitetura

Arquitetura

Endpoints

Usuario

[GET] => /user/string:user_id

Pega usuarios no banco de dados

[GET] => /user/string:user_id/allocation

Pega alocação de investimentos do usuario.

Exemplo:

{
   "categories": {
       "unknown": {
           "percentage": 0.0,
           "amount": 0
       },
       "variable_income": {
           "percentage": 5.86,
           "amount": 1651
       },
       "post_fixed": {
           "percentage": 56.48,
           "amount": 15914
       },
       "multi_market": {
           "percentage": 1.17,
           "amount": 331
       },
       "global": {
           "percentage": 0.0,
           "amount": 0
       },
       "inflation": {
           "percentage": 36.49,
           "amount": 10282
       }
   },
   "total": 28178.0
}

[GET] => /user/string:user_id/recommended_allocation

Pega alocação recomendado de investimentos seguindo o perfil do usuario.

Objetivos

[POST] => /objective/create

Cria um novo objetivo.

Inteligencia artificial

[GET] => /ai/cluster/

Lista usuarios separados em clusters de acordo com suas transaçoes PIX.

Confira Clusterização para mais detalhes.

Clusterização

A clusterização é um método de classificação de dados que separa e categoriza em grupos. Usamos a clusterização para segregar os usuários em grupos permitindo criar previsões de seus objetivos de vida, assim podendo oferecê-lo sugestões de investimentos personalizados de acordo com o momento atual de sua vida.

Pegamos os CNPJ de cada transação feita pelo usuário, usando o histórico de pix provido pela api da xp. A api da XP nos devolve apenas CPF, porém assumimos que com Open Finance esse dado estaria disponível com a devida permissão do usuário.

Com o CNPJ em mãos acessamos uma API pública para capturar as descrições dos CNAE e os CNAES secundários e usamos para cruza e cria grupos com consumo parecido. Assim podendo propor um objetivo que seja comum ao grupo.

Fizemos um exemplo com um pequeno grupo de usuários inseridos manualmente no código, nesse caso foi possível separar os usuários em dois grupos, um com consumo parecido e outro com consumo diferente. Com uma base de dados maior seria possível a análise inteligente de todos os usuários, relacionando com os investimentos e objetivos.

  • Entrada:
UserTransactions(
    "JOAO",  # ID do Usuário
    0.1,  # Suitability (Perfil de investidor)
    [
        # Valor, Descrição do CNAE, Data da transação
        Transaction(100, "Educação infantil creche", "2022-01-01"),
        Transaction(50, "Fabricação outros brinquedos jogos recreativos especificados anteriormente",
                    "2022-01-02"),
        Transaction(200, "camisa flamenngo", "2022-01-03"),
        Transaction(20, "camisa flamego bebes", "2022-01-03"),
        Transaction(200, "gasolina", "2022-01-03"),
    ]
),
UserTransactions(
    "MARIA",
    0.1,
    [
        Transaction(12, "Educação infantil pré-escola", "2022-01-01"),
        Transaction(80, "Comércio varejista brinquedos artigos recreativos", "2022-01-02"),
        Transaction(30, "brinquedos bebes", "2022-01-05"),
        Transaction(30, "leite", "2022-01-08"),
        Transaction(50, "comida", "2022-01-010"),
    ]
),
UserTransactions(
    "ROBSON",
    0.1,
    [
        Transaction(60, "comida", "2022-01-01"),
        Transaction(300, "Aluguel aparelhos jogos eletrônicos", "2022-01-02"),
        Transaction(500, "skin fortnite", "2022-01-05"),
        Transaction(300, "controle xbola", "2022-01-08"),
        Transaction(50, "comida", "2022-01-010"),
    ]
),
UserTransactions(
    "RODRIGO",
    0.26,
    [
        Transaction(60, "comida", "2022-01-01"),
        Transaction(40, "Exploração jogos eletrônicos recreativos", "2022-01-02"),
        Transaction(500, "camisa botafogo", "2022-01-05"),
        Transaction(300, "controle xbola", "2022-01-08"),
        Transaction(50, "nerd", "2022-01-010"),
    ]
),
  • Resposta da API:
{
  "JOAO": 0,
  "MARIA": 0,
  "ROBSON": 1,
  "RODRIGO": 1
}

Tecnologias Utilizadas

  • Python
  • Flask
  • SQLite
  • Open Banking XP API
  • Scikit learn

Autores