Problems & solutions · Custom Software

Tax Aware Portfolio Rebalancing Software Problems: The 7 That Cost Clients Real Money, and How to Avoid Them

Portfolio Rebalancing TAX Optimization Software software overview illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is a wash sale check that runs at account level rather than across the household. It looks like the feature works, which is what makes it worse than having no check at all. The rule looks back and forward thirty days and does not respect account boundaries, so a loss harvested in a taxable account is disallowed when a substantially identical security is bought inside the window in the client's individual retirement account, and in that case the basis adjustment is lost entirely rather than deferred. The usual culprits are dividend reinvestment and recurring contributions, both running on schedules nobody is watching, and the firm finds out across hundreds of accounts at once when the January tax package lands.

Why does the wash sale check get built at account level so often?

Because that is where the trade is. A developer building a rebalancer thinks in accounts, since an account is what holds positions, receives a trade file and reports to a custodian. Checking that account's own purchase history in a thirty day window is the obvious implementation, it passes every test somebody writes, and it is wrong in exactly the cases that matter.

The rule operates on the taxpayer, not the account. That means the check has to see accounts you do not trade and will never send an order to, including retirement accounts, a spouse's accounts where they are part of the same tax household, and accounts held at a different custodian. It also has to see the future, because a recurring contribution scheduled for next Tuesday and a dividend reinvestment due next week are purchases that will fall inside the window of a loss you are about to realise today.

The fix is a household level purchase calendar rather than a lookup. Every linked account contributes to it, including observed only accounts, and it carries scheduled future activity alongside settled history. The constraint is then applied in both directions in time before a sell order is generated, and the optimiser is told which loss harvest opportunities are unavailable rather than discovering it afterwards. This is unglamorous plumbing and it is the single clearest line between a system that is tax aware and one that says it is. Ask any prospective developer how they would prevent a wash sale caused by a reinvestment in a retirement account you do not trade. If the answer does not include a household purchase calendar with scheduled activity, they will build you an account level checker and you will keep the problem.

What goes wrong with custodian lot and cost basis data?

Firms consistently underestimate this and it is where timelines slip. Position data is straightforward. Lot data is not.

Lots arrive with gaps. Transferred in positions frequently carry no basis at all, or carry a basis the receiving custodian marked as unknown, or carry one that was reported months after the transfer and quietly restated. Corporate actions rewrite lots in ways that are correct at the custodian and unrecognisable to a naive importer. Wash sale adjustments already applied by the custodian change basis and holding period on lots you thought you understood. Gifted and inherited positions carry basis rules that no import routine infers on its own.

The consequence is that an optimiser confidently selects a lot to sell based on a basis figure that is a placeholder, and the realised gain the client sees is not the one the trade blotter promised. That is not a rounding error to an advisor sitting in front of a client.

The fix has three parts. Reconcile lots daily rather than at import, and treat a lot count or basis mismatch against the custodian as a hard exception. Carry a data quality flag on every lot, and exclude accounts with unresolved lot issues from automated trade generation entirely, routing them to a human queue instead. And plan the first release around a single custodian and taxable accounts only, because retirement accounts have no tax constraint and are the easy case. Proving the hard case first is the correct order, even though it feels slower.

Why do custodian trade files and execution feeds break after launch?

Because each custodian is a different product with a different definition of failure, and the failure that hurts is the silent one.

Trade file formats change on the custodian's schedule, not yours. A new field, a changed length, a tightened validation rule, and a file that previously loaded gets partially rejected. Rejection semantics differ: one custodian rejects the whole file, another rejects the offending lines and processes the rest, which means a rebalance can be half executed with nobody aware.

Execution feeds break on timing. A partial fill, a cancelled order, an order that executed at a different lot allocation than requested, or a trade that settled the next day and therefore reports on a different file. If the system assumes a released trade equals a completed trade, drift accumulates between what the platform believes the client holds and what they actually hold, and the next rebalance is computed on a fiction.

