Robo-Advisor Pre-Launch Data Coverage Checklist
Robo-advisors operate at the intersection of consumer-friction (must onboard fast) and fiduciary obligation (must produce best-interest recommendations). The SEC's 2021 robo-advisor risk-alert documented the gaps that recur — incomplete profiling, allocation-mismatch, missing audit trail, hands-off maintenance. Most of these gaps trace back to data the system didn't collect or didn't carry forward. This checklist enumerates the data and event coverage your robo platform should support before launch. Items map to specific SEC findings.
Risk profiling & investor characterization
- Risk-tolerance score with questionnaire trail
Numeric or categorical risk score with the underlying question-by-question response trail and the date taken. Score without the questionnaire trail is a 2021-sweep finding.
risk_profile.score, .questionnaire_responses[], .completed_at - Risk-capacity (vs. tolerance) decoupling
Risk-capacity field distinct from risk-tolerance — capacity reflects the household's ability to absorb loss, tolerance reflects willingness. Conflating them produces over-aggressive allocations for high-tolerance / low-capacity clients.
risk_profile.capacity_score, .tolerance_score - Time horizon per goal
Time horizon for each financial goal, not a single household horizon. A 60-year-old with a 5-year college-funding goal and a 25-year retirement-income goal needs different horizons by sub-portfolio.
goals[].time_horizon_years - Liquidity needs and emergency-fund coverage
Documented liquidity reserve target and current coverage. Robos that allocate 100% of household assets in long-horizon equities even when emergency-fund coverage is zero are a fiduciary risk.
liquidity.reserve_target, .current_coverage_months - Annual reassessment trigger
Per FINRA / SEC guidance, annual reassessment trigger or material-life-event trigger. The trigger inventory plus reassessment-execution log must reconcile.
risk_profile.next_reassessment_due, reassessment_log[]
Allocation & portfolio construction
- Target allocation per goal sub-portfolio
Target allocation defined at the goal-portfolio level rather than household level. Multi-goal robos must allocate per goal, not aggregate.
goals[].target_allocation - Allocation drift tolerance bands
Per-asset-class drift tolerance bands that trigger rebalancing. Static rebalancing schedules without drift bands are inferior on tax-efficiency.
rebalance.drift_tolerance_bands[] - Tax-aware vs. tax-agnostic mode flag
Account-level flag for tax-aware mode (taxable accounts) vs. tax-agnostic (tax-deferred). Same-rule rebalancing across both produces unnecessary tax drag.
accounts[].tax_aware_mode - Asset-location optimization signal
Signal indicating which asset classes belong in which account types (bonds in tax-deferred, equities in taxable, REITs in tax-deferred). Robos that don't asset-locate leave alpha on the table.
asset_location.optimal_placement[]
Trading, rebalancing, and tax events
- Lot-level cost basis tracking
Lot-by-lot cost basis with acquisition date and cost. Aggregate average-cost basis is insufficient for tax-aware harvesting and Specific-ID accounting.
lots[].acquisition_date, .cost_basis, .shares - Wash-sale prevention across accounts
Wash-sale check across all accounts in the household (taxable, IRAs, spouse's accounts). Robos that check only the trading account miss ~6% of wash-sale conflicts.
trading.wash_sale_prevention.cross_account == true - Tax-loss harvesting candidate identification
Continuous identification of TLH candidates with realized vs. unrealized loss tracking, $3,000 ordinary-income offset cap, and replacement-security inventory.
tlh.candidates[], tlh.replacement_inventory[] - Corporate-action handling
Handling for splits, mergers, spin-offs, dividends, and special distributions. Each corporate action must update lot-level basis correctly.
corporate_actions[].type, .effect_on_lots - 1099-B / 1099-DIV / 1099-R artifact generation
Year-end tax-form artifacts generated automatically with reconciliation to underlying lot transactions. Mismatches between 1099-B and lot-level history are tax-season trust hits.
tax_artifacts[].form_type, .reconciliation_status
Best-interest & audit trail
- Recommendation rationale per allocation change
For every allocation change presented to the client, a structured rationale explaining the change. Required for the Care Obligation arm of Reg BI.
recommendations[].rationale, .triggered_by - Disclosure acknowledgment timestamps
Form CRS, ADV Part 2A, and product-specific disclosure acknowledgment timestamps. Robos with no acknowledgment trail can't demonstrate disclosure delivery.
disclosures[].type, .acknowledged_at - Conflict-of-interest documentation
If the robo uses proprietary funds or has revenue-sharing arrangements, the conflict-of-interest disclosure with acknowledgment is mandatory.
conflicts[].type, .disclosure_text, .acknowledged_at - Decision audit trail (input → recommendation → execution)
End-to-end audit trail showing inputs to the recommendation engine, the recommendation produced, the client decision, and the execution. Examiners walk this trail end-to-end.
audit_trail[].decision_id, .inputs, .recommendation, .executed
Maintenance & ongoing supervision
- Material-life-event detection signals
Signals to detect material life events (large deposit, large withdrawal, address change, new account) that should trigger profile reassessment. Hands-off post-onboarding is a 2021 sweep finding.
supervision.life_event_signals[] - Inactive-account flagging
Flagging for inactive accounts where rebalancing or contribution patterns have stalled. Useful for proactive outreach.
supervision.inactivity_flags[] - Performance reporting with benchmark comparison
Quarterly performance reporting with appropriate benchmark comparison and net-of-fee disclosure. Misrepresentations here are an enforcement focus under the Marketing Rule.
reporting.quarterly[].benchmark, .net_of_fee_returns
Key takeaways
- The SEC's 2021 robo-advisor sweep findings cluster in profiling depth (capacity vs. tolerance, time horizon per goal) and ongoing supervision (no life-event detection, no reassessment trigger).
- Lot-level cost basis is the foundation for everything tax-aware — TLH, asset location, corporate actions, year-end forms. Aggregate-cost-basis robos can't credibly claim tax-awareness.
- Cross-account wash-sale prevention catches ~6% more conflicts than single-account checks. Without it, tax-aware claims are partially false advertising.
- Audit trail is the compliance artifact regulators ask for first. Recommendation rationale + disclosure acknowledgment + execution trace must be retrievable end-to-end.