I am running strategy in multipass mode. Is there a way to get the key result statistics in an excel or text file for analysis?

]]>To get the actual statistics you currently have to calculate them like so:

```
import qnt.stats as qns
data = qndata.cryptodaily_load_data(min_date="2014-01-01") # or whenever your backtest started
stats = qns.calc_stat(data, weights)
```

And if you really need them as xls file you can do:

```
stats.to_pandas().to_excel('stats.xls') # I got a ModuleNotFoundError the first time - pip install did the trick.
```

Allthough I can't recommend xls because at least LibreOffice becomes very slow / unresponsive when handling such a file.

Getting the statistics after a backtest could be a little simpler, which brings me to a feature request:

@support

Do you think you could add a parameter to the backtester which makes it return the statistics? They get calculated anyway by default, but we only see a truncated printout or the plots and can't use them for further analysis.

.

In my local environment I did it like this in qnt.backtester.py:

- Add the parameter
*return_stats: bool = False*to the parameters of the*backtest*function - From line 353 onward my backtester now looks like this:

```
qnout.write(result)
qnstate.write(state)
if return_stats:
analyze = True
out = [result]
if analyze:
log_info("---")
stats = analyze_results(result, data, competition_type, build_plots, start_date)
if return_stats:
out.append(stats)
if args_count > 1:
out.append(state)
if len(out) == 1:
out = out[0]
return out
finally:
qndc.set_max_datetime(None)
```

- And of course I made
*analyze_results*return the statistics like so (line 458 in the original):

```
if not build_plots:
log_info(stat_global.to_pandas().tail())
return stat_global # here
log_info("---")
log_info("Calc stats per asset...")
stat_per_asset = qnstat.calc_stat(data, output, per_asset=True)
stat_per_asset = stat_per_asset.loc[output.time.values[0]:]
if is_notebook():
build_plots_jupyter(output, stat_global, stat_per_asset)
else:
build_plots_dash(output, stat_global, stat_per_asset)
return stat_global # and there
```

This might not be the most elegant solution but you get the idea.

Now I can get the statistics immediately after the backtest with

```
weights, stats = backtest(...return_stats=True)
```

and can do further analysis.

For instance, I started to calculate the correlations between my strategies to avoid uploading more of the same to the contest.

It would be nice to have this feature in a future version, so I don't have to mess with the backtester after each update

Best regards

]]>More in general, you can simply save csv files inside your online root directory, and then click on the "Download" buttons for storing them locally.

You can convert them to csv using:

```
weights.to_pandas().to_csv("weights.csv")
```

You can also use pickle:

```
import os
import pickle
def save_object(obj, filename):
with open(filename, 'wb') as output:
pickle.dump(obj, output, pickle.HIGHEST_PROTOCOL)
save_object(indicators, 'indicators.pkl')
```

]]>