The fix is to treat every released order as an open item until execution is confirmed and reconciled at lot level, with an ageing view showing anything unconfirmed beyond a threshold. Alert on missing acknowledgements rather than only on rejections. And when a firm adds a custodian, price it as real weeks of work: file formats, position reporting quirks and rejection behaviour are three separate problems and none of them is a configuration change.

What happens when the audit trail and constraint reasoning are not covered?

The first serious question a regulator or a client asks is why this account traded differently from the model. A system that cannot answer that turns an ordinary review into an exercise in reconstruction.

Two records are needed and both get cut from first releases. The first is an immutable record of what was released, by whom, and what the account looked like when the decision was made, including every override with a reason attached. Storing the trade list is not enough, because the trade list does not show what was rejected or why an advisor changed it.

The second is the binding constraint. Real accounts carry restrictions: no employer stock, hold this bond to maturity, keep a defined sum liquid for a property purchase, do not exceed a concentration limit, transition this legacy portfolio within an annual realised gain budget. The interesting cases are conflicts, where the model wants to sell, the gain budget says no, and the drift policy says drift must be corrected. Something gives, and the system has to name which constraint bound and why. An advisor who can tell a client the portfolio is off model because correcting it this year would have cost a specific amount in tax is having a conversation. An advisor holding an unexplained trade list is having an argument.

Should you build custom or configure what you already own?

Do not build if most of your client assets sit in tax deferred accounts, because the entire premise disappears: realised gains, holding periods and wash sales do not apply inside them. Do not build under a few hundred accounts, where an advisor reviewing a rebalance manually is genuinely feasible and cheaper. And do not build if you already run Orion Eclipse or Envestnet and your process fits their hierarchy without side spreadsheets, because you would be paying to reproduce something you have.

Configure harder first. Orion Eclipse has real lot awareness, Smartleaf is built around tax management specifically, LifeYield focuses on asset location across a household, and 55ip built its name on tax aware transitions. Vestmark and Envestnet run at genuine scale for large sponsors. If your dissatisfaction is a missing report or an awkward workflow, that is a configuration and training problem, not a platform problem.

The build case appears when your investment process does not fit the tool's hierarchy: how a sleeve relates to a model, how a household aggregates, where a restriction lives, how a cash need interrupts a rebalance. The tell is the spreadsheet your operations lead maintains for the parts that will not bend. Build also when you serve multiple custodians and each one is a manual step, or when you are a turnkey asset management program whose rebalancing engine is effectively your product rather than a tool you consume.

How do hidden costs get into the quote?

Five items, each usually a single line.

Custodian count. The one firms underestimate most. Each additional custodian brings its own file formats, position reporting quirks and rejection semantics, and it is weeks rather than a setting. Ask for a named estimate per custodian.

Direct indexing style harvesting. Harvesting across hundreds of individual securities changes both the size of the optimisation and the data you need to feed it. It is a different project from model based rebalancing, not an extension.

Options and concentrated stock. These need their own handling and their own constraint logic, and a single line in a proposal never covers them.

Multi year transition planning. Modelling future tax years rather than the current one is a materially larger piece of work than most quotes allow.

The constraint hierarchy discovery. Most firms have never written down what happens when the drift policy and the gain budget disagree, and answering that question is a workstream with your investment committee, not a developer task.

What separates a build that works from one that fails here?

Trade generation happens at lot level, with the lot selection method specified per account and the tax impact computed and shown before release. A firm trading at position level and letting the custodian apply a default method is making a tax decision by accident in every account, every day, and the client finds out the following January.

The optimisation has a stated objective and a ranked constraint set, and it names the binding constraint per account. If a developer describes the logic as a sequence of conditional statements, you are getting a rules script rather than an optimiser. It will produce defensible trades right up until two constraints disagree, which is the only situation where the software was supposed to earn its cost.

The first release is deliberately narrow: your largest custodian, your main models, taxable accounts only, with a reviewable blotter and human release. Retirement accounts and additional custodians come later. Firms that start broad spend the first six months reconciling data and never reach the tax logic that justified the project.

