Short answer: Wealth management software development means building the system of record for client accounts, positions, transactions, performance, fees and reports, fed by custodian and market data and checked by daily reconciliation. Scope it module by module, settle first which features would be licensed advice or portfolio management, and accept the work against tested performance, fee and reconciliation cases and an audit trail nobody can edit.
A wealth platform is trusted for what a feature list does not show: positions that agree with the custodian every morning, reproducible returns, fee bills that follow the contract, and screens that do not quietly become advice.
Disclosure: Fincode sells this kind of work, so this guide is not neutral on that point. For wealth platforms Fincode offers read-only reporting and data work and is not a licensed firm; it does not build advice or portfolio management features or supply investment rules. Rules below were read on official pages on 6 November 2026 and depend on the jurisdiction. This is not legal advice.
What does wealth management software include?
A wealth platform is a set of modules around one book of record, and each module needs its own written specification.
| Module | Holds or does | Specify in writing |
|---|---|---|
| Accounts and households | Clients, accounts, mandates, household groups | Which accounts share fee breakpoints |
| Book of record | Positions, cash and every transaction as a dated event | Transaction types, trade or settlement date, how corrections are stored |
| Prices and reference data | Prices, FX rates, identifiers, corporate actions | Source and time per asset class, what a missing price does |
| Performance | Returns by account, household and composite | Time- or money-weighted, gross or net of fees, valuation frequency |
| Fees and billing | Fee calculation, invoices, fee debits | Tier method, valuation basis, day count, proration |
| Client reports and portal | Statements, performance reports, documents | Content, frequency, cut-off, required legends |
| Advisor workflow | Tasks, notes, reviews, approvals, documents | Who approves what, what is kept and for how long |
| Controls | Reconciliation, access rights, audit log | Break tolerances, who may correct data |
Portfolio management software development and investment platform development usually mean the same core with a different front end: an advisor desk, a client app or an investor portal (more in the fintech software guides).
Where wealth software turns into regulated advice
Recommending, managing or executing for clients is regulated in the EU, the US and Turkey, and the authorization belongs to the firm that runs the platform, not to the developer.
| Feature | How the rules read it |
|---|---|
| Holdings, performance and fee reports from the client's own data | Not investment advice under MiFID II if nothing is recommended; in the US, regular paid reports on securities can fall within the adviser definition (Advisers Act Section 202(a)(11)) |
| Personalized buy, sell or rebalancing proposals | Investment advice: personal recommendations on transactions in financial instruments (MiFID II Article 4(1)(4)), with a suitability check (Article 25(2)) |
| Automatic rebalancing of client accounts | Portfolio management: discretionary mandates, client by client (Article 4(1)(8)) |
| Order entry or transmission | An investment service in the EU (MiFID II Annex I, Section A(1)) and Turkey (Law No. 6362 Article 37(1)(a)) |
| Moving client money: payments, transfers, wallets | Payment services, which in Turkey only banks and the other payment service providers listed in Law No. 6493 Article 13 may offer |
In Turkey, Article 37(1) of Capital Markets Law No. 6362 also lists portfolio management and investment advice, and Article 39(1) requires Capital Markets Board (SPK, also CMB) permission and reserves them for investment firms, subject to the rules for portfolio management companies; payment institutions are licensed by the Central Bank of the Republic of Türkiye (TCMB, also CBRT) under Article 14(1) of Law No. 6493. SEC staff guidance of February 2017 says robo-advisers are subject to the Advisers Act's substantive and fiduciary obligations and suggests policies on testing their code and overseeing any third party that develops it.
Fincode's data and analysis app work is on its fintech app development page; the last four rows need a licensed firm whoever writes the code.
Custodian data feeds and daily reconciliation
Reconcile positions, cash and transactions against each custodian's records every business day, and keep a break out of reports and fee bills until it is resolved.
- Custodian feeds: holdings and transactions by file, API or message; specify delivery time, identifiers, and how late or corrected files arrive.
- Prices and FX: source, snapshot time and a license covering display to clients (see the stock market data API guide; Turkish fund prices are in the TEFAS, KAP and EVDS guide).
- Held-away assets: label anything a client types in as client-entered, never as custodian-confirmed.
The sample compares one day's positions on synthetic data and refuses to guess: duplicate rows, blank identifiers and unreadable quantities are reported, not matched.
from decimal import Decimal, InvalidOperation
def norm(v):
return "" if v is None else str(v).strip().upper()
def index_rows(rows, source):
groups, problems, book, bad = {}, [], {}, set()
for n, r in enumerate(rows, 1):
key = (norm(r.get("account")), norm(r.get("instrument")))
if all(key):
groups.setdefault(key, []).append(r.get("qty"))
else:
problems.append(f"{source} row {n}: blank account or instrument")
for key, qtys in groups.items():
try:
q = Decimal(str(qtys[0]))
except InvalidOperation:
q = Decimal("NaN")
if len(qtys) > 1:
problems.append(f"{source}: {len(qtys)} rows for {key}, not compared")
elif not q.is_finite():
problems.append(f"{source}: unreadable quantity {repr(qtys[0])} for {key}")
else:
book[key] = q
continue
bad.add(key)
return book, bad, problems
def reconcile(custodian_rows, internal_rows):
cust, bad_c, breaks = index_rows(custodian_rows, "custodian")
ours, bad_i, more = index_rows(internal_rows, "internal")
breaks += more
for key in sorted((cust.keys() | ours.keys()) - bad_c - bad_i):
c, o = cust.get(key), ours.get(key)
if c == o:
continue
if c is None or o is None:
breaks.append(f"{key}: only in the {'internal' if c is None else 'custodian'} book")
else:
breaks.append(f"{key}: custodian {c}, internal {o}")
return breaks
# Synthetic data: (account, instrument, quantity)
custodian = [("A-1", "FD-002", "300"), ("A-1", "FD-002", "50"), ("A-1", "BD-005", "1000.00"),
("A-2", "", "10"), ("A-2", " ", "4"), ("A-2", "BD-003", "NaN")]
internal = [("a-1", "fd-002", "350"), ("A-1", "BD-005", "990"), ("A-2", "BD-003", "10"), ("A-3", "EQ-001", "5")]
def as_rows(data):
return [dict(zip(("account", "instrument", "qty"), t)) for t in data]
for line in reconcile(as_rows(custodian), as_rows(internal)):
print(line)Output:
custodian row 4: blank account or instrument
custodian row 5: blank account or instrument
custodian: 2 rows for ('A-1', 'FD-002'), not compared
custodian: unreadable quantity 'NaN' for ('A-2', 'BD-003')
('A-1', 'BD-005'): custodian 1000.00, internal 990
('A-3', 'EQ-001'): only in the internal bookThe custodian sent two rows for FD-002 (300 and 50) against 350 in the internal book. A last-row-wins lookup would report a false break, and silent summing would hide a doubled row, so the specification must say whether a feed may carry several rows per holding. Parse JSON feeds with json.loads(text, parse_float=Decimal): in a test run the standard parser turned 1e400 into inf, which the check rejects, and 1e-400 into 0.0, which nothing downstream can see. Break handling is covered in position reconciliation.
Performance and fee calculations to test before launch
Give every candidate the same hypothetical account and ask for the same figures: methods that sound alike produce different numbers.
The voluntary GIPS standards (2020 edition, effective 1 January 2020) give a precise reference: time-weighted returns unless set criteria are met (1.A.35), valuation at least monthly and on every large cash flow (2.A.23), and geometric linking of sub-period returns (2.A.24).
Hypothetical quarter. An account holds 100,000 at 31 December 2025 and gains 10% in January to 110,000. After the 31 January valuation the client adds 100,000. February loses 10% (189,000) and March gains 5% (198,450).
- Time-weighted return: 1.10 × 0.90 × 1.05 − 1 = +3.95%.
- Money-weighted return (internal rate of return for the 90-day quarter, not annualized): −0.94%. The client paid in 200,000 and holds 198,450.
Both are right: the first measures the manager, the second what the client experienced, so a report must say which one it shows.
| Reading | Annual fee | First-quarter 2026 bill |
|---|---|---|
| Each slice at its own rate, bill = one quarter | 17,500.00 | 4,375.00 |
| Each slice at its own rate, 90/365 days | 17,500.00 | 4,315.07 |
| Whole balance at the band's rate, one quarter | 15,000.00 | 3,750.00 |
So the contract must name the tier method, valuation basis (period-end or average daily), day count, proration for flows, which accounts share breakpoints and where rounding happens.
Client reports and record keeping: what the rules ask
The operator's regulator sets report content, frequency and record retention, so list the applicable rules before designing any report.
| Rule | What it requires | What it means for the software |
|---|---|---|
| SEC Rule 206(4)-2(a)(2), (3) | Custodian statements at least quarterly; an adviser that opened the custody account and sends its own statements must urge clients to compare them | Clients will check your figures against the custodian's |
| SEC Rule 206(4)-1(d) | In advertisements, gross performance only beside net performance of at least equal prominence, and 1-, 5- and 10-year periods for any portfolio except private funds | Store gross and net returns for fixed calendar periods |
| SEC Rule 204-2(a)(16), (e)(3) | Keep records that demonstrate any performance shown, for five years after the end of the fiscal year it was last disseminated | Keep inputs (prices, flows, fees), not only results |
| EU Delegated Regulation 2017/565 Articles 60(3), 62(1) | Portfolio management statements every three months as a rule; a notice by the end of the business day when value falls 10% from the period start, and at each further 10% | A quarterly report job, daily valuation, dated alert records |
| Article 72(1) | Corrections, and the content before them, must be easy to ascertain; records must not be otherwise alterable | Corrections as new entries, never edits |
Professional clients get the Article 60 and 62 reports, which implement MiFID II Article 25(6), only if they ask (Article 29a(2)).
An audit trail that holds up
- Every change is a new event recording who, when, why and the previous value.
- Each report sent is stored with the data and calculation version behind it.
- Access is limited to authorized staff, as SEC Rule 204-2(g)(3) requires for electronic records, and every access is logged.
Wealth management software solutions: build or buy?
License or buy what is the same for every firm, and build only where your clients, assets or workflow differ, because every custom module is one you maintain.
| Factor | Points to buying | Points to building |
|---|---|---|
| Where you differ | A standard advisory workflow | An asset class or client experience packages handle poorly |
| Data feeds | A package already reads your custodians | Local sources no package covers |
| Rule changes | The supplier updates reports when rules change | You can track and test rule changes yourself |
| Data and exit | A full export in a documented format is in the contract | No package offers a usable export |
A common middle route keeps a purchased core system as the book of record and builds a read-only reporting layer on its interface; Fincode's market data pipelines page describes that kind of data work. What moves effort is covered in fintech app development cost.
How to compare quotes for wealth management software
Send every candidate the same scope, test account and questions, and compare the answers rather than the headline price.
- Reproduce the hypothetical quarter and fee table above, stating each method.
- Show a reconciliation break report, who resolves a break, and how a corrected transaction is stored with the original still visible.
- State who owns the code, the data and the schema, and how a full export works.
- Name every feature in the scope that needs a license, and who holds it.
Red flags: figures with no stated method, robo-advice or AI recommendations offered with no question about licenses, history editable in place, and reconciliation left out of scope.
For one seller's process, see how Fincode works and Fincode's project and product analysis, a written report on feasibility, data and licensing questions before any code.
Frequently asked questions
How is alternative investment platform development different?
Cash moves through capital calls and distributions, and holdings are valued less often: GIPS requires private market portfolios in composites to be valued at least quarterly for time-weighted returns, and allows money-weighted returns when the firm controls external cash flows and the fund is, for example, closed-end.
How much does wealth management software development cost?
No honest figure exists without a scope: cost follows the modules, feeds, reports, testing and maintenance.
Can a developer build robo-advice features?
Yes, but the firm giving the advice or managing the portfolios needs the license and should supervise the code and whoever writes it, as the SEC staff's 2017 robo-adviser guidance suggests.
How often should positions be reconciled?
Every business day for each custodian, before reports or fee bills use the data, and again after a late or corrected file.
Sources
- eCFR: 17 CFR 275.204-2, books and records to be maintained by investment advisers (up to date as of 4 November 2026) (opens in a new tab)
- eCFR: 17 CFR 275.206(4)-1, investment adviser marketing, paragraph (d) performance (opens in a new tab)
- eCFR: 17 CFR 275.206(4)-2, custody of funds or securities of clients by investment advisers (opens in a new tab)
- SEC Division of Investment Management: IM Guidance Update No. 2017-02, Robo-Advisers (February 2017) (opens in a new tab)
- Directive 2014/65/EU (MiFID II), consolidated text of 6 June 2026: Articles 4(1)(4), 4(1)(8), 25(2), 29a and Annex I (opens in a new tab)
- U.S. Code (govinfo, 2023 edition): 15 U.S.C. 80b-2(a)(11), definition of investment adviser (opens in a new tab)
- U.S. Code (govinfo, 2023 edition): 15 U.S.C. 78o(a)(1), registration of brokers and dealers (opens in a new tab)
- Commission Delegated Regulation (EU) 2017/565, consolidated text of 2 August 2022: Articles 60, 62 and 72 (opens in a new tab)
- CFA Institute: Global Investment Performance Standards (GIPS) for Firms, 2020 edition (opens in a new tab)
- Mevzuat: Capital Markets Law No. 6362, Articles 37 and 39 (Turkish) (opens in a new tab)
- Mevzuat: Law No. 6493 on Payment and Securities Settlement Systems, Payment Services and Electronic Money Institutions, Articles 13 and 14 (Turkish) (opens in a new tab)
- Central Bank of the Republic of Türkiye: Payment services, Law No. 6493 (opens in a new tab)
This guide is general information about software and markets, not investment, legal or tax advice. Automated trading can lose money, past or backtested performance does not guarantee future results, and the rules that apply depend on your jurisdiction and your exchange's terms. Sources, checks and corrections: see the editorial policy.