Fund Detail: NAV Management
Operations By Screen Group
NAV Records
| Button name | Underlying operation | Explanation |
|---|---|---|
| Record NAV | POST /auth/funds/{slug}/nav | Opens the NAV sheet and records a positive USD value per share. The manager may also provide a recorded date and recorder name. |
| Edit NAV record | PATCH /auth/funds/{slug}/nav/{nav_id} | Opens the same sheet with the stored record. The backend updates the existing row instead of creating a correction row. Changing the NAV value clears that record's finalized snapshot. |
| Delete NAV record | DELETE /auth/funds/{slug}/nav/{nav_id} | Attempts to delete the selected row immediately. Referenced pricing or redemption records can block deletion at the database boundary. Tahoe currently provides no confirmation dialog, dependency preview, or undo operation. |
Reporting
| Button name | Underlying operation | Explanation |
|---|---|---|
| Export NAV | GET /auth/funds/{slug}/nav/export | Downloads the fund's NAV history as CSV. The export contains the record id, fund id, NAV, change, percentage change, recorded time, and recorder. |
Display Controls
| Control | Underlying operation | Explanation |
|---|---|---|
| 30D, 90D, or ALL | Local chart-period selection | Filters the already loaded NAV history for the chart. It does not change a NAV record or call a pricing service. |
| Search NAV history | Local table filtering, with the search value also passed on reload | Filters the visible history table. The current NAV list endpoint returns the full fund history and does not apply the search parameter server-side. |
Record NAV Sheet
| Field | Required | Behavior |
|---|---|---|
| NAV | Yes | Positive USD value per share with at most six decimal places. JSON numbers are rejected because the contract requires an exact decimal string. |
| Recorded date | No | Prefilled with today. On a new record, leaving that default unchanged omits recordedAt so the backend stores the actual submission time. Selecting another date stores that date at midnight. |
| Recorded by | No | Prefilled with the signed-in manager. If omitted, the backend derives the manager's name or email. |
The sheet remains open when saving fails so the manager can correct the values. A successful create or edit reloads NAV history and Fund Detail because the newest record affects displayed fund metrics.
Information Shown
NAV History Chart
The chart displays manager-visible NAV records in chronological order. A single record is duplicated as a flat segment so it remains visible. The 30-day and 90-day controls use the browser's current date and compare calendar days.
NAV History Table
| Column | Meaning |
|---|---|
| Recorded By | Stored recorder name or System when none is available. |
| NAV | Manager-visible USD value per share. |
| Change % | Percentage change from the preceding chronological NAV record. |
| Source | webdevelop-api for live records or mock for simulated development data. |
| Date | Stored recordedAt timestamp. Same-day records use record identity as a sorting tiebreaker. |
The backend recalculates absolute and percentage changes across the full chronological history whenever it returns the list. Editing or deleting an older row can therefore change the displayed comparison for later rows.
Recorded NAV And Finalized Dealing NAV
These values must not be treated as interchangeable.
| Value | Writer | Use |
|---|---|---|
| Recorded or display NAV | Fund manager on this page | Historical presentation, fund metrics, and a proposed default for the planned Fulfill in Vault pricing popup. |
| Fulfillment price | Fund manager in Investment Management | Prices one subscription and determines its exact share quantity. This is a planned contract change and must occur only during Fulfill in Vault. |
| Finalized dealing NAV | Investment finalization service outside Tahoe | Canonical valuation snapshot used by protocol pricing and redemption assignment. |
This page has no action that finalizes a dealing NAV. Creating a manual NAV row does not set finalized_at. Editing only the recorder or date preserves any existing finalized snapshot, but changing the NAV value clears finalization because the prior valuation arithmetic no longer matches.
When deletion succeeds, it removes both the display history and any finalized snapshot stored on that row. Deposit and redemption references use restrictive foreign keys and can block deletion. Operators must confirm downstream valuation and redemption dependencies before trying it, even though the current UI does not ask for confirmation.
The current NAV sheet says that the newest value prices new subscriptions. That describes the existing implementation, not the approved target flow. In the target flow, the newest display NAV may prefill Fulfill in Vault, but the manager fixes price_per_share only when submitting that fulfillment.
Actors And Permissions
| Actor | Read history and export | Record, edit, or delete NAV |
|---|---|---|
| Owner | funds.read | nav.write |
| Admin | funds.read | nav.write |
| Ops | funds.read | nav.write |
| Auditor | funds.read | Not permitted |
The backend is the authorization boundary. The current page does not hide Record, Edit, or Delete controls from an auditor, so an unauthorized click reaches the API and receives 403. That missing client-side presentation gate is a product gap.
Controls, Failures, And Recovery
| Condition | Required response |
|---|---|
| NAV is empty, zero, negative, over-precise, or not a canonical decimal string | Correct the value before saving. |
| Save fails | Keep the sheet open, review the mutation error, and retry only after correcting the input or authorization problem. |
| Export fails | Review the page error. No NAV state changes. |
| History is empty | Record the first NAV only when the manager has an approved valuation source. |
| Correcting an older record | Recheck all later percentage changes because the backend recomputes them. |
| Changing a finalized record's NAV value | Treat finalization as cleared and coordinate re-finalization outside Tahoe. |
| Deleting a record | Confirm downstream valuation and redemption dependencies first. Referenced records can fail at the database constraint; a successful delete has no in-product undo. |
| Development mock data is visible | Do not use it as evidence of a recorded or finalized valuation. |
Capability Status
| Capability | Maturity | Execution owner or location | Current boundary |
|---|---|---|---|
| Read NAV history and chart | Live | This page | Requires funds.read; live data comes from fund_nav_records. |
| Record NAV | Live | This page | Requires nav.write; records a manual display value. |
| Edit NAV in place | Live | This page | Requires nav.write; changing the value clears finalization on that row. |
| Delete unreferenced NAV | Live | This page | Requires nav.write; referenced records can be blocked by database constraints, and no confirmation or undo is provided. |
| Export NAV CSV | Live | This page | Requires funds.read. |
| Finalize a dealing NAV | Unsupported | External investment finalization service | No Tahoe page action or fund-manager route performs finalization. |
| Use display NAV as the proposed fulfillment price | Planned | Investment Management | The approved target moves pricing from Accept to Fulfill in Vault. |
Owner Operating Checklist
Before recording NAV
- Confirm the fund, valuation date, calculation source, and responsible recorder.
- Confirm the value represents one share in USD and uses no more than six decimals.
- Determine whether this is a display record or part of an external finalization process.
Before correcting NAV
- Confirm that an in-place edit is acceptable for the audit trail.
- Check whether the record is finalized and whether changing it requires external re-finalization.
- Recheck later change percentages after the correction.
Before deleting NAV
- Confirm the record is not required by a redemption, subscription, report, or finalized valuation trail.
- Record the reason outside this page because the delete command captures no manager note.
- Reload NAV Management and verify which record is now the latest display NAV.
Known Product And Documentation Risks
- The page copy still says the newest NAV prices subscriptions, while the approved target requires pricing only during Fulfill in Vault.
- Record, Edit, and Delete controls are not hidden for auditors even though the backend rejects them.
- Delete has no confirmation, dependency preview, soft-delete state, or undo; dependency conflicts surface only after submission.
- Editing a NAV value clears finalization without a dedicated warning in the sheet.
- In-place correction removes the prior value from the business table; the audit log records that an update occurred but not a complete before-and-after valuation history on this page.
- Repository behavior was verified, but deployed revision and provider configuration were not checked.
Technical Traceability
Frontend
- View:
apps/tahoe/src/views/AdminFundDetailView.vue - ViewModel:
apps/tahoe/src/features/admin/view-models/useTahoeAdminViewModels.ts - Store:
apps/tahoe/src/features/admin/stores/adminStore.ts - API adapter:
apps/tahoe/src/features/fund-manager/data/tahoeApi.ts - NAV ordering helpers:
apps/tahoe/src/utils/navRecords.ts
Fund-Manager API
| Contract | Permission | Purpose |
|---|---|---|
GET /auth/funds/{slug}/nav | funds.read | Return normalized NAV history. |
POST /auth/funds/{slug}/nav | nav.write | Create a manager-entered NAV record. |
PATCH /auth/funds/{slug}/nav/{nav_id} | nav.write | Update an existing record and clear finalization when NAV changes. |
DELETE /auth/funds/{slug}/nav/{nav_id} | nav.write | Permanently delete an existing record. |
GET /auth/funds/{slug}/nav/export | funds.read | Download normalized NAV history as CSV. |
Backend evidence:
../fund-manager-api/app/routes.py../fund-manager-api/app/views/fund_manager_admin/funds.py../fund-manager-api/app/views/fund_manager_admin/common.py../fund-manager-api/app/schemas/fund_manager.py../fund-manager-api/utils/consts/group.py
Focused Tests
apps/tahoe/src/__tests__/adminFundDetailOverview.test.tsapps/tahoe/src/__tests__/adminStore.test.tsapps/tahoe/src/features/fund-manager/data/__tests__/tahoeApi.characterization.test.ts../fund-manager-api/tests/e2e/test_fund_manager_funds.py../fund-manager-api/tests/e2e/test_fund_manager_exports.py
Revision History
| Version | Date | Change |
|---|---|---|
| 1.0 | 2026-08-21 | Initial source-backed project-owner description of NAV Management. |