And ownership is settled before kickoff: the repository, the cloud accounts and the unrestricted right to hire another firm. If the engine is what turns your models into client outcomes, it is a core asset rather than a utility, and a vendor holding it holds your process. At Digital Heroes the client owns the code from the first commit, and a firm that hedges on that question at proposal stage will not improve later.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Across 1,471 IT projects the average cost overrun was 27%, but one in six projects was a 'black swan' with an average cost overrun of 200% and a schedule overrun of nearly 70%. Source: Harvard Business Review (Bent Flyvbjerg & Alexander Budzier, University of Oxford) (2011) →
  2. Standish's 2015 CHAOS research found roughly a third of software projects (about 36% by the Modern definition) fully succeed on time, on budget, and on scope, with top success drivers including executive support, user involvement, and clear requirements/business objectives. Source: Standish Group (CHAOS Report) (2015) →
  3. An EY survey found one in five U.S. payrolls contains errors, each costing an average of $291 to remediate, with a typical 1,000-employee organization spending roughly 29 workweeks per year fixing common payroll errors. Source: EY (Ernst & Young) (2022) →
  4. WordPress powers 41.5% of all websites and holds 59.2% of the market among sites running a known content management system, making it by far the most-used CMS on the web. Source: W3Techs (2026) →
Charlotte A. · Account Manager · Sydney

Charlotte manages accounts at Digital Heroes, keeping projects and clients aligned through the middle stretch of a build where enthusiasm fades and detail matters. She turns technical progress into language a business owner can act on. Read her for a clearer sense of what to expect from your agency.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

