18 unstable releases (3 breaking)

0.5.3 Jul 6, 2024
0.5.0 Jun 17, 2024
0.3.6 Jan 15, 2024
0.3.0 Dec 30, 2023
0.2.9 Nov 26, 2023

#34 in Visualization

Download history 6/week @ 2024-03-28 118/week @ 2024-04-04 22/week @ 2024-04-11 1/week @ 2024-05-16 128/week @ 2024-06-13 22/week @ 2024-06-20 83/week @ 2024-06-27 335/week @ 2024-07-04 16/week @ 2024-07-11

467 downloads per month

MIT license

195KB
3K SLoC

Finalytics

Crates.io Docs.rs License Homepage CodeFactor

Finalytics is a Rust library designed for retrieving financial data and performing security analysis and portfolio optimization.

Installation

Add the following to your Cargo.toml file:

[dependencies]
finalytics = {version = "0.5.3", features = ["kaleido"]}

Or run the following command:

cargo install finalytics --features kaleido

Documentation

View the library documentation on docs.rs or visit the homepage

Security Analysis

use std::error::Error;
use finalytics::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {

    // Instantiate the Ticker Object
    let ticker = TickerBuilder::new()
        .ticker("AAPL")
        .start_date("2023-01-01")
        .end_date("2024-01-01")
        .interval(Interval::OneDay)
        .benchmark_symbol("^GSPC")
        .confidence_level(0.95)
        .risk_free_rate(0.02)
        .build();
    
    // Display the Security Analysis Results
    let performance_stats = ticker.performance_stats().await?;
    println!("{:?}", performance_stats);
    
    let performance_chart = ticker.performance_chart().await?;
    performance_chart.show();

    Ok(())

}

Portfolio Optimization

use std::error::Error;
use finalytics::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    
   // Construct the Portfolio Object
    let ticker_symbols = Vec::from(["NVDA", "BRK-A", "AAPL", "ZN=F"]);
    let portfolio = PortfolioBuilder::new().ticker_symbols(ticker_symbols)
                                            .benchmark_symbol("^GSPC")
                                            .start_date("2020-01-01")
                                            .end_date("2023-01-01")
                                            .interval(Interval::OneDay)
                                            .confidence_level(0.95)
                                            .risk_free_rate(0.02)
                                            .max_iterations(1000)
                                            .objective_function(ObjectiveFunction::MaxSharpe)
                                            .build().await?;

    // Display Portfolio Optimization Results
    println!("{:?}", portfolio.performance_stats);
    portfolio.performance_chart()?.show();

    Ok(())
}

Sample Applications

Ticker Charts Viewer

This sample application allows you to perform security analysis based on the Finalytics Library.

Portfolio Charts Viewer

This sample application enables you to perform portfolio optimization based on the Finalytics Library.

Telegram Bot

The Finalytics Telegram Bot allows you to perform security analysis, portfolio optimization and news sentiment analysis directly from Telegram.

Python Binding

pypi License Homepage Documentation Status Platform Python Version PePy

Installation

pip install finalytics

Documentation

View Library documentation on readthedocs here

Security Analysis

from finalytics import Ticker

ticker = Ticker(symbol="AAPL",
                start="2023-01-01",
                end="2024-01-01",
                interval="1d",
                confidence_level=0.95,
                risk_free_rate=0.02)

print(ticker.performance_stats())
ticker.performance_chart().show()

Portfolio Optimization

from finalytics import Portfolio

portfolio = Portfolio(ticker_symbols=["AAPL", "GOOG", "MSFT", "BTC-USD"], 
                      benchmark_symbol="^GSPC", start_date="2020-01-01", end_date="2023-01-01", interval="1d", 
                      confidence_level=0.95, risk_free_rate=0.02, max_iterations=1000, 
                      objective_function="max_sharpe")

print(portfolio.get_optimization_results())
portfolio.portfolio_chart(chart_type="performance").show()

Dependencies

~45–61MB
~1M SLoC