Skip to main content
All CollectionsTrading FAQs
Portfolio Optimization
Portfolio Optimization

Information about how your portfolio on Double is rebalanced and optimized

Updated over a week ago

Every user on Double has a portfolio mode that they are assigned to every day. Based on this assignment, Double runs an optimization engine with certain parameters against a user's current and target holdings. This optimization looks at different portfolio goals, which sometimes compete against each other, and combines them using optimization techniques to determine the optimal trades on any given day. We then fill these trades by submitting a daily basket of orders for all accounts which get executed and allocated to users accounts.

Portfolio Modes

Double currently has 6 portfolio modes that can be assigned on any given trading day.

  • Hold: Double's optimizer will not trade. This can occur when you're changing your strategy weights and ensures we are not trading sub optimally (for example selling right before buying a security).

  • Buy Only: Double's optimizer will only buy securities. The optimizer takes into account Drift, Transaction Costs and Holding Costs (for ETFs). This is often used for new money coming into a account.

  • Tax Unaware: Double's optimizer will evaluate an account for trading, taking into account drift, transaction costs and holding costs (for ETFs). This is generally used for tax-advantaged accounts.

  • Tax Aware: Double's optimizer will evaluate an account for trading, taking into account drift, taxes, transaction costs and holding costs (for ETFs). This is generally used for Taxable accounts.

  • Pairs TLH: Double's optimizer will evaluate an account for trading, taking into account drift, taxes, transaction costs and holding costs (for ETFs). It will also optimize for tax loss harvesting opportunities using a pairs based approach.

  • Direct Index TLH: Double's optimizer will evaluate an account for trading, taking into account drift, taxes, transaction costs and holding costs (for ETFs). It will also optimize for tax loss harvesting opportunities using a factor model approach, which we describe in more detail here.

The assignment is done before every trading day and is based on a set of rules that take into account multiple factors including: if the portfolio is changing, if the account is taxable, and how diverse or concentrated the portfolio is. Only relatively diversified portfolios are eligible for the Direct Index TLH mode. You can see your portfolio mode on the top of your Portfolio page.

Optimizer Basics

Double has partnered with Rowboat Advisors for our optimization engine. Rowboat's founder Iraklis Kourtidis implemented the investing logic for Wealthfront's original Direct Indexing feature. On his blog he uses a buying lunch analogy to relate to portfolio optimization, which I will summarize here.

We assumes you only care about minimizing cost and calories.

First off you could contemplate a Rules based approach to choosing your lunch, for example only eating meals that cost less than $10 and are less than 700 calories. But some drawbacks are the behavior around the edges (what if a meal is much better on calories but costs $10.02?) and trade offs (what if two meals pass the filter?). A simple approach might be to add calories to the cost. So a meal of 650 calories that costs $8.99 = 1,549 units and a meal of 400 calories that costs $10.02 == 1,402 so you'd choose meal #2.

This is the basic idea of how the optimizer works. It takes in various portfolio goals (calories, cost) and combines them into an overall objective value. Note that sometimes these portfolio goals compete against each other - just like how often the healthiest food is often the most expensive.

This analogy simplifies things considerably and misses the fact that you cannot always simply add together calories and cost, because the units may be completely different. Plus some people may care more about calories than cost. Our optimizer normalizes and calibrates these competing portfolio goals to ensure the results make intuitive sense.

The portfolio goals our optimizer uses here at Double are:

  • Portfolio Drift vs Targets

    • We combine your drift with a 4-factor model for use in Direct Index TLH mode to help us choose replacement stocks.

  • Trading Costs (measured via a slippage calculation we perform based on historical bid-ask spreads)

  • Tax Costs (Only for Tax Aware, Pairs TLH and Direct Index TLH)

  • Holding Costs (Which are the expense ratio of ETFs held in your portfolio, if there are any).

We then combine these different goals using numeric weights for each one. The weights are needed because the different goals are in different numeric units, and also because different users may not care as much (or may care more) about certain goals.


We then perform a linear optimization to choose the best feasible portfolio.

Trading on the Optimizations Result

Finally, we validate these orders one more time based on current prices before adding them to a basket of stocks that combines the orders across all of Double's clients. The Basket gets submitted and we fractionally allocate the shares into each user's account.

Did this answer your question?