Time based strategy back testing system
Project description
This project is to simulate an exchange in order to bakc test quant strategies.
### Dependencies
- python 3.5
- pandas 0.23.0
- spyder 3.2.8
- plotly 2.7.0
### Installation
```bash
pip install mini_exchange
```
### Usage
```bash
# price: dataframe dt*ticker
# signal01: dataframe dt*ticker
# signal02: dataframe dt*ticker
dates=price.loc[start:end].index
tickers=price.columns
from mini_exchange import Mini_Exchange,Account,Log
MM=Mini_Exchange(price)
# create user01
acc01=Account(start_amount=1000)
log01=Log()
MM.register(user_name='user01',account=acc01,log=log01)
# create user02
acc02=Account(start_amount=1000)
log02=Log()
MM.register(user_name='user02',account=acc02,log=log02)
# trade
for dt in dates:
print('\rrun %d'%dt,end='\r')
MM.hold(dt)
for ticker in tickers:
#user01
if signal01.loc[dt,ticker]==1:
#open long
MM.long(ticker,amount=10,dt=dt,user='user01')
elif signal01.loc[dt,ticker]==-1:
#open short
MM.short(ticker,amount=10,dt=dt,user='user01')
elif signal01.loc[dt,ticker].isin((-2,2)):
#close
MM.close(dt,ticker, by='ticker',user='user01')
#user02
if signal02.loc[dt,ticker]==1:
#open long
MM.long(ticker,amount=10,dt=dt,user='user02')
elif signal02.loc[dt,ticker]==-1:
#open short
MM.short(ticker,amount=10,dt=dt,user='user02')
elif signal01.loc[dt,ticker].isin((-2,2)):
#close
MM.close(dt,ticker, by='ticker',user='user01')
MM.settle(dt)
# summary
# user01
print(acc01.annual_return(),acc01.sharpe_ratio(rf=0.03))
print(pos01.win_rate())
acc01.plot_history(by_pct=True)
pos01.plot_history_position()
history_position=pos01.pos
history_value=acc01.history_value
```
### Dependencies
- python 3.5
- pandas 0.23.0
- spyder 3.2.8
- plotly 2.7.0
### Installation
```bash
pip install mini_exchange
```
### Usage
```bash
# price: dataframe dt*ticker
# signal01: dataframe dt*ticker
# signal02: dataframe dt*ticker
dates=price.loc[start:end].index
tickers=price.columns
from mini_exchange import Mini_Exchange,Account,Log
MM=Mini_Exchange(price)
# create user01
acc01=Account(start_amount=1000)
log01=Log()
MM.register(user_name='user01',account=acc01,log=log01)
# create user02
acc02=Account(start_amount=1000)
log02=Log()
MM.register(user_name='user02',account=acc02,log=log02)
# trade
for dt in dates:
print('\rrun %d'%dt,end='\r')
MM.hold(dt)
for ticker in tickers:
#user01
if signal01.loc[dt,ticker]==1:
#open long
MM.long(ticker,amount=10,dt=dt,user='user01')
elif signal01.loc[dt,ticker]==-1:
#open short
MM.short(ticker,amount=10,dt=dt,user='user01')
elif signal01.loc[dt,ticker].isin((-2,2)):
#close
MM.close(dt,ticker, by='ticker',user='user01')
#user02
if signal02.loc[dt,ticker]==1:
#open long
MM.long(ticker,amount=10,dt=dt,user='user02')
elif signal02.loc[dt,ticker]==-1:
#open short
MM.short(ticker,amount=10,dt=dt,user='user02')
elif signal01.loc[dt,ticker].isin((-2,2)):
#close
MM.close(dt,ticker, by='ticker',user='user01')
MM.settle(dt)
# summary
# user01
print(acc01.annual_return(),acc01.sharpe_ratio(rf=0.03))
print(pos01.win_rate())
acc01.plot_history(by_pct=True)
pos01.plot_history_position()
history_position=pos01.pos
history_value=acc01.history_value
```
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Mini Exchange-0.0.5.tar.gz
(7.9 kB
view hashes)
Built Distribution
Close
Hashes for Mini_Exchange-0.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f1810eb26feca448085529e5faee05719502c1a1e1e0002d868aad8fc8f0886 |
|
MD5 | f638c088a9fd640b930ce2a7363cd886 |
|
BLAKE2b-256 | 0f2a6d722018ceac2b6747f3453d6bc497d76e43a61866767daa9a06b665a08e |