Why is an account level wash sale check worse than no check at all?
Because it creates confidence. The rule applies to the taxpayer rather than the account, so a loss harvested in a taxable account is disallowed when a substantially identical security is purchased inside the thirty day window in a retirement account you do not even trade, and in that case the basis adjustment is lost entirely rather than deferred. Dividend reinvestment and recurring contributions cause most of these, and a team believing the check works will not investigate until the tax package arrives.
What custodian data problems slow these projects down most?
Lot level basis rather than positions. Transferred in lots frequently arrive with no basis or an unknown flag, corporate actions rewrite lots in ways a naive importer cannot recognise, wash sale adjustments already applied by the custodian change basis and holding period, and gifted or inherited positions carry rules nothing infers automatically. Reconcile lots daily, carry a quality flag on each one, and exclude accounts with unresolved issues from automated trade generation entirely.
How should trade files and execution confirmations be handled?
Treat every released order as an open item until execution is confirmed and reconciled at lot level, with an ageing view for anything unconfirmed past a threshold. Custodians differ in how they reject: one refuses a whole file, another processes the good lines and drops the rest, which means a rebalance can be half executed with nobody aware. Alert on missing acknowledgements rather than only on explicit rejections.
What audit record do we need when an account trades differently from the model?
An immutable record of what was released, by whom, what the account looked like at decision time, and every override with its reason. Storing the resulting trade list is not enough, because it does not show what was rejected or why an advisor changed it. The system should also name the binding constraint per account, so the answer to why this portfolio is off model is a specific tax cost rather than an opinion.
Is Orion Eclipse or Smartleaf enough for a mid sized advisory firm?
Usually yes, and we recommend them regularly. Eclipse has genuine lot awareness, Smartleaf is built around tax management, LifeYield focuses on household asset location and 55ip on tax aware transitions. The build case appears when your process does not fit the tool's hierarchy for sleeves, households, restrictions or cash needs, and the tell is the spreadsheet your operations lead maintains for the parts that will not bend.
Should we build if most of our assets are in retirement accounts?
No, and we would say so before quoting. Tax aware rebalancing exists to manage realised gains, holding periods and wash sales, none of which apply inside a tax deferred account, so the premise of the project disappears. The threshold is the size of your taxable book and the number of taxable accounts you trade, not total assets under management, and below a few hundred such accounts manual review by an advisor is genuinely cheaper.
What is the difference between an optimiser and a rules script?
An optimiser has a stated objective and a ranked constraint set, and it can tell you which constraint bound in each account. A rules script is a sequence of conditional statements that produces sensible trades until two constraints disagree, which is exactly the situation the software was bought to handle. Ask a prospective developer to describe the objective and the ranking before anything else, because the answer separates the two immediately.
Which costs are most often missing from a rebalancing quote?
Custodian count, since each additional one brings its own formats, position quirks and rejection behaviour and is weeks of work rather than a setting. Then direct indexing style harvesting across hundreds of securities, which is a different project rather than an extension. Then options and concentrated stock handling, multi year transition modelling across future tax years, and the workstream needed to write down your constraint hierarchy with your investment committee.
How many people should be working on my software project?
Three to five for a typical focused build: a project lead, one or two engineers, a designer, and part-time QA, which is the standard shape across 2,000+ Digital Heroes projects. Larger platforms justify 6 to 10, but a ten-person team on a small first version usually signals bill padding rather than horsepower. What predicts success is whether a senior engineer is writing your code daily, not the headcount on the proposal.
Our developer disappeared mid-project. Can another team pick up the code?
Yes, this is a routine engagement, provided the code exists somewhere you can access, so your first move is securing the repository, hosting, and domain credentials today. A takeover starts with a one to two week paid code audit that ends in one of three verdicts: continue the build, keep the design but rebuild the weak parts, or start over. Digital Heroes has inherited enough projects to say plainly that sometimes the rebuild is cheaper than the rescue, and an honest agency will tell you which one you have before taking your money.
Is a solo freelancer enough for my project, or do I really need an agency?
A solo freelancer is a fine choice for a well-defined build under roughly $15,000 to $20,000 with a limited lifespan: an internal calculator, a scripted integration, a prototype. Above $50,000, or for any system your business will depend on for years, you are buying continuity as much as code: enforced code review, cover when someone is ill, and support that outlasts one person's career plans. Price the risk of a single point of failure, not just the hourly rate.
Is it cheaper to customize Salesforce than to build a custom CRM from scratch?
If you use less than a third of what Salesforce does, a custom CRM is often cheaper by year three. Salesforce Enterprise lists at $165 per user per month, so 25 seats cost about $49,500 a year before admin and consultant fees, while a focused custom CRM runs $60,000 to $100,000 once plus 15 to 20% a year in maintenance. If you genuinely need Salesforce's ecosystem, reporting, and app marketplace, customizing it beats rebuilding it; the mistake is paying enterprise prices to use it as a glorified contact list.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
What is the biggest mistake first-time software buyers make?
Choosing the lowest quote without asking why it is the lowest. A bid 40% under the field usually gets there by skipping tests, documentation, and code review, which are invisible in a demo and brutal to pay for later; every stalled project Digital Heroes has been asked to rescue tells some version of that story. The second mistake is signing without a written scope, which reliably turns the winning cheap quote into 1.5x to 2x the price by launch.
How long does it take from first call to software my team can actually use?
Plan for four to six months: two to three weeks of discovery, two to four weeks of design, then a 10 to 16 week build with testing. In Digital Heroes delivery experience the schedule killer is not engineering speed but decision lag; a client who takes two weeks to approve wireframes adds two weeks to launch. Book a weekly 30-minute decision slot before kickoff and most of that risk disappears.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
Yes, and connecting your existing tools is one of the main reasons to build custom: mainstream platforms like QuickBooks, Stripe, Shopify, and Google Workspace all publish documented APIs. Budget 1 to 3 weeks of work per integration depending on API quality and how much data flows in both directions. Ask any vendor whether they have integrated with your specific tools before, because quirks like QuickBooks' OAuth token handling and API rate limits get learned on someone's project, and it should not be yours.
Can I build my product on a no-code tool like Bubble instead of hiring developers?
For testing whether anyone wants the product, yes, and Bubble's paid plans start at $29 a month, which is the cheapest validation you will ever buy. The ceiling arrives with complex data relationships, heavy integrations, performance at a few thousand users, and the fact that you cannot export a Bubble app to servers you control. A path many Digital Heroes clients take: prove demand on no-code, then rebuild custom once revenue justifies it, treating the no-code version as a paid prototype rather than a foundation.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
Who can build a custom software system?

Digital Heroes builds custom software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?