3 releases
new 0.1.2 | Jan 8, 2025 |
---|---|
0.1.1 | Jan 4, 2025 |
0.1.0 | Jan 2, 2025 |
#48 in Finance
261 downloads per month
235KB
744 lines
rs-backtester
rs-backtester is a financial backtesting library written entirely 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 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
- you can read a report of the backtest
Check the examples folder for more!
Dependencies
~13–24MB
~335K SLoC