rs-backtester

Crates.iors-backtester
lib.rsrs-backtester
version0.1.3
created_at2025-01-02 14:00:49.333091+00
updated_at2025-09-01 19:58:37.316394+00
descriptionFinancial backesting library
homepage
repositoryhttps://github.com/nicferrari/backtester
max_upload_size
id1501564
size455,389
(nicferrari)

documentation

README

rs-backtester

Latest version License

rs-backtester is a financial backtesting library entirely written in Rust with the purpose of being easy-to-use yet flexible enough to allow a quick implementation of different strategies

Get started

To get started:

  • Import the necessary modules:
use std::error::Error;
use rs_backtester::backtester::{Backtest, Commission};
use rs_backtester::datas::Data;
use rs_backtester::strategies::{sma_cross};
use rs_backtester::report::{report};
  • Define an instance of the Data class. Market data can be retrieved either through yahoo-finance or read from a CSV file (OHLC format, Volume is not uploaded)
let quotes = Data::load("GOOG.csv","GOOG")?;
  • As an alternative, you can retrieve data directly from yahoo finance with the following which makes use of the crate yahoo-finance-api
let quotes = Data::new_from_yahoo("GOOG","1d","6mo")?;
  • Create a function which returns a Strategy or use one provided by the library.
    A Strategy is basically a vector of Choices (e.g. BUY, SHORTSELL, ...) and the indicator used
let sma_cross_strategy = sma_cross(quotes.clone(), 10,20);
  • Create an instance of the Backtest class
let sma_cross_tester = Backtest::new(quotes.clone(),sma_cross_strategy.clone(),100000f64, Commission::default());
  • Now:
    • you can read a report of the backtest
      report(sma_cross_tester);
      
    • you can produce a log period by period with the requested parameters
      sma_cross_tester.log(&["date","open","high","low","close","position","account","indicator"]);
      
    • you can see the list of trades executed by the strategy
      trade_list(sma_cross_tester);
      
    • you can chart it (with indicators)
      plot(sma_cross_tester,plot_config)?;
      

    • you can save it to CSV for inspection
      sma_cross_tester.to_csv("sma_cross.csv")?;
      
    • you can also compare multiple strategies at once
    • and you can also play with your strategy modifying it by inverting it or transform it in long or short-only

Check the examples folder for more!


## Disclaimer
This software is provided for educational and research purposes only.
The results generated by this library do not guarantee future performance and should not be interpreted as financial advice.
Users are solely responsible for any decisions made based on the outputs of this software.
The authors and contributors of this project disclaim any liability for losses or damages arising from the use of this library.
Commit count: 48

cargo fmt