https://gitlab.com/personal-assistant-bot/experimental/finances/rebalance/-/blob/master/rebalance.clj -- тута. Функция traverse строит новое дерево на основе функций handle-leaf-node и handle-branch-node. Функция distribute аналогично с функциями update-leaf и update-branch. Функция collect-commodities делает обход и собирает сет определенных полей, а print-new-distribution ничего не собирает, а только печатает.