后端实现:
- 新增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表迁移脚本
- 支持组合级别的净值历史记录
|
||
|---|---|---|
| .. | ||
| AssetManager.Data.csproj | ||
| DatabaseExtensions.cs | ||
| DatabaseService.cs | ||
| MarketKlineCache.cs | ||
| MarketPriceCache.cs | ||
| Portfolio.cs | ||
| PortfolioNavHistory.cs | ||
| README.md | ||
| SqlSugarConfig.cs | ||
| Strategy.cs | ||
| TiingoTicker.cs | ||
| User.cs | ||
AssetManager 数据库使用说明
数据库配置
数据库连接字符串在 SqlSugarConfig.cs 中配置:
ConnectionString = "server=localhost;Database=assetmanager;Uid=root;Pwd=your_password;CharSet=utf8mb4;"
请根据实际情况修改:
server: MySQL服务器地址Database: 数据库名称Uid: 用户名Pwd: 密码
数据库实体类
用户相关
User: 用户基本信息WechatUser: 微信用户信息
资产相关
Asset: 总资产数据Holding: 持仓组合数据
策略相关
Strategy: 策略模板StrategyTag: 策略标签StrategyParameter: 策略参数UserStrategy: 用户自定义策略
投资组合相关
Portfolio: 投资组合Position: 持仓明细Transaction: 交易记录
使用方法
1. 自动初始化(推荐)
在 Program.cs 中已经配置了自动初始化:
builder.Services.AddDatabase();
应用启动时会自动创建所有数据库表。
2. 手动初始化
运行 InitDatabase.cs 中的 Main 方法:
InitDatabase.Main();
这会创建所有表并插入示例数据。
3. 在Service中使用
在Service中注入 DatabaseService 或 ISqlSugarClient:
public class AssetService : IAssetService
{
private readonly ISqlSugarClient _db;
public AssetService(ISqlSugarClient db)
{
_db = db;
}
public List<Holding> GetHoldings()
{
return _db.Queryable<Holding>().ToList();
}
}
Code First 模式
使用 SqlSugar 的 Code First 模式,通过实体类自动创建数据库表:
- 实体类使用
[SugarTable]特性指定表名 - 属性使用
[SugarColumn]特性配置列 - 主键使用
IsPrimaryKey = true - 自增主键使用
IsIdentity = true - 列名映射使用
ColumnName
数据库表结构
users 表
- 用户基本信息、统计数据、会员等级等
wechat_users 表
- 微信用户绑定信息、OpenID、UnionID等
assets 表
- 总资产数据、今日收益、总收益率等
holdings 表
- 持仓组合数据、状态、图标样式等
strategies 表
- 策略模板、风险等级、描述等
strategy_tags 表
- 策略标签关联
strategy_parameters 表
- 策略参数配置
user_strategies 表
- 用户自定义策略配置
portfolios 表
- 投资组合基本信息
positions 表
- 持仓明细、盈亏计算等
transactions 表
- 交易记录、状态跟踪等