Skip to content

Robinhood: fees_usd is always 0, so subscription-lapse detection is inert against this venue #197

Description

@eaitbrahim

From #192. keel_broker_robinhood.adapter.get_fee_summary returns fees_usd=Decimal("0") unconditionally, because Robinhood's v2 API exposes no account-level fees-paid total.

FeeSummary's own docstring states that its consumer is subscription lapse detection: a fee charged while the user claims a fee-free allowance contradicts the claim. With fees_usd pinned at zero, that contradiction can never be observed against Robinhood — the check does not error, it silently always passes. A rail that always passes is worse than an absent one, because it reads as coverage.

volume_usd and volume_window are genuine (thirty_day_volume, trailing_30d), so the volume half of the check is real; only the fees half is inert.

Likely fix: page order history and sum fee_charged across filled orders (v2 exposes fee_charged per order). Cost: one paginated sweep per fee summary, against a 100 req/min sustained limit.

Until fixed: this must not be treated as a working rail on Robinhood. Blocks wiring — see the prerequisites issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase-3Execution/rails/agentrailsUn-overridable safety rail / guard (Compliance & rails)

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions