Automating Portfolio Rebalancing with Python and Strategy

Combine Investment Strategy with Code to Maintain Target Allocations

header.png

Introduction

Use code and a well-planned strategy to keep your portfolio aligned with your goals, as asset performance changes over time. If the stock market progresses aggressively, the proportions of assets can shift from 60% in stocks and 40% in bonds to 70% in stocks and 30% in bonds.

Adjusting your investments is called rebalancing and allows you to keep risks in check and stick to your long-term targets. A Python tool was created to help by precisely separating and weighing portfolios using several strategies in real time.

This article explains why rebalancing is useful in investment and introduces a Python program that automates and controls portfolio management.


The Importance of Rebalancing

Risk Management
Rebalancing your portfolio helps you keep it aligned with the level of risk you're willing to accept. If your stocks perform better than expected, they may end up dominating your portfolio, exposing you to more risk than intended.

Behavioural Discipline
By maintaining your account regularly, you can avoid emotional decisions. Rebalancing encourages a systematic approach — buying low and selling high — rather than reacting to market sentiment.

Strategic Alignment
Your investment goals, time horizon, and risk tolerance are reflected in how you allocate assets. Rebalancing helps maintain that alignment over time.


Rebalancing Strategies

Calendar-Based Rebalancing

With this method, your portfolio is adjusted at fixed intervals, such as annually or every three years, regardless of market conditions. Though simple and consistent, it may miss significant shifts in asset performance.

Threshold-Based Rebalancing

Here, rebalancing occurs only when an asset class deviates from its target by a set amount (e.g., ±5%). While more reactive to market moves, it involves more frequent trades.

Hybrid Rebalancing

This combines both methods. You review your portfolio regularly and only rebalance when deviation exceeds a set threshold. It balances discipline with responsiveness.


A Simple Rebalancing Example

Assume you have $6,000 in stocks (60%) and $4,000 in bonds (40%). After some time, stocks grow to $8,000 while bonds remain at $4,000 — changing your mix to 67% stocks and 33% bonds.

Rebalancing involves selling $800 in stocks and moving that amount into bonds to return to the original 60/40 target.


Strategic vs. Tactical Rebalancing

Rebalancing to maintain your long-term allocation is known as strategic asset allocation. However, some investors also make temporary shifts based on market trends, known as tactical asset allocation.

Frequently switching tactics may derail your long-term plan and resemble market timing, which is generally discouraged.


Costs and Tax Considerations

When assets with gains are sold during rebalancing, capital gains taxes may apply. Trading fees, including commissions and bid-ask spreads, can also reduce returns — especially with international or illiquid ETFs.

Ways to reduce costs include:

  • Reinvesting dividends strategically

  • Rebalancing within tax-advantaged accounts

  • Using tax-loss harvesting to offset gains

  • Leveraging broker tools or robo-advisors for automatic rebalancing

These approaches reduce manual effort and improve after-tax returns.


Rebalancing Across Life Phases

During the accumulation phase, regular contributions help adjust your portfolio gradually, reducing the need for frequent rebalancing.

Withdrawing funds during retirement can accelerate changes in allocation. Rebalancing helps preserve capital, manage risk, and support income needs during this stage.


Pros and Cons of Rebalancing

Pros

  • Matches your risk appetite

  • Encourages disciplined, long-term investing

  • Prevents overexposure to any single asset

Cons

  • May incur trading costs and taxes

  • Momentum-driven markets can make rebalancing counterproductive

  • Frequent rebalancing might reduce returns


Portfolio Rebalancer: Introducing the Python Tool

Although rebalancing requires patience, the core concept is simple — and automation can streamline the process.

Let’s explore a Python-based tool that does exactly that.

This command-line utility supports both beginner and advanced users. It helps you build a portfolio, retrieve live market data, assess deviations from your targets, and provides rebalancing suggestions based on several strategies.

The tool includes three algorithms, supports asset grouping, and offers flexible settings for customization.

It calculates drift from your targets, fetches real-time prices using Yahoo Finance, and imports portfolio data from a CSV file. Based on your chosen strategy, it provides trade recommendations but makes no changes without your confirmation.
flowchart 1.png


Access the GitHub Repository

Ready to try the tool?
You can download the utility from GitHub. Let me know if you have questions setting it up:

View the Python Rebalancing Tool on GitHub


Key Features of the Tool

  • Imports portfolios from CSV

  • Fetches real-time prices using yfinance

  • Converts between USD and EUR using exchange rates

  • Detects portfolio drift and suggests actions using three methods:

    • Full Rebalancing – aligns perfectly to targets

    • Minimal Rebalancing – adjusts only drifting assets

    • Value-Preserving Rebalancing – minimizes change to total value

  • Optional rounding for trades

  • Allows selection/deselection of assets

  • Supports grouped assets for targeted rebalancing

  • Fully configurable through CLI inputs (base currency, method, etc.)

  • Clear, color-coded terminal reports

IMG-Screenshot 2025-06-05 190717.png
IMG-Screenshot 2025-06-05 190748.png
IMG-Screenshot 2025-06-05 190802.png


Code Structure

  • main.py
    Entry point for the CLI. Manages:

    • CSV loading and validation

    • User input prompts (method, currency, rounding)

    • Strategy execution and reporting

  • portfolio.py
    Contains Asset and Portfolio classes:

    • Parses CSV into structured data

    • Computes total value, group weights, drift

    • Handles adjustment flags per asset

  • data_fetcher.py
    Fetches live data:

    • Uses yfinance for price data

    • Retrieves exchange rates from exchangerate.host

    • Includes error handling and optional caching

  • rebalance.py
    Implements core algorithms:

    • full_rebalance, minimal_rebalance, value_preserving_rebalance

    • Rounding and group adjustment logic

  • report.py
    Generates reports:

    • Shows allocation changes and portfolio drift

    • Lists proposed trades in shares and cash equivalents

    • Highlights the effectiveness of the chosen strategy


Entering Data Through CSV

Your CSV file should include:
symbol, wkn, shares, group, adjust, target, currency

Example:

symbol,wkn,shares,group,adjust,target,currency
AHYQ.DE,ETF018,605.44,WD,1,50.4,EUR
XDWD.DE,A1XB5U,122.40,WD,0,,EUR
LYP6.DE,LYX0Q0,18.45,EU,1,12.6,EUR

Conclusion

Rebalancing is one of the most important habits in disciplined investing. Whether done on a schedule, in response to drift, or automatically using software, it ensures your portfolio remains aligned with your objectives as markets change.

Staying committed to your investment plan is more powerful than reacting to market noise. In this guide, we discussed rebalancing strategies and introduced a Python command-line tool that automates the process.

By merging strategy with automation, you gain clarity, confidence, and control over your financial future. Try the tool and see how disciplined investing feels when it's automated.

#personalfinance #investing #python #rebalancing