Balancer is an AMM (Automated Market Making) protocol for programmable liquidity. It allows for the creation of flexible liquidity pools that are continuously self-rebalanced. Those liquidity pools can contain multiple tokens each with different weights and also a customizable trading fee. A Balancer pool can be thought of as an index fund where liquidity providers get paid instead of having to pay a maintenance fee, as happens in conventional finance.