后端实现:
- 新增PortfolioNavHistory实体,记录每日净值、成本、收益率
- 实现IPortfolioNavService接口,支持净值计算和历史回填
- 支持基于交易记录完整计算历史净值(买入卖出都会更新)
- 计算统计指标:最大回撤、夏普比率、波动率
新增API:
- GET /api/v1/portfolio/{id}/nav-history - 获取净值曲线
- POST /api/v1/portfolio/{id}/nav-history/backfill - 回填历史净值
- POST /api/v1/portfolio/{id}/nav-history/calculate - 计算当日净值
数据库:
- 新增portfolio_nav_history表迁移脚本
- 支持组合级别的净值历史记录
35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using AssetManager.Models.DTOs;
|
|
|
|
namespace AssetManager.Services;
|
|
|
|
/// <summary>
|
|
/// 组合净值历史服务接口
|
|
/// </summary>
|
|
public interface IPortfolioNavService
|
|
{
|
|
/// <summary>
|
|
/// 获取组合净值历史曲线
|
|
/// </summary>
|
|
Task<NavHistoryResponse> GetNavHistoryAsync(string portfolioId, string userId, NavHistoryRequest request);
|
|
|
|
/// <summary>
|
|
/// 计算并保存单个组合当日净值
|
|
/// </summary>
|
|
Task<bool> CalculateAndSaveDailyNavAsync(string portfolioId);
|
|
|
|
/// <summary>
|
|
/// 批量计算所有组合当日净值(定时任务调用)
|
|
/// </summary>
|
|
Task<int> CalculateAllPortfoliosDailyNavAsync();
|
|
|
|
/// <summary>
|
|
/// 回填历史净值(基于交易记录完整计算)
|
|
/// </summary>
|
|
Task<BackfillNavResponse> BackfillNavHistoryAsync(string portfolioId, string userId, bool force = false);
|
|
|
|
/// <summary>
|
|
/// 删除指定日期之后的净值记录(交易修改后重新计算)
|
|
/// </summary>
|
|
Task<int> DeleteNavHistoryAfterDateAsync(string portfolioId, DateTime date);
|
|
}
|