Is it possible to search for events which affect balance of an account?

I need to be able to reconstruct history of balance of an address. We have done that for some crypto currencies. For some, like Ripple, you can query RPC API and Ripple node will provide you will all transactions which affected the balance of an address, as Ripple already has this information indexed. Currencies based on Cosmos SDK also have this ability, there you can search for transfer event where the address is either sender or receiver.

Other projects, like Bitcoin or Ethereum, require entire blockchain to be loaded into the DB and indexed outside the node. There we go block by block, extract all information by issuing RPC calls, store transactions into the DB which is indexed by from and to fields, and then we are able to search for all events which affect balance of an address (real world situation is more complex than that as Ethereum has mining, uncles, internal transactions, but the gist is - some nodes can search for events which affect the balance themselves, and for some you need to load entire blockchain into few tables/collections, index them and query that data).

Question is - can you search for specific event in Polkadot? I have read PJS API documentation but closest I could find is subscribing on all events - not something I would be interested in.

Well, Polkascan explorer says indexed data comes from subsquid, which is tipping me off that with the node itself the trick won’t work and we need to load entire blockchain into the DB. The only online data node can provide I came across is getting balance of an address at specific height, but that was simple as PJS API has this as an example here. Am I right?