Uso api da Yahoo Finance para preços, scraping na Status Invest para dividendos e splits, scraping no Tesouro Transparente para preços e títulos do Tesouro Direto. Stack é o mais simples possível, lambdas schedulados para fazer as ingestões e um next.js no front.
Acho que o mais díficil foi todo o processo de chegar no cálculo correto, já que trago a performance bem detalhada, com o que já foi realizado de vendas e o ainda não realizado das cotas em posse. Ajusto cotas se teve algum split. Vejo quantas cotas tinha até a data-com do dividendo pra saber exatamente quanto foi pago. E agregar tudo. Pelo menos pra meu próprio uso eles estão certinho.