diff --git a/asset_backtester/__init__.py b/asset_backtester/__init__.py
new file mode 100644
index 0000000..216e997
--- /dev/null
+++ b/asset_backtester/__init__.py
@@ -0,0 +1,2 @@
+from backtester import Backtest
+from signal import Signal, get_order
\ No newline at end of file
diff --git a/asset_backtester/backtester.py b/asset_backtester/backtester.py
new file mode 100644
index 0000000..e4c4fcd
--- /dev/null
+++ b/asset_backtester/backtester.py
@@ -0,0 +1,119 @@
+import pandas as pd
+import numpy as np
+import pyprind
+
+from strategy.strategy import Strategy
+
+
+class Backtest:
+ """Processes signals from the Strategy object"""
+ def __init__(self, schema):
+ self.schema = schema
+ self._strategy = None
+ self._data = None
+
+ @property
+ def strategy(self):
+ return self._strategy
+
+ @strategy.setter
+ def strategy(self, strat):
+ assert isinstance(strat, Strategy)
+ self._strategy = strat
+
+ @property
+ def data(self):
+ return self._data
+
+ @data.setter
+ def data(self, data):
+ self._data = data
+
+ def run(self, initial_capital=1_000_000):
+ assert self._data is not None
+ assert self._strategy is not None
+
+ self.current_capital = 0
+ self.current_cash = initial_capital
+
+ self.inventory = pd.DataFrame(columns=['symbol', 'cost', 'qty'])
+ self.balance = pd.DataFrame()
+
+ data_iterator = self._data.iter_dates()
+ monthly_iterator = self._data.iter_months()
+
+ rebalancing_days = []
+ for date, _ in monthly_iterator:
+ rebalancing_days.append(date)
+
+ bar = pyprind.ProgBar(data_iterator.ngroups, bar_char='█')
+
+ self.balance = pd.DataFrame(
+ {
+ 'capital': self.current_cash,
+ 'cash': self.current_cash
+ },
+ index=[self.data.start_date - pd.Timedelta(1, unit='day')])
+
+ for date, stocks in data_iterator:
+
+ if date in rebalancing_days:
+ self.rebalance_portfolio(stocks)
+
+ self._update_balance(date, stocks)
+
+ bar.update()
+
+ self.balance['% change'] = self.balance['capital'].pct_change()
+ self.balance['accumulated return'] = (
+ 1.0 + self.balance['% change']).cumprod()
+
+ return self.balance
+
+ def rebalance_portfolio(self, stocks):
+ money_total = self.current_cash + self.current_capital
+ for asset in self._strategy.assets:
+ stock = stocks[stocks['symbol'] == asset.symbol]
+ stock_price = stock[self.schema['Adj Close']].values[0]
+ qty = (money_total * asset.percentage) // stock_price
+ inventory_entry = self.inventory[self.inventory['symbol'] ==
+ asset.symbol]
+ self.inventory.drop(inventory_entry.index, inplace=True)
+ update = pd.Series([asset.symbol, stock_price, qty])
+ update.index = self.inventory.columns
+ self.inventory = self.inventory.append(update, ignore_index=True)
+
+ # Update current cash
+ invested_capital = sum(self.inventory['cost'] * self.inventory['qty'])
+ self.current_cash = money_total - invested_capital
+
+ def _update_balance(self, date, stocks):
+ """Updates positions and calculates statistics for the current date.
+
+ Args:
+ date (pd.Timestamp): Current date.
+ stocks (pd.DataFrame): DataFrame of (daily/monthly) stocks.
+ """
+
+ costs = []
+
+ for asset in self._strategy.assets:
+ asset_entry = stocks[stocks['symbol'] == asset.symbol]
+ inventory_asset_entry = self.inventory[self.inventory['symbol'] ==
+ asset.symbol]
+ cost = asset_entry[self.schema['Adj Close']].values[0]
+ qty = inventory_asset_entry['qty'].values[0]
+ costs.append(cost * qty)
+
+ total_value = sum(costs)
+ self.current_capital = total_value
+ money_total = total_value + self.current_cash
+
+ row = pd.Series(
+ {
+ 'total_value': total_value,
+ 'cash': self.current_cash,
+ 'capital': money_total,
+ },
+ name=date)
+ self.balance = self.balance.append(row)
diff --git a/asset_backtester/datahandler/__init__.py b/asset_backtester/datahandler/__init__.py
new file mode 100644
index 0000000..3abd5ad
--- /dev/null
+++ b/asset_backtester/datahandler/__init__.py
@@ -0,0 +1,2 @@
+from .schema import *
+from .historical_stock_data import HistoricalStockData
\ No newline at end of file
diff --git a/asset_backtester/datahandler/historical_stock_data.py b/asset_backtester/datahandler/historical_stock_data.py
new file mode 100644
index 0000000..6e93179
--- /dev/null
+++ b/asset_backtester/datahandler/historical_stock_data.py
@@ -0,0 +1,80 @@
+import os
+from .schema import Schema
+import pandas as pd
+
+
+class HistoricalStockData:
+ """Historical Stock Data container class."""
+ def __init__(self, file, schema=None, **params):
+ if schema:
+ assert isinstance(schema, Schema)
+ else:
+ self.schema = HistoricalStockData.default_schema()
+
+ file_extension = os.path.splitext(file)[1]
+
+ if file_extension == '.h5':
+ self._data = pd.read_hdf(file, **params)
+ elif file_extension == '.csv':
+ params['parse_dates'] = [self.schema.date.mapping]
+ self._data = pd.read_csv(file, **params)
+
+ columns = self._data.columns
+ assert all((col in columns for _key, col in self.schema))
+
+ date_col = self.schema['date']
+
+ self.start_date = self._data[date_col].min()
+ self.end_date = self._data[date_col].max()
+
+ def apply_filter(self, f):
+ """Apply Filter `f` to the data. Returns a `pd.DataFrame` with the filtered rows."""
+ return self._data.query(f.query)
+
+ def iter_dates(self):
+ """Returns `pd.DataFrameGroupBy` that groups contracts by date"""
+ return self._data.groupby(self.schema['date'])
+
+ def iter_months(self):
+ """Returns `pd.DataFrameGroupBy` that groups contracts by month"""
+ date_col = self.schema['date']
+ iterator = self._data.groupby(pd.Grouper(
+ key=date_col, freq="MS")).apply(lambda g: g[g[date_col] == g[
+ date_col].min()]).reset_index(drop=True).groupby(date_col)
+ return iterator
+
+ def __getattr__(self, attr):
+ """Pass method invocation to `self._data`"""
+
+ method = getattr(self._data, attr)
+ if hasattr(method, '__call__'):
+
+ def df_method(*args, **kwargs):
+ return method(*args, **kwargs)
+
+ return df_method
+ else:
+ return method
+
+ def __getitem__(self, item):
+ if isinstance(item, pd.Series):
+ return self._data[item]
+ else:
+ key = self.schema[item]
+ return self._data[key]
+
+ def __setitem__(self, key, value):
+ self._data[key] = value
+ if key not in self.schema:
+ self.schema.update({key: key})
+
+ def __len__(self):
+ return len(self._data)
+
+ def __repr__(self):
+ return self._data.__repr__()
+
+ def default_schema():
+ """Returns default schema for Historical Options Data"""
+ schema = Schema.canonical()
+ return schema
diff --git a/asset_backtester/datahandler/schema.py b/asset_backtester/datahandler/schema.py
new file mode 100644
index 0000000..355401b
--- /dev/null
+++ b/asset_backtester/datahandler/schema.py
@@ -0,0 +1,163 @@
+class Schema:
+ """Data schema class.
+ Used to run validations and provide uniform access to fields in the data set.
+ """
+
+ columns = [
+ "symbol", "date", "open", "close", "high", "low", "volume", "Adj Close"
+ ]
+
+ def canonical():
+ """Builder method that returns a `Schema` with default mappings"""
+ mappings = {key: key for key in Schema.columns}
+ return Schema(mappings)
+
+ def __init__(self, mappings):
+ assert all((key in mappings for key in Schema.columns))
+
+ self._mappings = mappings
+
+ def update(self, mappings):
+ """Update schema according to given `mappings`"""
+ self._mappings.update(mappings)
+ return self
+
+ def __contains__(self, key):
+ """Returns True if key is in schema"""
+ return key in self._mappings.keys()
+
+ def __getattr__(self, key):
+ """Returns Field object used to build Filters"""
+ return Field(key, self._mappings[key])
+
+ def __setitem__(self, key, value):
+ self._mappings[key] = value
+
+ def __getitem__(self, key):
+ """Returns mapping of given `key`"""
+ return self._mappings[key]
+
+ def __iter__(self):
+ return iter(self._mappings.items())
+
+ def __repr__(self):
+ return "Schema({})".format(
+ [Field(k, m) for k, m in self._mappings.items()])
+
+ def __eq__(self, other):
+ return self._mappings == other._mappings
+
+
+class Field:
+ """Encapsulates data fields to build filters used by strategies"""
+
+ __slots__ = ("name", "mapping")
+
+ def __init__(self, name, mapping):
+ self.name = name
+ self.mapping = mapping
+
+ def _create_filter(self, op, other):
+ if isinstance(other, Field):
+ query = Field._format_query(self.mapping, op, other.mapping)
+ else:
+ query = Field._format_query(self.mapping, op, other)
+ return Filter(query)
+
+ def _combine_fields(self, op, other, invert=False):
+ if isinstance(other, Field):
+ name = Field._format_query(self.name, op, other.name, invert)
+ mapping = Field._format_query(self.mapping, op, other.mapping,
+ invert)
+ elif isinstance(other, (int, float)):
+ name = Field._format_query(self.name, op, other, invert)
+ mapping = Field._format_query(self.mapping, op, other, invert)
+ else:
+ raise TypeError
+
+ return Field(name, mapping)
+
+ def _format_query(left, op, right, invert=False):
+ if invert:
+ left, right = right, left
+ query = "{left} {op} {right}".format(left=left, op=op, right=right)
+ return query
+
+ def __add__(self, value):
+ return self._combine_fields("+", value)
+
+ def __radd__(self, value):
+ return self._combine_fields("+", value, invert=True)
+
+ def __sub__(self, value):
+ return self._combine_fields("-", value)
+
+ def __rsub__(self, value):
+ return self._combine_fields("-", value, invert=True)
+
+ def __mul__(self, value):
+ return self._combine_fields("*", value)
+
+ def __rmul__(self, value):
+ return self._combine_fields("*", value, invert=True)
+
+ def __truediv__(self, value):
+ return self._combine_fields("/", value)
+
+ def __rtruediv__(self, value):
+ return self._combine_fields("/", value, invert=True)
+
+ def __lt__(self, value):
+ return self._create_filter("<", value)
+
+ def __le__(self, value):
+ return self._create_filter("<=", value)
+
+ def __gt__(self, value):
+ return self._create_filter(">", value)
+
+ def __ge__(self, value):
+ return self._create_filter(">=", value)
+
+ def __eq__(self, value):
+ if isinstance(value, str):
+ value = "'{}'".format(value)
+ return self._create_filter("==", value)
+
+ def __ne__(self, value):
+ return self._create_filter("!=", value)
+
+ def __repr__(self):
+ return "Field(name='{}', mapping='{}')".format(self.name, self.mapping)
+
+
+class Filter:
+ """This class determines entry/exit conditions for strategies"""
+
+ __slots__ = ("query")
+
+ def __init__(self, query):
+ self.query = query
+
+ def __and__(self, other):
+ """Returns logical *and* between `self` and `other`"""
+ assert isinstance(other, Filter)
+ new_query = "({}) & ({})".format(self.query, other.query)
+ return Filter(query=new_query)
+
+ def __or__(self, other):
+ """Returns logical *or* between `self` and `other`"""
+ assert isinstance(other, Filter)
+ new_query = "(({}) | ({}))".format(self.query, other.query)
+ return Filter(query=new_query)
+
+ def __invert__(self):
+ """Negates filter"""
+ return Filter("!({})".format(self.query))
+
+ def __call__(self, data):
+ """Returns dataframe of filtered data"""
+ return data.eval(self.query)
+
+ def __repr__(self):
+ return "Filter(query='{}')".format(self.query)
\ No newline at end of file
diff --git a/asset_backtester/statistics/__init__.py b/asset_backtester/statistics/__init__.py
new file mode 100644
index 0000000..bbf880d
--- /dev/null
+++ b/asset_backtester/statistics/__init__.py
@@ -0,0 +1 @@
+from .charts import returns_chart
diff --git a/asset_backtester/statistics/charts.py b/asset_backtester/statistics/charts.py
new file mode 100644
index 0000000..00e7f5a
--- /dev/null
+++ b/asset_backtester/statistics/charts.py
@@ -0,0 +1,48 @@
+"""Generates charts from a portfolio report"""
+
+import altair as alt
+
+
+def returns_chart(report):
+ # Time interval selector
+ time_interval = alt.selection(type='interval', encodings=['x'])
+
+ # Area plot
+ areas = alt.Chart().mark_area(opacity=0.7).encode(
+ x='index:T',
+ y=alt.Y('accumulated return:Q', axis=alt.Axis(format='%')))
+
+ # Nearest point selector
+ nearest = alt.selection(type='single',
+ nearest=True,
+ on='mouseover',
+ fields=['index'],
+ empty='none')
+
+ points = areas.mark_point().encode(
+ opacity=alt.condition(nearest, alt.value(1), alt.value(0)))
+
+ # Transparent date selector
+ selectors = alt.Chart().mark_point().encode(
+ x='index:T',
+ opacity=alt.value(0),
+ ).add_selection(nearest)
+
+ text = areas.mark_text(
+ align='left', dx=5, dy=-5).encode(text=alt.condition(
+ nearest, 'accumulated return:Q', alt.value(' '), format='.2%'))
+
+ layered = alt.layer(selectors,
+ points,
+ text,
+ areas.encode(
+ alt.X('index:T',
+ axis=alt.Axis(title='date'),
+ scale=alt.Scale(domain=time_interval))),
+ width=700,
+ height=350,
+ title='Wealth over time')
+
+ lower = areas.properties(width=700, height=70).add_selection(time_interval)
+
+ return alt.vconcat(layered, lower, data=report.reset_index())
\ No newline at end of file
diff --git a/asset_backtester/strategy/__init__.py b/asset_backtester/strategy/__init__.py
new file mode 100644
index 0000000..140f8c6
--- /dev/null
+++ b/asset_backtester/strategy/__init__.py
@@ -0,0 +1,2 @@
+from .strategy import Strategy
+from .asset import Asset
\ No newline at end of file
diff --git a/asset_backtester/strategy/asset.py b/asset_backtester/strategy/asset.py
new file mode 100644
index 0000000..d01e866
--- /dev/null
+++ b/asset_backtester/strategy/asset.py
@@ -0,0 +1,16 @@
+from .direction import Direction
+from datahandler.schema import Schema
+
+
+class Asset:
+ """Strategy Leg data class"""
+ def __init__(self, symbol, percentage, direction=Direction.BUY):
+ assert isinstance(direction, Direction)
+
+ self.symbol = symbol
+ self.percentage = percentage
+ self.direction = direction
+
+ def __repr__(self):
+ return "Asset(symbol={}, percentage={}, direction={})".format(
+ self.symbol, self.percentage, self.direction)
diff --git a/asset_backtester/strategy/direction.py b/asset_backtester/strategy/direction.py
new file mode 100644
index 0000000..85f85c2
--- /dev/null
+++ b/asset_backtester/strategy/direction.py
@@ -0,0 +1,10 @@
+from enum import Enum
+
+
+class Direction(Enum):
+ BUY = 'ask' # Schema field for BUY price
+ SELL = 'bid' # Schema field for SELL price
+
+ def __invert__(self):
+ flip = Direction.SELL if self == Direction.BUY else Direction.BUY
+ return flip
\ No newline at end of file
diff --git a/asset_backtester/strategy/strategy.py b/asset_backtester/strategy/strategy.py
new file mode 100644
index 0000000..332c375
--- /dev/null
+++ b/asset_backtester/strategy/strategy.py
@@ -0,0 +1,37 @@
+import math
+from functools import reduce
+
+import pandas as pd
+import numpy as np
+
+from .direction import Direction
+from .asset import Asset
+
+
+class Strategy:
+ def __init__(self, direction=Direction.BUY):
+ assert isinstance(direction, Direction)
+ self.direction = direction
+ self.assets = []
+
+ def add_asset(self, asset):
+ """Adds asset to the strategy"""
+ assert isinstance(asset, Asset)
+ self.assets.append(asset)
+ return self
+
+ def add_assets(self, assets):
+ """Adds assets to the strategy"""
+ for asset in assets:
+ self.add_asset(asset)
+ return self
+
+ def remove_asset(self, asset_number):
+ """Removes asset from the strategy"""
+ self.assets.pop(asset_number)
+ return self
+
+ def clear_assets(self):
+ """Removes *all* assets from the strategy"""
+ self.assets = []
+ return self
diff --git a/asset_backtester/test.ipynb b/asset_backtester/test.ipynb
new file mode 100644
index 0000000..e24fb30
--- /dev/null
+++ b/asset_backtester/test.ipynb
@@ -0,0 +1,2788 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import os"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from backtester import Backtest\n",
+ "from strategy.strategy import Strategy\n",
+ "from strategy.asset import Asset\n",
+ "from strategy.direction import Direction\n",
+ "from datahandler import HistoricalStockData\n",
+ "from statistics.charts import returns_chart"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%config InlineBackend.figure_format=\"retina\"\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas_datareader.data as web\n",
+ "import datetime"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "start = datetime.datetime(2019, 1, 1)\n",
+ "end = datetime.datetime(2019, 12, 31)\n",
+ "\n",
+ "tickers = [\"VOO\", \"TUR\", \"RSX\", \"EWY\", \"EWS\", \"VTIP\", \"TLT\", \"BWX\", \"PDBC\", \"IAU\", \"VNQI\"]\n",
+ "portfolio = [0.1, 0.05, 0.05, 0.05, 0.05, 0.10, 0.20, 0.10, 0.05, 0.15, 0.10, 1]\n",
+ "\n",
+ "dfs = []\n",
+ "for ticker in tickers:\n",
+ " df = web.DataReader(ticker, 'yahoo', start, end).reset_index().rename(columns={'Date': 'date', 'High': 'high', 'Low': 'low', 'Open': 'open', 'Close': 'close', 'Volume': 'volume'})\n",
+ " df['symbol'] = ticker\n",
+ " dfs.append(df)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "portfolio = pd.concat(dfs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "portfolio = portfolio.sort_values(by='date').reset_index(drop=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "portfolio.to_csv(\"data/portfolio.csv\", index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data = HistoricalStockData(\"data/portfolio.csv\")\n",
+ "schema = data.schema"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " high | \n",
+ " low | \n",
+ " open | \n",
+ " close | \n",
+ " volume | \n",
+ " Adj Close | \n",
+ " symbol | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 2019-01-02 | \n",
+ " 230.850006 | \n",
+ " 226.020004 | \n",
+ " 226.179993 | \n",
+ " 229.990005 | \n",
+ " 4891300.0 | \n",
+ " 225.350449 | \n",
+ " VOO | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2019-01-02 | \n",
+ " 15.333000 | \n",
+ " 14.890000 | \n",
+ " 14.920000 | \n",
+ " 15.120000 | \n",
+ " 1382500.0 | \n",
+ " 14.909319 | \n",
+ " PDBC | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2019-01-02 | \n",
+ " 122.160004 | \n",
+ " 121.339996 | \n",
+ " 121.660004 | \n",
+ " 122.150002 | \n",
+ " 19841500.0 | \n",
+ " 119.344078 | \n",
+ " TLT | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 2019-01-02 | \n",
+ " 47.910000 | \n",
+ " 47.860001 | \n",
+ " 47.860001 | \n",
+ " 47.910000 | \n",
+ " 771400.0 | \n",
+ " 46.986149 | \n",
+ " VTIP | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2019-01-02 | \n",
+ " 22.100000 | \n",
+ " 21.850000 | \n",
+ " 21.930000 | \n",
+ " 22.100000 | \n",
+ " 876200.0 | \n",
+ " 21.076557 | \n",
+ " EWS | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 2767 | \n",
+ " 2019-12-31 | \n",
+ " 27.180000 | \n",
+ " 27.000000 | \n",
+ " 27.110001 | \n",
+ " 27.090000 | \n",
+ " 132900.0 | \n",
+ " 27.090000 | \n",
+ " TUR | \n",
+ "
\n",
+ " \n",
+ " | 2768 | \n",
+ " 2019-12-31 | \n",
+ " 16.650000 | \n",
+ " 16.510000 | \n",
+ " 16.520000 | \n",
+ " 16.559999 | \n",
+ " 1780800.0 | \n",
+ " 16.559999 | \n",
+ " PDBC | \n",
+ "
\n",
+ " \n",
+ " | 2769 | \n",
+ " 2019-12-31 | \n",
+ " 295.989990 | \n",
+ " 294.170013 | \n",
+ " 294.529999 | \n",
+ " 295.799988 | \n",
+ " 2512700.0 | \n",
+ " 295.799988 | \n",
+ " VOO | \n",
+ "
\n",
+ " \n",
+ " | 2770 | \n",
+ " 2019-12-31 | \n",
+ " 136.460007 | \n",
+ " 135.380005 | \n",
+ " 136.210007 | \n",
+ " 135.479996 | \n",
+ " 10707400.0 | \n",
+ " 135.479996 | \n",
+ " TLT | \n",
+ "
\n",
+ " \n",
+ " | 2771 | \n",
+ " 2019-12-31 | \n",
+ " 59.090000 | \n",
+ " 58.849998 | \n",
+ " 58.950001 | \n",
+ " 59.090000 | \n",
+ " 219900.0 | \n",
+ " 59.090000 | \n",
+ " VNQI | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
2772 rows × 8 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date high low open close volume \\\n",
+ "0 2019-01-02 230.850006 226.020004 226.179993 229.990005 4891300.0 \n",
+ "1 2019-01-02 15.333000 14.890000 14.920000 15.120000 1382500.0 \n",
+ "2 2019-01-02 122.160004 121.339996 121.660004 122.150002 19841500.0 \n",
+ "3 2019-01-02 47.910000 47.860001 47.860001 47.910000 771400.0 \n",
+ "4 2019-01-02 22.100000 21.850000 21.930000 22.100000 876200.0 \n",
+ "... ... ... ... ... ... ... \n",
+ "2767 2019-12-31 27.180000 27.000000 27.110001 27.090000 132900.0 \n",
+ "2768 2019-12-31 16.650000 16.510000 16.520000 16.559999 1780800.0 \n",
+ "2769 2019-12-31 295.989990 294.170013 294.529999 295.799988 2512700.0 \n",
+ "2770 2019-12-31 136.460007 135.380005 136.210007 135.479996 10707400.0 \n",
+ "2771 2019-12-31 59.090000 58.849998 58.950001 59.090000 219900.0 \n",
+ "\n",
+ " Adj Close symbol \n",
+ "0 225.350449 VOO \n",
+ "1 14.909319 PDBC \n",
+ "2 119.344078 TLT \n",
+ "3 46.986149 VTIP \n",
+ "4 21.076557 EWS \n",
+ "... ... ... \n",
+ "2767 27.090000 TUR \n",
+ "2768 16.559999 PDBC \n",
+ "2769 295.799988 VOO \n",
+ "2770 135.479996 TLT \n",
+ "2771 59.090000 VNQI \n",
+ "\n",
+ "[2772 rows x 8 columns]"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "strat = Strategy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "asset_1 = Asset('VOO', 0.1)\n",
+ "asset_2 = Asset('TUR', 0.05)\n",
+ "asset_3 = Asset('RSX', 0.05)\n",
+ "asset_4 = Asset('EWY', 0.05)\n",
+ "asset_5 = Asset('EWS', 0.05)\n",
+ "asset_6 = Asset('VTIP', 0.10)\n",
+ "asset_7 = Asset('TLT', 0.20)\n",
+ "asset_8 = Asset('BWX', 0.10)\n",
+ "asset_9 = Asset('PDBC', 0.05)\n",
+ "asset_10 = Asset('IAU', 0.15)\n",
+ "asset_11 = Asset('VNQI', 0.10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "strat.add_assets([\n",
+ " asset_1, asset_2, asset_3, asset_4, asset_5, asset_6, asset_7, asset_8,\n",
+ " asset_9, asset_10, asset_11\n",
+ "])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "bt = Backtest(schema)\n",
+ "bt.strategy = strat\n",
+ "bt.data = data\n",
+ "bt.stop_if_broke = False"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "0% [██████████████████████████████] 100% | ETA: 00:00:00\n",
+ "Total time elapsed: 00:00:04\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " capital | \n",
+ " cash | \n",
+ " total_value | \n",
+ " % change | \n",
+ " accumulated return | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 2019-01-01 | \n",
+ " 1.000000e+06 | \n",
+ " 1000000.000000 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " | 2019-01-02 | \n",
+ " 1.000000e+06 | \n",
+ " 403.112655 | \n",
+ " 9.995969e+05 | \n",
+ " 0.000000 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ " | 2019-01-03 | \n",
+ " 9.987008e+05 | \n",
+ " 403.112655 | \n",
+ " 9.982976e+05 | \n",
+ " -0.001299 | \n",
+ " 0.998701 | \n",
+ "
\n",
+ " \n",
+ " | 2019-01-04 | \n",
+ " 1.008706e+06 | \n",
+ " 403.112655 | \n",
+ " 1.008302e+06 | \n",
+ " 0.010018 | \n",
+ " 1.008706 | \n",
+ "
\n",
+ " \n",
+ " | 2019-01-07 | \n",
+ " 1.010929e+06 | \n",
+ " 403.112655 | \n",
+ " 1.010526e+06 | \n",
+ " 0.002205 | \n",
+ " 1.010929 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 2019-12-24 | \n",
+ " 1.161007e+06 | \n",
+ " 447.309637 | \n",
+ " 1.160560e+06 | \n",
+ " 0.002650 | \n",
+ " 1.161007 | \n",
+ "
\n",
+ " \n",
+ " | 2019-12-26 | \n",
+ " 1.166209e+06 | \n",
+ " 447.309637 | \n",
+ " 1.165761e+06 | \n",
+ " 0.004480 | \n",
+ " 1.166209 | \n",
+ "
\n",
+ " \n",
+ " | 2019-12-27 | \n",
+ " 1.168988e+06 | \n",
+ " 447.309637 | \n",
+ " 1.168541e+06 | \n",
+ " 0.002383 | \n",
+ " 1.168988 | \n",
+ "
\n",
+ " \n",
+ " | 2019-12-30 | \n",
+ " 1.166540e+06 | \n",
+ " 447.309637 | \n",
+ " 1.166092e+06 | \n",
+ " -0.002094 | \n",
+ " 1.166540 | \n",
+ "
\n",
+ " \n",
+ " | 2019-12-31 | \n",
+ " 1.166803e+06 | \n",
+ " 447.309637 | \n",
+ " 1.166356e+06 | \n",
+ " 0.000226 | \n",
+ " 1.166803 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
253 rows × 5 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " capital cash total_value % change \\\n",
+ "2019-01-01 1.000000e+06 1000000.000000 NaN NaN \n",
+ "2019-01-02 1.000000e+06 403.112655 9.995969e+05 0.000000 \n",
+ "2019-01-03 9.987008e+05 403.112655 9.982976e+05 -0.001299 \n",
+ "2019-01-04 1.008706e+06 403.112655 1.008302e+06 0.010018 \n",
+ "2019-01-07 1.010929e+06 403.112655 1.010526e+06 0.002205 \n",
+ "... ... ... ... ... \n",
+ "2019-12-24 1.161007e+06 447.309637 1.160560e+06 0.002650 \n",
+ "2019-12-26 1.166209e+06 447.309637 1.165761e+06 0.004480 \n",
+ "2019-12-27 1.168988e+06 447.309637 1.168541e+06 0.002383 \n",
+ "2019-12-30 1.166540e+06 447.309637 1.166092e+06 -0.002094 \n",
+ "2019-12-31 1.166803e+06 447.309637 1.166356e+06 0.000226 \n",
+ "\n",
+ " accumulated return \n",
+ "2019-01-01 NaN \n",
+ "2019-01-02 1.000000 \n",
+ "2019-01-03 0.998701 \n",
+ "2019-01-04 1.008706 \n",
+ "2019-01-07 1.010929 \n",
+ "... ... \n",
+ "2019-12-24 1.161007 \n",
+ "2019-12-26 1.166209 \n",
+ "2019-12-27 1.168988 \n",
+ "2019-12-30 1.166540 \n",
+ "2019-12-31 1.166803 \n",
+ "\n",
+ "[253 rows x 5 columns]"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bt.run(initial_capital=1_000_000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.vegalite.v3+json": {
+ "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json",
+ "config": {
+ "mark": {
+ "tooltip": null
+ },
+ "view": {
+ "height": 300,
+ "width": 400
+ }
+ },
+ "data": {
+ "name": "data-43bc2ed72dd9ab9ca7c17b62ef7caa1e"
+ },
+ "datasets": {
+ "data-43bc2ed72dd9ab9ca7c17b62ef7caa1e": [
+ {
+ "% change": null,
+ "accumulated return": null,
+ "capital": 1000000,
+ "cash": 1000000,
+ "index": "2019-01-01T00:00:00",
+ "total_value": null
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1,
+ "capital": 1000000,
+ "cash": 403.1126546859741,
+ "index": "2019-01-02T00:00:00",
+ "total_value": 999596.887345314
+ },
+ {
+ "% change": -0.0012992443809509702,
+ "accumulated return": 0.998700755619049,
+ "capital": 998700.7556190491,
+ "cash": 403.1126546859741,
+ "index": "2019-01-03T00:00:00",
+ "total_value": 998297.6429643631
+ },
+ {
+ "% change": 0.010017772279682369,
+ "accumulated return": 1.0087055123643873,
+ "capital": 1008705.5123643875,
+ "cash": 403.1126546859741,
+ "index": "2019-01-04T00:00:00",
+ "total_value": 1008302.3997097015
+ },
+ {
+ "% change": 0.002204660702090022,
+ "accumulated return": 1.0109293657674787,
+ "capital": 1010929.365767479,
+ "cash": 403.1126546859741,
+ "index": "2019-01-07T00:00:00",
+ "total_value": 1010526.253112793
+ },
+ {
+ "% change": 0.000515881069494295,
+ "accumulated return": 1.011450885089874,
+ "capital": 1011450.8850898743,
+ "cash": 403.1126546859741,
+ "index": "2019-01-08T00:00:00",
+ "total_value": 1011047.7724351883
+ },
+ {
+ "% change": 0.0068216669096126115,
+ "accumulated return": 1.01835066612339,
+ "capital": 1018350.6661233902,
+ "cash": 403.1126546859741,
+ "index": "2019-01-09T00:00:00",
+ "total_value": 1017947.5534687042
+ },
+ {
+ "% change": 0.000769932925444472,
+ "accumulated return": 1.0191347278308869,
+ "capital": 1019134.7278308868,
+ "cash": 403.1126546859741,
+ "index": "2019-01-10T00:00:00",
+ "total_value": 1018731.6151762009
+ },
+ {
+ "% change": -0.0004622806127192458,
+ "accumulated return": 1.0186636016044617,
+ "capital": 1018663.6016044617,
+ "cash": 403.1126546859741,
+ "index": "2019-01-11T00:00:00",
+ "total_value": 1018260.4889497757
+ },
+ {
+ "% change": -0.002552297189245545,
+ "accumulated return": 1.0160636693573,
+ "capital": 1016063.6693572998,
+ "cash": 403.1126546859741,
+ "index": "2019-01-14T00:00:00",
+ "total_value": 1015660.5567026138
+ },
+ {
+ "% change": 0.002386746968450426,
+ "accumulated return": 1.0184887562398912,
+ "capital": 1018488.756239891,
+ "cash": 403.1126546859741,
+ "index": "2019-01-15T00:00:00",
+ "total_value": 1018085.6435852051
+ },
+ {
+ "% change": 0.006485368345748643,
+ "accumulated return": 1.0250940309801102,
+ "capital": 1025094.0309801102,
+ "cash": 403.1126546859741,
+ "index": "2019-01-16T00:00:00",
+ "total_value": 1024690.9183254242
+ },
+ {
+ "% change": 0.0012639786654555785,
+ "accumulated return": 1.0263897279653549,
+ "capital": 1026389.7279653549,
+ "cash": 403.1126546859741,
+ "index": "2019-01-17T00:00:00",
+ "total_value": 1025986.615310669
+ },
+ {
+ "% change": 0.00211310821247368,
+ "accumulated return": 1.028558600528717,
+ "capital": 1028558.600528717,
+ "cash": 403.1126546859741,
+ "index": "2019-01-18T00:00:00",
+ "total_value": 1028155.4878740311
+ },
+ {
+ "% change": -0.004414434088781394,
+ "accumulated return": 1.0240180963802339,
+ "capital": 1024018.0963802338,
+ "cash": 403.1126546859741,
+ "index": "2019-01-22T00:00:00",
+ "total_value": 1023614.9837255478
+ },
+ {
+ "% change": 0.0035960312390337368,
+ "accumulated return": 1.027700497444153,
+ "capital": 1027700.4974441528,
+ "cash": 403.1126546859741,
+ "index": "2019-01-23T00:00:00",
+ "total_value": 1027297.3847894669
+ },
+ {
+ "% change": 0.0037492236322473893,
+ "accumulated return": 1.031553576436043,
+ "capital": 1031553.5764360428,
+ "cash": 403.1126546859741,
+ "index": "2019-01-24T00:00:00",
+ "total_value": 1031150.4637813568
+ },
+ {
+ "% change": 0.006059688086419657,
+ "accumulated return": 1.037804469353676,
+ "capital": 1037804.4693536758,
+ "cash": 403.1126546859741,
+ "index": "2019-01-25T00:00:00",
+ "total_value": 1037401.3566989899
+ },
+ {
+ "% change": -0.0028227551667387996,
+ "accumulated return": 1.0348750014257433,
+ "capital": 1034875.0014257431,
+ "cash": 403.1126546859741,
+ "index": "2019-01-28T00:00:00",
+ "total_value": 1034471.8887710571
+ },
+ {
+ "% change": 0.005208742634250418,
+ "accumulated return": 1.0402653989667896,
+ "capital": 1040265.3989667892,
+ "cash": 403.1126546859741,
+ "index": "2019-01-29T00:00:00",
+ "total_value": 1039862.2863121033
+ },
+ {
+ "% change": 0.009722744846105913,
+ "accumulated return": 1.0503796340131764,
+ "capital": 1050379.634013176,
+ "cash": 403.1126546859741,
+ "index": "2019-01-30T00:00:00",
+ "total_value": 1049976.52135849
+ },
+ {
+ "% change": 0.002270120916235019,
+ "accumulated return": 1.052764122790337,
+ "capital": 1052764.1227903366,
+ "cash": 403.1126546859741,
+ "index": "2019-01-31T00:00:00",
+ "total_value": 1052361.0101356506
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.052764122790337,
+ "capital": 1052764.1227903366,
+ "cash": 425.5575408935547,
+ "index": "2019-02-01T00:00:00",
+ "total_value": 1052338.565249443
+ },
+ {
+ "% change": -0.0009864434445734371,
+ "accumulated return": 1.0517256305227285,
+ "capital": 1051725.630522728,
+ "cash": 425.5575408935547,
+ "index": "2019-02-04T00:00:00",
+ "total_value": 1051300.0729818344
+ },
+ {
+ "% change": 0.003959504691010585,
+ "accumulated return": 1.0558899430904394,
+ "capital": 1055889.9430904388,
+ "cash": 425.5575408935547,
+ "index": "2019-02-05T00:00:00",
+ "total_value": 1055464.3855495453
+ },
+ {
+ "% change": -0.003932425592744315,
+ "accumulated return": 1.051737734455109,
+ "capital": 1051737.7344551086,
+ "cash": 425.5575408935547,
+ "index": "2019-02-06T00:00:00",
+ "total_value": 1051312.176914215
+ },
+ {
+ "% change": -0.002526600044983729,
+ "accumulated return": 1.0490804138479237,
+ "capital": 1049080.4138479233,
+ "cash": 425.5575408935547,
+ "index": "2019-02-07T00:00:00",
+ "total_value": 1048654.8563070297
+ },
+ {
+ "% change": 0.001212175885912048,
+ "accumulated return": 1.0503520838279727,
+ "capital": 1050352.0838279724,
+ "cash": 425.5575408935547,
+ "index": "2019-02-08T00:00:00",
+ "total_value": 1049926.5262870789
+ },
+ {
+ "% change": -0.0023340658306397755,
+ "accumulated return": 1.0479004929189686,
+ "capital": 1047900.4929189682,
+ "cash": 425.5575408935547,
+ "index": "2019-02-11T00:00:00",
+ "total_value": 1047474.9353780746
+ },
+ {
+ "% change": 0.0024438611626396156,
+ "accumulated return": 1.0504614162359243,
+ "capital": 1050461.4162359238,
+ "cash": 425.5575408935547,
+ "index": "2019-02-12T00:00:00",
+ "total_value": 1050035.8586950302
+ },
+ {
+ "% change": -0.004320522526899739,
+ "accumulated return": 1.0459228740234379,
+ "capital": 1045922.8740234375,
+ "cash": 425.5575408935547,
+ "index": "2019-02-13T00:00:00",
+ "total_value": 1045497.316482544
+ },
+ {
+ "% change": 0.0038570903613412977,
+ "accumulated return": 1.04995709305954,
+ "capital": 1049957.0930595398,
+ "cash": 425.5575408935547,
+ "index": "2019-02-14T00:00:00",
+ "total_value": 1049531.5355186462
+ },
+ {
+ "% change": 0.0047674539070265975,
+ "accumulated return": 1.0549627151050571,
+ "capital": 1054962.7151050568,
+ "cash": 425.5575408935547,
+ "index": "2019-02-15T00:00:00",
+ "total_value": 1054537.1575641632
+ },
+ {
+ "% change": 0.0043089584669127046,
+ "accumulated return": 1.0595085056285862,
+ "capital": 1059508.5056285858,
+ "cash": 425.5575408935547,
+ "index": "2019-02-19T00:00:00",
+ "total_value": 1059082.9480876923
+ },
+ {
+ "% change": 0.0003561079808773737,
+ "accumulated return": 1.059885805063248,
+ "capital": 1059885.8050632477,
+ "cash": 425.5575408935547,
+ "index": "2019-02-20T00:00:00",
+ "total_value": 1059460.2475223541
+ },
+ {
+ "% change": -0.004669549547527185,
+ "accumulated return": 1.0549366157817845,
+ "capital": 1054936.615781784,
+ "cash": 425.5575408935547,
+ "index": "2019-02-21T00:00:00",
+ "total_value": 1054511.0582408905
+ },
+ {
+ "% change": 0.004504687338915181,
+ "accumulated return": 1.0596887753982547,
+ "capital": 1059688.7753982544,
+ "cash": 425.5575408935547,
+ "index": "2019-02-22T00:00:00",
+ "total_value": 1059263.2178573608
+ },
+ {
+ "% change": 0.0002054561291975343,
+ "accumulated return": 1.0599064949522021,
+ "capital": 1059906.4949522018,
+ "cash": 425.5575408935547,
+ "index": "2019-02-25T00:00:00",
+ "total_value": 1059480.9374113083
+ },
+ {
+ "% change": 0.0014998989319479072,
+ "accumulated return": 1.0614962475719456,
+ "capital": 1061496.2475719452,
+ "cash": 425.5575408935547,
+ "index": "2019-02-26T00:00:00",
+ "total_value": 1061070.6900310516
+ },
+ {
+ "% change": -0.005199261731887006,
+ "accumulated return": 1.055977250753403,
+ "capital": 1055977.2507534027,
+ "cash": 425.5575408935547,
+ "index": "2019-02-27T00:00:00",
+ "total_value": 1055551.6932125092
+ },
+ {
+ "% change": -0.005526585576125731,
+ "accumulated return": 1.0501413021106725,
+ "capital": 1050141.302110672,
+ "cash": 425.5575408935547,
+ "index": "2019-02-28T00:00:00",
+ "total_value": 1049715.7445697784
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.0501413021106725,
+ "capital": 1050141.302110672,
+ "cash": 432.1398468017578,
+ "index": "2019-03-01T00:00:00",
+ "total_value": 1049709.1622638702
+ },
+ {
+ "% change": 0.001410071459587936,
+ "accumulated return": 1.0516220763893132,
+ "capital": 1051622.0763893127,
+ "cash": 432.1398468017578,
+ "index": "2019-03-04T00:00:00",
+ "total_value": 1051189.936542511
+ },
+ {
+ "% change": 0.0009535955225887793,
+ "accumulated return": 1.0526248984928135,
+ "capital": 1052624.898492813,
+ "cash": 432.1398468017578,
+ "index": "2019-03-05T00:00:00",
+ "total_value": 1052192.7586460114
+ },
+ {
+ "% change": -0.0018873316464007583,
+ "accumulated return": 1.0506382462100987,
+ "capital": 1050638.2462100983,
+ "cash": 432.1398468017578,
+ "index": "2019-03-06T00:00:00",
+ "total_value": 1050206.1063632965
+ },
+ {
+ "% change": -0.0030519981014746067,
+ "accumulated return": 1.0474317002773288,
+ "capital": 1047431.7002773285,
+ "cash": 432.1398468017578,
+ "index": "2019-03-07T00:00:00",
+ "total_value": 1046999.5604305267
+ },
+ {
+ "% change": 0.001864504454123006,
+ "accumulated return": 1.0493846413478856,
+ "capital": 1049384.6413478851,
+ "cash": 432.1398468017578,
+ "index": "2019-03-08T00:00:00",
+ "total_value": 1048952.5015010834
+ },
+ {
+ "% change": 0.0025736546975105856,
+ "accumulated return": 1.052085395059586,
+ "capital": 1052085.3950595856,
+ "cash": 432.1398468017578,
+ "index": "2019-03-11T00:00:00",
+ "total_value": 1051653.2552127838
+ },
+ {
+ "% change": 0.00489602650804688,
+ "accumulated return": 1.0572364330425268,
+ "capital": 1057236.4330425262,
+ "cash": 432.1398468017578,
+ "index": "2019-03-12T00:00:00",
+ "total_value": 1056804.2931957245
+ },
+ {
+ "% change": 0.002190652798305992,
+ "accumulated return": 1.0595524709930424,
+ "capital": 1059552.470993042,
+ "cash": 432.1398468017578,
+ "index": "2019-03-13T00:00:00",
+ "total_value": 1059120.3311462402
+ },
+ {
+ "% change": -0.004187429198914905,
+ "accumulated return": 1.0551156700382236,
+ "capital": 1055115.6700382233,
+ "cash": 432.1398468017578,
+ "index": "2019-03-14T00:00:00",
+ "total_value": 1054683.5301914215
+ },
+ {
+ "% change": 0.006373858230571017,
+ "accumulated return": 1.0618408277359013,
+ "capital": 1061840.8277359009,
+ "cash": 432.1398468017578,
+ "index": "2019-03-15T00:00:00",
+ "total_value": 1061408.6878890991
+ },
+ {
+ "% change": 0.003334568973422991,
+ "accumulated return": 1.0653816092147832,
+ "capital": 1065381.6092147827,
+ "cash": 432.1398468017578,
+ "index": "2019-03-18T00:00:00",
+ "total_value": 1064949.469367981
+ },
+ {
+ "% change": 0.0005757819672678188,
+ "accumulated return": 1.065995036733628,
+ "capital": 1065995.0367336273,
+ "cash": 432.1398468017578,
+ "index": "2019-03-19T00:00:00",
+ "total_value": 1065562.8968868256
+ },
+ {
+ "% change": 0.004912990238142845,
+ "accumulated return": 1.071232259943009,
+ "capital": 1071232.2599430084,
+ "cash": 432.1398468017578,
+ "index": "2019-03-20T00:00:00",
+ "total_value": 1070800.1200962067
+ },
+ {
+ "% change": 0.0008708419472425177,
+ "accumulated return": 1.072165133930207,
+ "capital": 1072165.1339302063,
+ "cash": 432.1398468017578,
+ "index": "2019-03-21T00:00:00",
+ "total_value": 1071732.9940834045
+ },
+ {
+ "% change": -0.008440563116746014,
+ "accumulated return": 1.0631154564456946,
+ "capital": 1063115.456445694,
+ "cash": 432.1398468017578,
+ "index": "2019-03-22T00:00:00",
+ "total_value": 1062683.3165988922
+ },
+ {
+ "% change": 0.005527216243250699,
+ "accumulated return": 1.0689915254650122,
+ "capital": 1068991.5254650116,
+ "cash": 432.1398468017578,
+ "index": "2019-03-25T00:00:00",
+ "total_value": 1068559.3856182098
+ },
+ {
+ "% change": 0.00045022533119642993,
+ "accumulated return": 1.0694728125286108,
+ "capital": 1069472.8125286102,
+ "cash": 432.1398468017578,
+ "index": "2019-03-26T00:00:00",
+ "total_value": 1069040.6726818085
+ },
+ {
+ "% change": -0.0049844299241291745,
+ "accumulated return": 1.0641421002388005,
+ "capital": 1064142.1002388,
+ "cash": 432.1398468017578,
+ "index": "2019-03-27T00:00:00",
+ "total_value": 1063709.9603919983
+ },
+ {
+ "% change": -0.0007612727998299595,
+ "accumulated return": 1.0633319978027347,
+ "capital": 1063331.9978027344,
+ "cash": 432.1398468017578,
+ "index": "2019-03-28T00:00:00",
+ "total_value": 1062899.8579559326
+ },
+ {
+ "% change": 0.002263024520113177,
+ "accumulated return": 1.0657383441867831,
+ "capital": 1065738.3441867828,
+ "cash": 432.1398468017578,
+ "index": "2019-03-29T00:00:00",
+ "total_value": 1065306.204339981
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.0657383441867831,
+ "capital": 1065738.3441867828,
+ "cash": 461.3523693084717,
+ "index": "2019-04-01T00:00:00",
+ "total_value": 1065276.9918174744
+ },
+ {
+ "% change": 0.00023805719182456997,
+ "accumulated return": 1.06599205086422,
+ "capital": 1065992.0508642197,
+ "cash": 461.3523693084717,
+ "index": "2019-04-02T00:00:00",
+ "total_value": 1065530.6984949112
+ },
+ {
+ "% change": -4.527556505629082e-05,
+ "accumulated return": 1.0659437874717717,
+ "capital": 1065943.7874717712,
+ "cash": 461.3523693084717,
+ "index": "2019-04-03T00:00:00",
+ "total_value": 1065482.4351024628
+ },
+ {
+ "% change": 0.0034638367864971986,
+ "accumulated return": 1.0696360427751546,
+ "capital": 1069636.042775154,
+ "cash": 461.3523693084717,
+ "index": "2019-04-04T00:00:00",
+ "total_value": 1069174.6904058456
+ },
+ {
+ "% change": 0.0009250940625449289,
+ "accumulated return": 1.0706255567274099,
+ "capital": 1070625.5567274094,
+ "cash": 461.3523693084717,
+ "index": "2019-04-05T00:00:00",
+ "total_value": 1070164.204358101
+ },
+ {
+ "% change": -0.0006301699815962625,
+ "accumulated return": 1.0699508806400304,
+ "capital": 1069950.88064003,
+ "cash": 461.3523693084717,
+ "index": "2019-04-08T00:00:00",
+ "total_value": 1069489.5282707214
+ },
+ {
+ "% change": 0.00030253032429405913,
+ "accumulated return": 1.0702745732269292,
+ "capital": 1070274.5732269287,
+ "cash": 461.3523693084717,
+ "index": "2019-04-09T00:00:00",
+ "total_value": 1069813.2208576202
+ },
+ {
+ "% change": 0.0039583119836701375,
+ "accumulated return": 1.0745110538959508,
+ "capital": 1074511.0538959503,
+ "cash": 461.3523693084717,
+ "index": "2019-04-10T00:00:00",
+ "total_value": 1074049.7015266418
+ },
+ {
+ "% change": -0.0070380309734092705,
+ "accumulated return": 1.0669486118173606,
+ "capital": 1066948.61181736,
+ "cash": 461.3523693084717,
+ "index": "2019-04-11T00:00:00",
+ "total_value": 1066487.2594480515
+ },
+ {
+ "% change": 0.00042343337306571804,
+ "accumulated return": 1.0674003934669503,
+ "capital": 1067400.3934669495,
+ "cash": 461.3523693084717,
+ "index": "2019-04-12T00:00:00",
+ "total_value": 1066939.041097641
+ },
+ {
+ "% change": -0.0009940060537210194,
+ "accumulated return": 1.0663393910141,
+ "capital": 1066339.3910140991,
+ "cash": 461.3523693084717,
+ "index": "2019-04-15T00:00:00",
+ "total_value": 1065878.0386447906
+ },
+ {
+ "% change": -0.0009944646422330727,
+ "accumulated return": 1.065278954193116,
+ "capital": 1065278.9541931152,
+ "cash": 461.3523693084717,
+ "index": "2019-04-16T00:00:00",
+ "total_value": 1064817.6018238068
+ },
+ {
+ "% change": 0.00032101432980180533,
+ "accumulated return": 1.0656209240026482,
+ "capital": 1065620.9240026474,
+ "cash": 461.3523693084717,
+ "index": "2019-04-17T00:00:00",
+ "total_value": 1065159.571633339
+ },
+ {
+ "% change": -0.0010230355131952695,
+ "accumulated return": 1.0645307559537895,
+ "capital": 1064530.7559537888,
+ "cash": 461.3523693084717,
+ "index": "2019-04-18T00:00:00",
+ "total_value": 1064069.4035844803
+ },
+ {
+ "% change": -0.0011002300970462953,
+ "accumulated return": 1.0633595271768577,
+ "capital": 1063359.527176857,
+ "cash": 461.3523693084717,
+ "index": "2019-04-22T00:00:00",
+ "total_value": 1062898.1748075485
+ },
+ {
+ "% change": 0.0009174984367859018,
+ "accumulated return": 1.0643351578807838,
+ "capital": 1064335.157880783,
+ "cash": 461.3523693084717,
+ "index": "2019-04-23T00:00:00",
+ "total_value": 1063873.8055114746
+ },
+ {
+ "% change": -0.001499850746105147,
+ "accumulated return": 1.0627388140001304,
+ "capital": 1062738.8140001297,
+ "cash": 461.3523693084717,
+ "index": "2019-04-24T00:00:00",
+ "total_value": 1062277.4616308212
+ },
+ {
+ "% change": -0.002033052367217736,
+ "accumulated return": 1.0605782103385932,
+ "capital": 1060578.2103385925,
+ "cash": 461.3523693084717,
+ "index": "2019-04-25T00:00:00",
+ "total_value": 1060116.857969284
+ },
+ {
+ "% change": 0.0025281679793258682,
+ "accumulated return": 1.063259530209542,
+ "capital": 1063259.5302095413,
+ "cash": 461.3523693084717,
+ "index": "2019-04-26T00:00:00",
+ "total_value": 1062798.1778402328
+ },
+ {
+ "% change": -0.0002420440180671557,
+ "accumulated return": 1.063002174600602,
+ "capital": 1063002.1746006012,
+ "cash": 461.3523693084717,
+ "index": "2019-04-29T00:00:00",
+ "total_value": 1062540.8222312927
+ },
+ {
+ "% change": 0.0015283779599508662,
+ "accumulated return": 1.0646268436956414,
+ "capital": 1064626.8436956406,
+ "cash": 461.3523693084717,
+ "index": "2019-04-30T00:00:00",
+ "total_value": 1064165.491326332
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.0646268436956414,
+ "capital": 1064626.8436956406,
+ "cash": 251.68225955963135,
+ "index": "2019-05-01T00:00:00",
+ "total_value": 1064375.161436081
+ },
+ {
+ "% change": -0.0026638972779746695,
+ "accumulated return": 1.061790787144662,
+ "capital": 1061790.787144661,
+ "cash": 251.68225955963135,
+ "index": "2019-05-02T00:00:00",
+ "total_value": 1061539.1048851013
+ },
+ {
+ "% change": 0.004486124545319603,
+ "accumulated return": 1.0665541128568659,
+ "capital": 1066554.112856865,
+ "cash": 251.68225955963135,
+ "index": "2019-05-03T00:00:00",
+ "total_value": 1066302.4305973053
+ },
+ {
+ "% change": -0.004424768493704878,
+ "accumulated return": 1.0618348578214654,
+ "capital": 1061834.8578214645,
+ "cash": 251.68225955963135,
+ "index": "2019-05-06T00:00:00",
+ "total_value": 1061583.175561905
+ },
+ {
+ "% change": -0.003834693216600016,
+ "accumulated return": 1.0577630468950279,
+ "capital": 1057763.0468950272,
+ "cash": 251.68225955963135,
+ "index": "2019-05-07T00:00:00",
+ "total_value": 1057511.3646354675
+ },
+ {
+ "% change": -0.0017667297925600955,
+ "accumulated return": 1.0558942654066092,
+ "capital": 1055894.2654066086,
+ "cash": 251.68225955963135,
+ "index": "2019-05-08T00:00:00",
+ "total_value": 1055642.583147049
+ },
+ {
+ "% change": -0.0026526704535170254,
+ "accumulated return": 1.053093325886727,
+ "capital": 1053093.3258867264,
+ "cash": 251.68225955963135,
+ "index": "2019-05-09T00:00:00",
+ "total_value": 1052841.6436271667
+ },
+ {
+ "% change": 0.0035881091587932623,
+ "accumulated return": 1.0568719396944053,
+ "capital": 1056871.9396944046,
+ "cash": 251.68225955963135,
+ "index": "2019-05-10T00:00:00",
+ "total_value": 1056620.257434845
+ },
+ {
+ "% change": -0.006400473070178547,
+ "accumulated return": 1.050107459305764,
+ "capital": 1050107.4593057632,
+ "cash": 251.68225955963135,
+ "index": "2019-05-13T00:00:00",
+ "total_value": 1049855.7770462036
+ },
+ {
+ "% change": 0.004818398138242808,
+ "accumulated return": 1.0551672951326379,
+ "capital": 1055167.295132637,
+ "cash": 251.68225955963135,
+ "index": "2019-05-14T00:00:00",
+ "total_value": 1054915.6128730774
+ },
+ {
+ "% change": 0.0027249319157145457,
+ "accumulated return": 1.058042554171563,
+ "capital": 1058042.5541715622,
+ "cash": 251.68225955963135,
+ "index": "2019-05-15T00:00:00",
+ "total_value": 1057790.8719120026
+ },
+ {
+ "% change": -0.0009949939526712193,
+ "accumulated return": 1.0569898082284934,
+ "capital": 1056989.8082284927,
+ "cash": 251.68225955963135,
+ "index": "2019-05-16T00:00:00",
+ "total_value": 1056738.125968933
+ },
+ {
+ "% change": -0.005294795774057559,
+ "accumulated return": 1.0513932630586633,
+ "capital": 1051393.2630586626,
+ "cash": 251.68225955963135,
+ "index": "2019-05-17T00:00:00",
+ "total_value": 1051141.580799103
+ },
+ {
+ "% change": -0.0005803720056829498,
+ "accumulated return": 1.0507830638418205,
+ "capital": 1050783.0638418198,
+ "cash": 251.68225955963135,
+ "index": "2019-05-20T00:00:00",
+ "total_value": 1050531.3815822601
+ },
+ {
+ "% change": 0.0013346120211878976,
+ "accumulated return": 1.0521854515504845,
+ "capital": 1052185.4515504837,
+ "cash": 251.68225955963135,
+ "index": "2019-05-21T00:00:00",
+ "total_value": 1051933.769290924
+ },
+ {
+ "% change": -0.0010325614962242158,
+ "accumulated return": 1.051099005366326,
+ "capital": 1051099.0053663254,
+ "cash": 251.68225955963135,
+ "index": "2019-05-22T00:00:00",
+ "total_value": 1050847.3231067657
+ },
+ {
+ "% change": 7.079657299513542e-05,
+ "accumulated return": 1.0511734195737845,
+ "capital": 1051173.4195737839,
+ "cash": 251.68225955963135,
+ "index": "2019-05-23T00:00:00",
+ "total_value": 1050921.7373142242
+ },
+ {
+ "% change": 0.0041636712077237625,
+ "accumulated return": 1.0555501600751884,
+ "capital": 1055550.1600751877,
+ "cash": 251.68225955963135,
+ "index": "2019-05-24T00:00:00",
+ "total_value": 1055298.477815628
+ },
+ {
+ "% change": -0.0005762541240680319,
+ "accumulated return": 1.0549418949422844,
+ "capital": 1054941.8949422836,
+ "cash": 251.68225955963135,
+ "index": "2019-05-28T00:00:00",
+ "total_value": 1054690.212682724
+ },
+ {
+ "% change": 0.00099367124546057,
+ "accumulated return": 1.0559901603689203,
+ "capital": 1055990.1603689194,
+ "cash": 251.68225955963135,
+ "index": "2019-05-29T00:00:00",
+ "total_value": 1055738.4781093597
+ },
+ {
+ "% change": 0.004710763757681091,
+ "accumulated return": 1.060964680544854,
+ "capital": 1060964.6805448532,
+ "cash": 251.68225955963135,
+ "index": "2019-05-30T00:00:00",
+ "total_value": 1060712.9982852936
+ },
+ {
+ "% change": 0.003319107927187037,
+ "accumulated return": 1.064486136826516,
+ "capital": 1064486.1368265152,
+ "cash": 251.68225955963135,
+ "index": "2019-05-31T00:00:00",
+ "total_value": 1064234.4545669556
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.064486136826516,
+ "capital": 1064486.1368265152,
+ "cash": 366.54854106903076,
+ "index": "2019-06-03T00:00:00",
+ "total_value": 1064119.5882854462
+ },
+ {
+ "% change": 0.00277191804393917,
+ "accumulated return": 1.0674368051567085,
+ "capital": 1067436.8051567078,
+ "cash": 366.54854106903076,
+ "index": "2019-06-04T00:00:00",
+ "total_value": 1067070.2566156387
+ },
+ {
+ "% change": -0.001634073655202739,
+ "accumulated return": 1.065692534794808,
+ "capital": 1065692.5347948074,
+ "cash": 366.54854106903076,
+ "index": "2019-06-05T00:00:00",
+ "total_value": 1065325.9862537384
+ },
+ {
+ "% change": 0.0038232016023276305,
+ "accumulated return": 1.0697668922014243,
+ "capital": 1069766.8922014236,
+ "cash": 366.54854106903076,
+ "index": "2019-06-06T00:00:00",
+ "total_value": 1069400.3436603546
+ },
+ {
+ "% change": 0.007203947910364272,
+ "accumulated return": 1.0774734371690757,
+ "capital": 1077473.437169075,
+ "cash": 366.54854106903076,
+ "index": "2019-06-07T00:00:00",
+ "total_value": 1077106.888628006
+ },
+ {
+ "% change": -0.00042221740676939845,
+ "accumulated return": 1.0770185091285713,
+ "capital": 1077018.5091285706,
+ "cash": 366.54854106903076,
+ "index": "2019-06-10T00:00:00",
+ "total_value": 1076651.9605875015
+ },
+ {
+ "% change": 0.001100147008316732,
+ "accumulated return": 1.078203387819291,
+ "capital": 1078203.3878192902,
+ "cash": 366.54854106903076,
+ "index": "2019-06-11T00:00:00",
+ "total_value": 1077836.8392782211
+ },
+ {
+ "% change": -0.0029639569603260307,
+ "accumulated return": 1.0750076393833168,
+ "capital": 1075007.639383316,
+ "cash": 366.54854106903076,
+ "index": "2019-06-12T00:00:00",
+ "total_value": 1074641.090842247
+ },
+ {
+ "% change": 0.0028060699481073925,
+ "accumulated return": 1.0780241860141762,
+ "capital": 1078024.1860141754,
+ "cash": 366.54854106903076,
+ "index": "2019-06-13T00:00:00",
+ "total_value": 1077657.6374731064
+ },
+ {
+ "% change": -0.0011328369073972944,
+ "accumulated return": 1.0768029604291924,
+ "capital": 1076802.9604291916,
+ "cash": 366.54854106903076,
+ "index": "2019-06-14T00:00:00",
+ "total_value": 1076436.4118881226
+ },
+ {
+ "% change": 0.0014803929859534826,
+ "accumulated return": 1.0783970519790658,
+ "capital": 1078397.051979065,
+ "cash": 366.54854106903076,
+ "index": "2019-06-17T00:00:00",
+ "total_value": 1078030.503437996
+ },
+ {
+ "% change": 0.009406558998420689,
+ "accumulated return": 1.0885410574722298,
+ "capital": 1088541.057472229,
+ "cash": 366.54854106903076,
+ "index": "2019-06-18T00:00:00",
+ "total_value": 1088174.50893116
+ },
+ {
+ "% change": 0.0046907551538715175,
+ "accumulated return": 1.0936471370477685,
+ "capital": 1093647.1370477676,
+ "cash": 366.54854106903076,
+ "index": "2019-06-19T00:00:00",
+ "total_value": 1093280.5885066986
+ },
+ {
+ "% change": 0.009948136654461814,
+ "accumulated return": 1.1045268882188806,
+ "capital": 1104526.8882188797,
+ "cash": 366.54854106903076,
+ "index": "2019-06-20T00:00:00",
+ "total_value": 1104160.3396778107
+ },
+ {
+ "% change": -0.0022339442512698815,
+ "accumulated return": 1.102059436726571,
+ "capital": 1102059.4367265701,
+ "cash": 366.54854106903076,
+ "index": "2019-06-21T00:00:00",
+ "total_value": 1101692.888185501
+ },
+ {
+ "% change": 0.005349454496386352,
+ "accumulated return": 1.107954853535653,
+ "capital": 1107954.8535356522,
+ "cash": 366.54854106903076,
+ "index": "2019-06-24T00:00:00",
+ "total_value": 1107588.3049945831
+ },
+ {
+ "% change": -0.0014648321461763203,
+ "accumulated return": 1.1063318856496818,
+ "capital": 1106331.885649681,
+ "cash": 366.54854106903076,
+ "index": "2019-06-25T00:00:00",
+ "total_value": 1105965.337108612
+ },
+ {
+ "% change": -0.0014741167311441705,
+ "accumulated return": 1.1047010233068473,
+ "capital": 1104701.0233068466,
+ "cash": 366.54854106903076,
+ "index": "2019-06-26T00:00:00",
+ "total_value": 1104334.4747657776
+ },
+ {
+ "% change": 0.002719177806783213,
+ "accumulated return": 1.107704901812554,
+ "capital": 1107704.9018125534,
+ "cash": 366.54854106903076,
+ "index": "2019-06-27T00:00:00",
+ "total_value": 1107338.3532714844
+ },
+ {
+ "% change": 0.0006347670725550536,
+ "accumulated return": 1.1084080364103324,
+ "capital": 1108408.0364103317,
+ "cash": 366.54854106903076,
+ "index": "2019-06-28T00:00:00",
+ "total_value": 1108041.4878692627
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.1084080364103324,
+ "capital": 1108408.0364103317,
+ "cash": 207.24219608306885,
+ "index": "2019-07-01T00:00:00",
+ "total_value": 1108200.7942142487
+ },
+ {
+ "% change": 0.0041051669059122275,
+ "accumulated return": 1.1129582363996513,
+ "capital": 1112958.2363996506,
+ "cash": 207.24219608306885,
+ "index": "2019-07-02T00:00:00",
+ "total_value": 1112750.9942035675
+ },
+ {
+ "% change": 0.0039924296542002136,
+ "accumulated return": 1.1174016438665397,
+ "capital": 1117401.643866539,
+ "cash": 207.24219608306885,
+ "index": "2019-07-03T00:00:00",
+ "total_value": 1117194.401670456
+ },
+ {
+ "% change": -0.006269172528579281,
+ "accumulated return": 1.1103964601774223,
+ "capital": 1110396.4601774216,
+ "cash": 207.24219608306885,
+ "index": "2019-07-05T00:00:00",
+ "total_value": 1110189.2179813385
+ },
+ {
+ "% change": -0.004365632903540084,
+ "accumulated return": 1.1055488768548973,
+ "capital": 1105548.8768548965,
+ "cash": 207.24219608306885,
+ "index": "2019-07-08T00:00:00",
+ "total_value": 1105341.6346588135
+ },
+ {
+ "% change": -0.0013896793858981793,
+ "accumulated return": 1.1040125183706293,
+ "capital": 1104012.5183706284,
+ "cash": 207.24219608306885,
+ "index": "2019-07-09T00:00:00",
+ "total_value": 1103805.2761745453
+ },
+ {
+ "% change": 0.006590202628658393,
+ "accumulated return": 1.1112881845712672,
+ "capital": 1111288.1845712662,
+ "cash": 207.24219608306885,
+ "index": "2019-07-10T00:00:00",
+ "total_value": 1111080.942375183
+ },
+ {
+ "% change": -0.003939688155966237,
+ "accumulated return": 1.1069100556726466,
+ "capital": 1106910.0556726456,
+ "cash": 207.24219608306885,
+ "index": "2019-07-11T00:00:00",
+ "total_value": 1106702.8134765625
+ },
+ {
+ "% change": 0.0018085750633052289,
+ "accumulated return": 1.1089119855966578,
+ "capital": 1108911.9855966568,
+ "cash": 207.24219608306885,
+ "index": "2019-07-12T00:00:00",
+ "total_value": 1108704.7434005737
+ },
+ {
+ "% change": 0.00046424091835928216,
+ "accumulated return": 1.1094267879152309,
+ "capital": 1109426.7879152298,
+ "cash": 207.24219608306885,
+ "index": "2019-07-15T00:00:00",
+ "total_value": 1109219.5457191467
+ },
+ {
+ "% change": -0.003924161430289841,
+ "accumulated return": 1.1050732181043637,
+ "capital": 1105073.2181043625,
+ "cash": 207.24219608306885,
+ "index": "2019-07-16T00:00:00",
+ "total_value": 1104865.9759082794
+ },
+ {
+ "% change": 0.0036603550787230876,
+ "accumulated return": 1.1091181784706128,
+ "capital": 1109118.1784706116,
+ "cash": 207.24219608306885,
+ "index": "2019-07-17T00:00:00",
+ "total_value": 1108910.9362745285
+ },
+ {
+ "% change": 0.007305408485777987,
+ "accumulated return": 1.1172207398233427,
+ "capital": 1117220.7398233414,
+ "cash": 207.24219608306885,
+ "index": "2019-07-18T00:00:00",
+ "total_value": 1117013.4976272583
+ },
+ {
+ "% change": -0.0050768177201305775,
+ "accumulated return": 1.11154881377411,
+ "capital": 1111548.813774109,
+ "cash": 207.24219608306885,
+ "index": "2019-07-19T00:00:00",
+ "total_value": 1111341.5715780258
+ },
+ {
+ "% change": -0.0003184999024049562,
+ "accumulated return": 1.1111947855854047,
+ "capital": 1111194.7855854034,
+ "cash": 207.24219608306885,
+ "index": "2019-07-22T00:00:00",
+ "total_value": 1110987.5433893204
+ },
+ {
+ "% change": -0.00048166926137815924,
+ "accumulated return": 1.1106595572137845,
+ "capital": 1110659.5572137833,
+ "cash": 207.24219608306885,
+ "index": "2019-07-23T00:00:00",
+ "total_value": 1110452.3150177002
+ },
+ {
+ "% change": 0.0021681640210267084,
+ "accumulated return": 1.1130676493053449,
+ "capital": 1113067.6493053436,
+ "cash": 207.24219608306885,
+ "index": "2019-07-24T00:00:00",
+ "total_value": 1112860.4071092606
+ },
+ {
+ "% change": -0.005107134778037037,
+ "accumulated return": 1.1073830628032697,
+ "capital": 1107383.0628032684,
+ "cash": 207.24219608306885,
+ "index": "2019-07-25T00:00:00",
+ "total_value": 1107175.8206071854
+ },
+ {
+ "% change": 0.0015975244651404985,
+ "accumulated return": 1.1091521343383801,
+ "capital": 1109152.134338379,
+ "cash": 207.24219608306885,
+ "index": "2019-07-26T00:00:00",
+ "total_value": 1108944.8921422958
+ },
+ {
+ "% change": 0.001198945071258839,
+ "accumulated return": 1.1104819468231213,
+ "capital": 1110481.9468231201,
+ "cash": 207.24219608306885,
+ "index": "2019-07-29T00:00:00",
+ "total_value": 1110274.704627037
+ },
+ {
+ "% change": 0.0003812377375596032,
+ "accumulated return": 1.110905304448129,
+ "capital": 1110905.3044481277,
+ "cash": 207.24219608306885,
+ "index": "2019-07-30T00:00:00",
+ "total_value": 1110698.0622520447
+ },
+ {
+ "% change": -0.0055079448401601505,
+ "accumulated return": 1.1047864993085874,
+ "capital": 1104786.4993085861,
+ "cash": 207.24219608306885,
+ "index": "2019-07-31T00:00:00",
+ "total_value": 1104579.257112503
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.1047864993085874,
+ "capital": 1104786.4993085861,
+ "cash": 404.3723077774048,
+ "index": "2019-08-01T00:00:00",
+ "total_value": 1104382.1270008087
+ },
+ {
+ "% change": -0.00018342305112684087,
+ "accumulated return": 1.1045838559980405,
+ "capital": 1104583.8559980392,
+ "cash": 404.3723077774048,
+ "index": "2019-08-02T00:00:00",
+ "total_value": 1104179.4836902618
+ },
+ {
+ "% change": -0.005284368027823616,
+ "accumulated return": 1.0987468283853543,
+ "capital": 1098746.828385353,
+ "cash": 404.3723077774048,
+ "index": "2019-08-05T00:00:00",
+ "total_value": 1098342.4560775757
+ },
+ {
+ "% change": 0.007713794533448004,
+ "accumulated return": 1.1072223356637967,
+ "capital": 1107222.3356637955,
+ "cash": 404.3723077774048,
+ "index": "2019-08-06T00:00:00",
+ "total_value": 1106817.963356018
+ },
+ {
+ "% change": 0.003130232729614546,
+ "accumulated return": 1.1106881992578517,
+ "capital": 1110688.1992578506,
+ "cash": 404.3723077774048,
+ "index": "2019-08-07T00:00:00",
+ "total_value": 1110283.8269500732
+ },
+ {
+ "% change": 0.005461575157364784,
+ "accumulated return": 1.1167543063344967,
+ "capital": 1116754.3063344955,
+ "cash": 404.3723077774048,
+ "index": "2019-08-08T00:00:00",
+ "total_value": 1116349.9340267181
+ },
+ {
+ "% change": -0.0035046731950830745,
+ "accumulated return": 1.1128404474515925,
+ "capital": 1112840.4474515915,
+ "cash": 404.3723077774048,
+ "index": "2019-08-09T00:00:00",
+ "total_value": 1112436.075143814
+ },
+ {
+ "% change": 0.0013937073074161699,
+ "accumulated return": 1.114391421315194,
+ "capital": 1114391.4213151932,
+ "cash": 404.3723077774048,
+ "index": "2019-08-12T00:00:00",
+ "total_value": 1113987.0490074158
+ },
+ {
+ "% change": 0.00319392743650182,
+ "accumulated return": 1.1179507066507348,
+ "capital": 1117950.706650734,
+ "cash": 404.3723077774048,
+ "index": "2019-08-13T00:00:00",
+ "total_value": 1117546.3343429565
+ },
+ {
+ "% change": -0.0049778612293882585,
+ "accumulated return": 1.112385703171731,
+ "capital": 1112385.70317173,
+ "cash": 404.3723077774048,
+ "index": "2019-08-14T00:00:00",
+ "total_value": 1111981.3308639526
+ },
+ {
+ "% change": 0.006154083797361709,
+ "accumulated return": 1.119231418004037,
+ "capital": 1119231.418004036,
+ "cash": 404.3723077774048,
+ "index": "2019-08-15T00:00:00",
+ "total_value": 1118827.0456962585
+ },
+ {
+ "% change": -0.0003949436372068238,
+ "accumulated return": 1.1187893846769343,
+ "capital": 1118789.3846769333,
+ "cash": 404.3723077774048,
+ "index": "2019-08-16T00:00:00",
+ "total_value": 1118385.012369156
+ },
+ {
+ "% change": -0.0042137793804728485,
+ "accumulated return": 1.1140750530366907,
+ "capital": 1114075.0530366898,
+ "cash": 404.3723077774048,
+ "index": "2019-08-19T00:00:00",
+ "total_value": 1113670.6807289124
+ },
+ {
+ "% change": 0.004207554216639542,
+ "accumulated return": 1.1187625842237483,
+ "capital": 1118762.5842237473,
+ "cash": 404.3723077774048,
+ "index": "2019-08-20T00:00:00",
+ "total_value": 1118358.2119159698
+ },
+ {
+ "% change": 0.00015743831913295203,
+ "accumulated return": 1.1189387203245174,
+ "capital": 1118938.7203245163,
+ "cash": 404.3723077774048,
+ "index": "2019-08-21T00:00:00",
+ "total_value": 1118534.348016739
+ },
+ {
+ "% change": -0.0039406199689981936,
+ "accumulated return": 1.1145294080591213,
+ "capital": 1114529.4080591202,
+ "cash": 404.3723077774048,
+ "index": "2019-08-22T00:00:00",
+ "total_value": 1114125.0357513428
+ },
+ {
+ "% change": 0.001741409665320326,
+ "accumulated return": 1.116470260342599,
+ "capital": 1116470.260342598,
+ "cash": 404.3723077774048,
+ "index": "2019-08-23T00:00:00",
+ "total_value": 1116065.8880348206
+ },
+ {
+ "% change": 0.00070696883649779,
+ "accumulated return": 1.117259570023538,
+ "capital": 1117259.5700235367,
+ "cash": 404.3723077774048,
+ "index": "2019-08-26T00:00:00",
+ "total_value": 1116855.1977157593
+ },
+ {
+ "% change": 0.004462302855395839,
+ "accumulated return": 1.1222451205930724,
+ "capital": 1122245.120593071,
+ "cash": 404.3723077774048,
+ "index": "2019-08-27T00:00:00",
+ "total_value": 1121840.7482852936
+ },
+ {
+ "% change": 0.0021838192253393895,
+ "accumulated return": 1.124695901062967,
+ "capital": 1124695.9010629654,
+ "cash": 404.3723077774048,
+ "index": "2019-08-28T00:00:00",
+ "total_value": 1124291.528755188
+ },
+ {
+ "% change": 0.0008408914708248894,
+ "accumulated return": 1.1256416482534424,
+ "capital": 1125641.6482534409,
+ "cash": 404.3723077774048,
+ "index": "2019-08-29T00:00:00",
+ "total_value": 1125237.2759456635
+ },
+ {
+ "% change": -0.0005375833136915809,
+ "accumulated return": 1.1250365220861451,
+ "capital": 1125036.5220861435,
+ "cash": 404.3723077774048,
+ "index": "2019-08-30T00:00:00",
+ "total_value": 1124632.149778366
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.1250365220861451,
+ "capital": 1125036.5220861435,
+ "cash": 290.7544279098511,
+ "index": "2019-09-03T00:00:00",
+ "total_value": 1124745.7676582336
+ },
+ {
+ "% change": 0.010191804009169303,
+ "accumulated return": 1.1365026738224047,
+ "capital": 1136502.673822403,
+ "cash": 290.7544279098511,
+ "index": "2019-09-04T00:00:00",
+ "total_value": 1136211.919394493
+ },
+ {
+ "% change": -0.005533426249462292,
+ "accumulated return": 1.1302139200944916,
+ "capital": 1130213.92009449,
+ "cash": 290.7544279098511,
+ "index": "2019-09-05T00:00:00",
+ "total_value": 1129923.1656665802
+ },
+ {
+ "% change": -7.877061122107953e-05,
+ "accumulated return": 1.1301248924531953,
+ "capital": 1130124.8924531937,
+ "cash": 290.7544279098511,
+ "index": "2019-09-06T00:00:00",
+ "total_value": 1129834.1380252838
+ },
+ {
+ "% change": -0.0028990614377496504,
+ "accumulated return": 1.1268485909576431,
+ "capital": 1126848.5909576416,
+ "cash": 290.7544279098511,
+ "index": "2019-09-09T00:00:00",
+ "total_value": 1126557.8365297318
+ },
+ {
+ "% change": -0.003988911953810681,
+ "accumulated return": 1.1223536911430374,
+ "capital": 1122353.691143036,
+ "cash": 290.7544279098511,
+ "index": "2019-09-10T00:00:00",
+ "total_value": 1122062.936715126
+ },
+ {
+ "% change": 0.0022754328183562933,
+ "accumulated return": 1.1249075315656676,
+ "capital": 1124907.5315656662,
+ "cash": 290.7544279098511,
+ "index": "2019-09-11T00:00:00",
+ "total_value": 1124616.7771377563
+ },
+ {
+ "% change": 0.000982175899041815,
+ "accumulated return": 1.126012388631822,
+ "capital": 1126012.3886318207,
+ "cash": 290.7544279098511,
+ "index": "2019-09-12T00:00:00",
+ "total_value": 1125721.6342039108
+ },
+ {
+ "% change": -0.0038625211615928023,
+ "accumulated return": 1.121663141952516,
+ "capital": 1121663.1419525146,
+ "cash": 290.7544279098511,
+ "index": "2019-09-13T00:00:00",
+ "total_value": 1121372.3875246048
+ },
+ {
+ "% change": 0.003969951463276056,
+ "accumulated return": 1.1261160901842133,
+ "capital": 1126116.0901842117,
+ "cash": 290.7544279098511,
+ "index": "2019-09-16T00:00:00",
+ "total_value": 1125825.3357563019
+ },
+ {
+ "% change": 0.000311017055144136,
+ "accumulated return": 1.1264663314943328,
+ "capital": 1126466.3314943314,
+ "cash": 290.7544279098511,
+ "index": "2019-09-17T00:00:00",
+ "total_value": 1126175.5770664215
+ },
+ {
+ "% change": -0.0006571229544928281,
+ "accumulated return": 1.1257261046104445,
+ "capital": 1125726.104610443,
+ "cash": 290.7544279098511,
+ "index": "2019-09-18T00:00:00",
+ "total_value": 1125435.3501825333
+ },
+ {
+ "% change": 0.0003285182758860916,
+ "accumulated return": 1.1260959262094512,
+ "capital": 1126095.9262094498,
+ "cash": 290.7544279098511,
+ "index": "2019-09-19T00:00:00",
+ "total_value": 1125805.17178154
+ },
+ {
+ "% change": 0.003258429734655399,
+ "accumulated return": 1.1297652306594863,
+ "capital": 1129765.2306594849,
+ "cash": 290.7544279098511,
+ "index": "2019-09-20T00:00:00",
+ "total_value": 1129474.476231575
+ },
+ {
+ "% change": 0.0020067188549852677,
+ "accumulated return": 1.1320323518495574,
+ "capital": 1132032.351849556,
+ "cash": 290.7544279098511,
+ "index": "2019-09-23T00:00:00",
+ "total_value": 1131741.5974216461
+ },
+ {
+ "% change": 0.0016776892684973177,
+ "accumulated return": 1.133931550377847,
+ "capital": 1133931.5503778458,
+ "cash": 290.7544279098511,
+ "index": "2019-09-24T00:00:00",
+ "total_value": 1133640.795949936
+ },
+ {
+ "% change": -0.005896835032937808,
+ "accumulated return": 1.1272449430866256,
+ "capital": 1127244.9430866241,
+ "cash": 290.7544279098511,
+ "index": "2019-09-25T00:00:00",
+ "total_value": 1126954.1886587143
+ },
+ {
+ "% change": 0.0016078377283152978,
+ "accumulated return": 1.129057370035173,
+ "capital": 1129057.3700351715,
+ "cash": 290.7544279098511,
+ "index": "2019-09-26T00:00:00",
+ "total_value": 1128766.6156072617
+ },
+ {
+ "% change": -0.002298186277157388,
+ "accumulated return": 1.1264625858812347,
+ "capital": 1126462.5858812332,
+ "cash": 290.7544279098511,
+ "index": "2019-09-27T00:00:00",
+ "total_value": 1126171.8314533234
+ },
+ {
+ "% change": -0.0005576295481602989,
+ "accumulated return": 1.1258344370584503,
+ "capital": 1125834.4370584488,
+ "cash": 290.7544279098511,
+ "index": "2019-09-30T00:00:00",
+ "total_value": 1125543.682630539
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.1258344370584503,
+ "capital": 1125834.4370584488,
+ "cash": 286.6349697113037,
+ "index": "2019-10-01T00:00:00",
+ "total_value": 1125547.8020887375
+ },
+ {
+ "% change": -0.0018796516265456864,
+ "accumulated return": 1.1237182605276124,
+ "capital": 1123718.2605276108,
+ "cash": 286.6349697113037,
+ "index": "2019-10-02T00:00:00",
+ "total_value": 1123431.6255578995
+ },
+ {
+ "% change": 0.005966421254151699,
+ "accumulated return": 1.1304228370409026,
+ "capital": 1130422.8370409012,
+ "cash": 286.6349697113037,
+ "index": "2019-10-03T00:00:00",
+ "total_value": 1130136.2020711899
+ },
+ {
+ "% change": 0.0047664862520564455,
+ "accumulated return": 1.1358109819526687,
+ "capital": 1135810.9819526672,
+ "cash": 286.6349697113037,
+ "index": "2019-10-04T00:00:00",
+ "total_value": 1135524.346982956
+ },
+ {
+ "% change": -0.006352376582498209,
+ "accumulated return": 1.1285958828687683,
+ "capital": 1128595.8828687668,
+ "cash": 286.6349697113037,
+ "index": "2019-10-07T00:00:00",
+ "total_value": 1128309.2478990555
+ },
+ {
+ "% change": -0.0008713824507464718,
+ "accumulated return": 1.1276124442224518,
+ "capital": 1127612.4442224503,
+ "cash": 286.6349697113037,
+ "index": "2019-10-08T00:00:00",
+ "total_value": 1127325.809252739
+ },
+ {
+ "% change": 5.6909442755603834e-05,
+ "accumulated return": 1.1276766160182967,
+ "capital": 1127676.6160182953,
+ "cash": 286.6349697113037,
+ "index": "2019-10-09T00:00:00",
+ "total_value": 1127389.981048584
+ },
+ {
+ "% change": -0.0016044647053117256,
+ "accumulated return": 1.12586729868889,
+ "capital": 1125867.2986888885,
+ "cash": 286.6349697113037,
+ "index": "2019-10-10T00:00:00",
+ "total_value": 1125580.6637191772
+ },
+ {
+ "% change": -0.00037981719918156465,
+ "accumulated return": 1.1254396749248519,
+ "capital": 1125439.6749248505,
+ "cash": 286.6349697113037,
+ "index": "2019-10-11T00:00:00",
+ "total_value": 1125153.0399551392
+ },
+ {
+ "% change": -0.0012826447016497378,
+ "accumulated return": 1.123996135688783,
+ "capital": 1123996.1356887817,
+ "cash": 286.6349697113037,
+ "index": "2019-10-14T00:00:00",
+ "total_value": 1123709.5007190704
+ },
+ {
+ "% change": -0.00018545012410287054,
+ "accumulated return": 1.1237876904659285,
+ "capital": 1123787.6904659271,
+ "cash": 286.6349697113037,
+ "index": "2019-10-15T00:00:00",
+ "total_value": 1123501.0554962158
+ },
+ {
+ "% change": 0.0025296290623388895,
+ "accumulated return": 1.12663045646763,
+ "capital": 1126630.4564676285,
+ "cash": 286.6349697113037,
+ "index": "2019-10-16T00:00:00",
+ "total_value": 1126343.8214979172
+ },
+ {
+ "% change": 0.00275991909075346,
+ "accumulated return": 1.1297398653726591,
+ "capital": 1129739.8653726578,
+ "cash": 286.6349697113037,
+ "index": "2019-10-17T00:00:00",
+ "total_value": 1129453.2304029465
+ },
+ {
+ "% change": -0.0010597894582098366,
+ "accumulated return": 1.1285425789728178,
+ "capital": 1128542.5789728165,
+ "cash": 286.6349697113037,
+ "index": "2019-10-18T00:00:00",
+ "total_value": 1128255.9440031052
+ },
+ {
+ "% change": 0.00018132159029216055,
+ "accumulated return": 1.1287472081079497,
+ "capital": 1128747.2081079483,
+ "cash": 286.6349697113037,
+ "index": "2019-10-21T00:00:00",
+ "total_value": 1128460.573138237
+ },
+ {
+ "% change": 0.002998747374124644,
+ "accumulated return": 1.1321320358343139,
+ "capital": 1132132.0358343124,
+ "cash": 286.6349697113037,
+ "index": "2019-10-22T00:00:00",
+ "total_value": 1131845.4008646011
+ },
+ {
+ "% change": 0.0033118518345895964,
+ "accumulated return": 1.1358814893941893,
+ "capital": 1135881.489394188,
+ "cash": 286.6349697113037,
+ "index": "2019-10-23T00:00:00",
+ "total_value": 1135594.8544244766
+ },
+ {
+ "% change": 0.001058201227297939,
+ "accumulated return": 1.1370834805803312,
+ "capital": 1137083.48058033,
+ "cash": 286.6349697113037,
+ "index": "2019-10-24T00:00:00",
+ "total_value": 1136796.8456106186
+ },
+ {
+ "% change": 0.0008539355336956156,
+ "accumulated return": 1.138054476569177,
+ "capital": 1138054.4765691757,
+ "cash": 286.6349697113037,
+ "index": "2019-10-25T00:00:00",
+ "total_value": 1137767.8415994644
+ },
+ {
+ "% change": -0.002394412968717563,
+ "accumulated return": 1.1353295041713727,
+ "capital": 1135329.5041713715,
+ "cash": 286.6349697113037,
+ "index": "2019-10-28T00:00:00",
+ "total_value": 1135042.8692016602
+ },
+ {
+ "% change": -0.0009023849754646873,
+ "accumulated return": 1.1343049998846066,
+ "capital": 1134304.9998846054,
+ "cash": 286.6349697113037,
+ "index": "2019-10-29T00:00:00",
+ "total_value": 1134018.364914894
+ },
+ {
+ "% change": 0.0054474321382560476,
+ "accumulated return": 1.1404840493955626,
+ "capital": 1140484.0493955612,
+ "cash": 286.6349697113037,
+ "index": "2019-10-30T00:00:00",
+ "total_value": 1140197.41442585
+ },
+ {
+ "% change": 0.002819841286244573,
+ "accumulated return": 1.1437000334043517,
+ "capital": 1143700.0334043503,
+ "cash": 286.6349697113037,
+ "index": "2019-10-31T00:00:00",
+ "total_value": 1143413.398434639
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.1437000334043517,
+ "capital": 1143700.0334043503,
+ "cash": 459.86015224456787,
+ "index": "2019-11-01T00:00:00",
+ "total_value": 1143240.1732521057
+ },
+ {
+ "% change": -0.0008956205315419075,
+ "accumulated return": 1.1426757121725095,
+ "capital": 1142675.7121725082,
+ "cash": 459.86015224456787,
+ "index": "2019-11-04T00:00:00",
+ "total_value": 1142215.8520202637
+ },
+ {
+ "% change": -0.005213593644537107,
+ "accumulated return": 1.13671826534176,
+ "capital": 1136718.2653417587,
+ "cash": 459.86015224456787,
+ "index": "2019-11-05T00:00:00",
+ "total_value": 1136258.4051895142
+ },
+ {
+ "% change": 0.0016081066930115906,
+ "accumulated return": 1.1385462295923245,
+ "capital": 1138546.2295923233,
+ "cash": 459.86015224456787,
+ "index": "2019-11-06T00:00:00",
+ "total_value": 1138086.3694400787
+ },
+ {
+ "% change": -0.0041964705940723546,
+ "accumulated return": 1.1337683538198484,
+ "capital": 1133768.353819847,
+ "cash": 459.86015224456787,
+ "index": "2019-11-07T00:00:00",
+ "total_value": 1133308.4936676025
+ },
+ {
+ "% change": -0.0035160549901549487,
+ "accumulated return": 1.1297819619417204,
+ "capital": 1129781.961941719,
+ "cash": 459.86015224456787,
+ "index": "2019-11-08T00:00:00",
+ "total_value": 1129322.1017894745
+ },
+ {
+ "% change": -0.002673890900631082,
+ "accumulated return": 1.1267610482339874,
+ "capital": 1126761.048233986,
+ "cash": 459.86015224456787,
+ "index": "2019-11-11T00:00:00",
+ "total_value": 1126301.1880817413
+ },
+ {
+ "% change": -0.00013039329415820422,
+ "accumulated return": 1.1266141261491789,
+ "capital": 1126614.1261491776,
+ "cash": 459.86015224456787,
+ "index": "2019-11-12T00:00:00",
+ "total_value": 1126154.265996933
+ },
+ {
+ "% change": 0.001870167116529542,
+ "accumulated return": 1.1287210828409207,
+ "capital": 1128721.0828409195,
+ "cash": 459.86015224456787,
+ "index": "2019-11-13T00:00:00",
+ "total_value": 1128261.222688675
+ },
+ {
+ "% change": 0.003365578276103065,
+ "accumulated return": 1.1325198819971096,
+ "capital": 1132519.8819971085,
+ "cash": 459.86015224456787,
+ "index": "2019-11-14T00:00:00",
+ "total_value": 1132060.021844864
+ },
+ {
+ "% change": 0.0037822045142348326,
+ "accumulated return": 1.1368033038072598,
+ "capital": 1136803.3038072586,
+ "cash": 459.86015224456787,
+ "index": "2019-11-15T00:00:00",
+ "total_value": 1136343.443655014
+ },
+ {
+ "% change": 0.0013147448682504503,
+ "accumulated return": 1.1382979101171506,
+ "capital": 1138297.9101171494,
+ "cash": 459.86015224456787,
+ "index": "2019-11-18T00:00:00",
+ "total_value": 1137838.0499649048
+ },
+ {
+ "% change": 0.0020350145391179186,
+ "accumulated return": 1.1406143629140866,
+ "capital": 1140614.3629140854,
+ "cash": 459.86015224456787,
+ "index": "2019-11-19T00:00:00",
+ "total_value": 1140154.5027618408
+ },
+ {
+ "% change": 0.0008684709846773497,
+ "accumulated return": 1.1416049533929837,
+ "capital": 1141604.9533929825,
+ "cash": 459.86015224456787,
+ "index": "2019-11-20T00:00:00",
+ "total_value": 1141145.093240738
+ },
+ {
+ "% change": -0.0034327278578127896,
+ "accumulated return": 1.1376861342668545,
+ "capital": 1137686.1342668533,
+ "cash": 459.86015224456787,
+ "index": "2019-11-21T00:00:00",
+ "total_value": 1137226.2741146088
+ },
+ {
+ "% change": 1.1529185352188165e-05,
+ "accumulated return": 1.137699250861169,
+ "capital": 1137699.250861168,
+ "cash": 459.86015224456787,
+ "index": "2019-11-22T00:00:00",
+ "total_value": 1137239.3907089233
+ },
+ {
+ "% change": 0.0015130714655249289,
+ "accumulated return": 1.139420671133996,
+ "capital": 1139420.671133995,
+ "cash": 459.86015224456787,
+ "index": "2019-11-25T00:00:00",
+ "total_value": 1138960.8109817505
+ },
+ {
+ "% change": 0.0022576172205539535,
+ "accumulated return": 1.1419930468626034,
+ "capital": 1141993.0468626022,
+ "cash": 459.86015224456787,
+ "index": "2019-11-26T00:00:00",
+ "total_value": 1141533.1867103577
+ },
+ {
+ "% change": -0.0013382450252417133,
+ "accumulated return": 1.1404647803487789,
+ "capital": 1140464.7803487778,
+ "cash": 459.86015224456787,
+ "index": "2019-11-27T00:00:00",
+ "total_value": 1140004.9201965332
+ },
+ {
+ "% change": -0.003742942884212841,
+ "accumulated return": 1.136196085814477,
+ "capital": 1136196.085814476,
+ "cash": 459.86015224456787,
+ "index": "2019-11-29T00:00:00",
+ "total_value": 1135736.2256622314
+ },
+ {
+ "% change": 0,
+ "accumulated return": 1.136196085814477,
+ "capital": 1136196.085814476,
+ "cash": 447.30963706970215,
+ "index": "2019-12-02T00:00:00",
+ "total_value": 1135748.7761774063
+ },
+ {
+ "% change": 0.003515201257466849,
+ "accumulated return": 1.140190043724061,
+ "capital": 1140190.04372406,
+ "cash": 447.30963706970215,
+ "index": "2019-12-03T00:00:00",
+ "total_value": 1139742.7340869904
+ },
+ {
+ "% change": 0.0004399478872685325,
+ "accumulated return": 1.1406916679248822,
+ "capital": 1140691.667924881,
+ "cash": 447.30963706970215,
+ "index": "2019-12-04T00:00:00",
+ "total_value": 1140244.3582878113
+ },
+ {
+ "% change": -9.061400155108146e-06,
+ "accumulated return": 1.1406813316612254,
+ "capital": 1140681.3316612244,
+ "cash": 447.30963706970215,
+ "index": "2019-12-05T00:00:00",
+ "total_value": 1140234.0220241547
+ },
+ {
+ "% change": 0.00029776644314138956,
+ "accumulated return": 1.141020988284112,
+ "capital": 1141020.988284111,
+ "cash": 447.30963706970215,
+ "index": "2019-12-06T00:00:00",
+ "total_value": 1140573.6786470413
+ },
+ {
+ "% change": -0.0007528430540637565,
+ "accumulated return": 1.1401619785585413,
+ "capital": 1140161.9785585403,
+ "cash": 447.30963706970215,
+ "index": "2019-12-09T00:00:00",
+ "total_value": 1139714.6689214706
+ },
+ {
+ "% change": 0.0010558320072924232,
+ "accumulated return": 1.1413657980690013,
+ "capital": 1141365.7980690002,
+ "cash": 447.30963706970215,
+ "index": "2019-12-10T00:00:00",
+ "total_value": 1140918.4884319305
+ },
+ {
+ "% change": 0.006143591284567984,
+ "accumulated return": 1.148377883038522,
+ "capital": 1148377.8830385208,
+ "cash": 447.30963706970215,
+ "index": "2019-12-11T00:00:00",
+ "total_value": 1147930.573401451
+ },
+ {
+ "% change": 0.0004090850208076091,
+ "accumulated return": 1.1488476672286998,
+ "capital": 1148847.6672286987,
+ "cash": 447.30963706970215,
+ "index": "2019-12-12T00:00:00",
+ "total_value": 1148400.357591629
+ },
+ {
+ "% change": 0.004204254552145459,
+ "accumulated return": 1.1536777152633677,
+ "capital": 1153677.7152633667,
+ "cash": 447.30963706970215,
+ "index": "2019-12-13T00:00:00",
+ "total_value": 1153230.405626297
+ },
+ {
+ "% change": 0.0010136297580323195,
+ "accumulated return": 1.1548471173267374,
+ "capital": 1154847.1173267365,
+ "cash": 447.30963706970215,
+ "index": "2019-12-16T00:00:00",
+ "total_value": 1154399.8076896667
+ },
+ {
+ "% change": 0.0003874751283305944,
+ "accumulated return": 1.155294591861726,
+ "capital": 1155294.5918617249,
+ "cash": 447.30963706970215,
+ "index": "2019-12-17T00:00:00",
+ "total_value": 1154847.2822246552
+ },
+ {
+ "% change": -0.002272775411589212,
+ "accumulated return": 1.1526688667202005,
+ "capital": 1152668.8667201996,
+ "cash": 447.30963706970215,
+ "index": "2019-12-18T00:00:00",
+ "total_value": 1152221.5570831299
+ },
+ {
+ "% change": 0.001719099235785615,
+ "accumulated return": 1.154650418888093,
+ "capital": 1154650.418888092,
+ "cash": 447.30963706970215,
+ "index": "2019-12-19T00:00:00",
+ "total_value": 1154203.1092510223
+ },
+ {
+ "% change": 0.0015604417934935721,
+ "accumulated return": 1.1564521836586008,
+ "capital": 1156452.1836585999,
+ "cash": 447.30963706970215,
+ "index": "2019-12-20T00:00:00",
+ "total_value": 1156004.8740215302
+ },
+ {
+ "% change": 0.001285220138130816,
+ "accumulated return": 1.157938479293824,
+ "capital": 1157938.4792938232,
+ "cash": 447.30963706970215,
+ "index": "2019-12-23T00:00:00",
+ "total_value": 1157491.1696567535
+ },
+ {
+ "% change": 0.002650106123738505,
+ "accumulated return": 1.1610071391487131,
+ "capital": 1161007.1391487122,
+ "cash": 447.30963706970215,
+ "index": "2019-12-24T00:00:00",
+ "total_value": 1160559.8295116425
+ },
+ {
+ "% change": 0.004480166872847358,
+ "accumulated return": 1.1662086448726665,
+ "capital": 1166208.6448726654,
+ "cash": 447.30963706970215,
+ "index": "2019-12-26T00:00:00",
+ "total_value": 1165761.3352355957
+ },
+ {
+ "% change": 0.002383230134836989,
+ "accumulated return": 1.1689879884586345,
+ "capital": 1168987.9884586334,
+ "cash": 447.30963706970215,
+ "index": "2019-12-27T00:00:00",
+ "total_value": 1168540.6788215637
+ },
+ {
+ "% change": -0.0020943438529887892,
+ "accumulated return": 1.1665397256507883,
+ "capital": 1166539.7256507874,
+ "cash": 447.30963706970215,
+ "index": "2019-12-30T00:00:00",
+ "total_value": 1166092.4160137177
+ },
+ {
+ "% change": 0.00022561705175982993,
+ "accumulated return": 1.1668029169044505,
+ "capital": 1166802.9169044495,
+ "cash": 447.30963706970215,
+ "index": "2019-12-31T00:00:00",
+ "total_value": 1166355.6072673798
+ }
+ ]
+ },
+ "vconcat": [
+ {
+ "height": 350,
+ "layer": [
+ {
+ "encoding": {
+ "opacity": {
+ "value": 0
+ },
+ "x": {
+ "field": "index",
+ "type": "temporal"
+ }
+ },
+ "mark": "point",
+ "selection": {
+ "selector002": {
+ "empty": "none",
+ "fields": [
+ "index"
+ ],
+ "nearest": true,
+ "on": "mouseover",
+ "type": "single"
+ }
+ }
+ },
+ {
+ "encoding": {
+ "opacity": {
+ "condition": {
+ "selection": "selector002",
+ "value": 1
+ },
+ "value": 0
+ },
+ "x": {
+ "field": "index",
+ "type": "temporal"
+ },
+ "y": {
+ "axis": {
+ "format": "%"
+ },
+ "field": "accumulated return",
+ "type": "quantitative"
+ }
+ },
+ "mark": "point"
+ },
+ {
+ "encoding": {
+ "text": {
+ "condition": {
+ "field": "accumulated return",
+ "format": ".2%",
+ "selection": "selector002",
+ "type": "quantitative"
+ },
+ "value": " "
+ },
+ "x": {
+ "field": "index",
+ "type": "temporal"
+ },
+ "y": {
+ "axis": {
+ "format": "%"
+ },
+ "field": "accumulated return",
+ "type": "quantitative"
+ }
+ },
+ "mark": {
+ "align": "left",
+ "dx": 5,
+ "dy": -5,
+ "type": "text"
+ }
+ },
+ {
+ "encoding": {
+ "x": {
+ "axis": {
+ "title": "date"
+ },
+ "field": "index",
+ "scale": {
+ "domain": {
+ "selection": "selector001"
+ }
+ },
+ "type": "temporal"
+ },
+ "y": {
+ "axis": {
+ "format": "%"
+ },
+ "field": "accumulated return",
+ "type": "quantitative"
+ }
+ },
+ "mark": {
+ "opacity": 0.7,
+ "type": "area"
+ }
+ }
+ ],
+ "title": "Wealth over time",
+ "width": 700
+ },
+ {
+ "encoding": {
+ "x": {
+ "field": "index",
+ "type": "temporal"
+ },
+ "y": {
+ "axis": {
+ "format": "%"
+ },
+ "field": "accumulated return",
+ "type": "quantitative"
+ }
+ },
+ "height": 70,
+ "mark": {
+ "opacity": 0.7,
+ "type": "area"
+ },
+ "selection": {
+ "selector001": {
+ "encodings": [
+ "x"
+ ],
+ "type": "interval"
+ }
+ },
+ "width": 700
+ }
+ ]
+ },
+ "image/png": "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",
+ "text/plain": [
+ "\n",
+ "\n",
+ "If you see this message, it means the renderer has not been properly enabled\n",
+ "for the frontend that you are using. For more information, see\n",
+ "https://altair-viz.github.io/user_guide/troubleshooting.html\n"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "returns_chart(bt.balance)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}