Rust金融投资库investments的使用,高效管理投资组合与资产分析的Rust插件库
Rust金融投资库investments的使用,高效管理投资组合与资产分析的Rust插件库
Investments是一个帮助管理投资的Rust库,主要功能包括:
主要功能
- 分析:通过将投资组合表现与银行美元和卢布存款表现进行比较,计算现金投资的平均回报率。在计算投资组合表现时考虑税收、佣金、股息、税收减免和可选通胀
- 回测:根据配置的基准对投资组合进行回测
- 投资组合再平衡:指导提交哪些订单以使投资组合与资产配置保持一致
- 股票卖出模拟:计算收入、利润、税收和考虑税收后的实际利润百分比
- 自动生成税务报表:读取经纪商报表并修改*.dcX文件(俄罗斯税务程序Декларация创建),添加有关股票销售收入、已付股息和闲置现金利息的所有必需信息
- 银行存款控制:在一个地方查看所有已开户的银行存款,并获取即将到期存款的通知
- 指标:以Prometheus格式导出分析结果
安装
cargo install investments
或作为库添加到项目中:
investments = "7.9.1"
配置
创建~/.investments/config.yaml
配置文件。需要获取FCS API和Finnhub的API令牌。
使用示例
性能分析
investments analyse
回测
investments backtest
投资组合再平衡
investments rebalance
卖出模拟
investments simulate-sell
存款管理
investments deposits
完整示例代码
use investments::portfolio::Portfolio;
use investments::analysis::Analyzer;
use investments::brokers::BrokerStatement;
use investments::types::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 加载配置文件
let config = investments::config::load()?;
// 解析经纪商报表
let statements = BrokerStatement::parse("path/to/statement.csv")?;
// 创建投资组合
let mut portfolio = Portfolio::new();
// 处理所有报表
for statement in statements {
portfolio.process_statement(&statement)?;
}
// 分析投资组合
let analyzer = Analyzer::new(&config);
let result = analyzer.analyze(&portfolio)?;
// 打印分析结果
println!("{:#?}", result);
Ok(())
}
不支持的功能
目前不支持债券、保证金交易、期货和期权。
免责声明
该工具主要为个人使用开发,计算结果仅供参考,请务必自行验证结果准确性。
1 回复
Rust金融投资库investments的使用指南
介绍
investments
是一个用于金融投资组合管理和资产分析的Rust库,它提供了高效的工具来处理投资数据、计算关键指标和执行投资组合分析。这个库特别适合需要高性能金融计算的Rust开发者,可以用于构建投资分析工具、自动化交易系统或金融研究平台。
主要功能
- 投资组合构建与管理
- 资产回报率计算
- 风险指标分析(波动率、VaR等)
- 投资组合优化
- 资产相关性分析
- 绩效评估指标计算
安装
在Cargo.toml中添加依赖:
[dependencies]
investments = "0.3.0" # 请检查最新版本号
基本使用方法
1. 创建投资组合
use investments::portfolio::{Portfolio, Asset};
fn main() {
// 创建资产
let asset1 = Asset::new("AAPL", 100.0, 150.0); // 名称, 持有数量, 当前价格
let asset2 = Asset::new("MSFT", 50.0, 200.0);
// 创建投资组合
let mut portfolio = Portfolio::new("My Portfolio");
portfolio.add_asset(asset1);
portfolio.add_asset(asset2);
println!("Portfolio value: ${:.2}", portfolio.value());
}
2. 计算回报率
use investments::returns::{daily_returns, annualized_return};
fn main() {
// 假设这是某资产连续5天的价格
let prices = vec![100.0, 102.0, 101.5, 103.2, 105.0];
// 计算每日回报率
let returns = daily_returns(&prices);
println!("Daily returns: {:?}", returns);
// 计算年化回报率
let ann_return = annualized_return(&returns, 252); // 252个交易日
println!("Annualized return: {:.2}%", ann_return * 100.0);
}
3. 风险分析
use investments::risk::{volatility, value_at_risk};
fn main() {
let returns = vec![0.01, -0.02, 0.015, -0.01, 0.02, -0.005];
// 计算波动率(标准差)
let vol = volatility(&returns);
println!("Volatility: {:.4}", vol);
// 计算95% VaR
let var = value_at_risk(&returns, 0.95);
println!("95% VaR: {:.2%}", var);
}
4. 投资组合优化
use investments::optimization::{mean_variance_optimization};
use investments::statistics::expected_returns;
fn main() {
// 假设有3种资产的历史回报数据
let asset_returns = vec![
vec![0.01, 0.02, -0.01, 0.015], // 资产1
vec![0.005, 0.01, 0.008, 0.012], // 资产2
vec![-0.01, 0.03, 0.02, -0.005], // 资产3
];
// 计算预期回报
let exp_returns = expected_returns(&asset_returns);
// 均值-方差优化
let result = mean_variance_optimization(
&asset_returns,
&exp_returns,
0.02, // 目标回报率
None // 无权重约束
);
println!("Optimal weights: {:?}", result.weights);
println!("Portfolio volatility: {:.4}", result.volatility);
}
高级功能
资产相关性分析
use investments::statistics::correlation_matrix;
fn main() {
let asset_returns = vec![
vec![0.01, 0.02, -0.01, 0.015],
vec![0.005, 0.01, 0.008, 0.012],
vec![-0.01, 0.03, 0.02, -0.005],
];
let corr_matrix = correlation_matrix(&asset_returns);
println!("Correlation matrix:\n{:?}", corr_matrix);
}
绩效评估指标
use investments::performance::{sharpe_ratio, sortino_ratio};
fn main() {
let portfolio_returns = vec![0.01, -0.02, 0.015, -0.01, 0.02];
let risk_free_rate = 0.005;
let sharpe = sharpe_ratio(&portfolio_returns, risk_free_rate);
let sortino = sortino_ratio(&portfolio_returns, risk_free_rate);
println!("Sharpe ratio: {:.2}", sharpe);
println!("Sortino ratio: {:.2}", sortino);
}
完整示例Demo
下面是一个综合使用investments库的完整示例:
use investments::{
portfolio::{Portfolio, Asset},
returns::{daily_returns, annualized_return},
risk::{volatility, value_at_risk},
statistics::{correlation_matrix, expected_returns},
performance::{sharpe_ratio, sortino_ratio},
optimization::mean_variance_optimization
};
fn main() {
// 1. 创建投资组合
let mut portfolio = Portfolio::new("My Investment Portfolio");
portfolio.add_asset(Asset::new("AAPL", 100.0, 150.0));
portfolio.add_asset(Asset::new("GOOGL", 30.0, 2500.0));
portfolio.add_asset(Asset::new("TSLA", 50.0, 700.0));
println!("Portfolio value: ${:.2}", portfolio.value());
// 2. 计算回报率
let aapl_prices = vec![145.0, 146.2, 148.5, 147.8, 150.2, 152.5];
let returns = daily_returns(&aapl_prices);
let ann_return = annualized_return(&returns, 252);
println!("AAPL annualized return: {:.2}%", ann_return * 100.0);
// 3. 风险分析
let portfolio_returns = vec![0.02, -0.01, 0.015, -0.005, 0.03, -0.02];
println!("Portfolio volatility: {:.4}", volatility(&portfolio_returns));
println!("95% VaR: {:.2}%", value_at_risk(&portfolio_returns, 0.95) * 100.0);
// 4. 资产相关性分析
let asset_returns = vec![
vec![0.01, 0.02, -0.01, 0.015], // AAPL
vec![0.005, 0.01, 0.008, 0.012], // GOOGL
vec![-0.01, 0.03, 0.02, -0.005] // TSLA
];
println!("Correlation matrix:\n{:?}", correlation_matrix(&asset_returns));
// 5. 投资组合优化
let exp_returns = expected_returns(&asset_returns);
let result = mean_variance_optimization(
&asset_returns,
&exp_returns,
0.015, // 目标回报率1.5%
None
);
println!("Optimized weights: {:?}", result.weights);
// 6. 绩效评估
let risk_free = 0.003;
println!("Sharpe ratio: {:.2}", sharpe_ratio(&portfolio_returns, risk_free));
println!("Sortino ratio: {:.2}", sortino_ratio(&portfolio_returns, risk_free));
}
注意事项
- 金融计算通常需要高精度,确保使用适当的数据类型
- 实际应用中应考虑数据的完整性和质量
- 投资决策不应仅基于这些计算结果,需综合考虑多方面因素
- 对于大型数据集,考虑使用并行计算提高性能
这个库提供了构建金融分析工具的基础组件,你可以根据需要扩展功能或将其集成到更大的系统中。