-
Notifications
You must be signed in to change notification settings - Fork 3
/
trade.py
38 lines (26 loc) · 872 Bytes
/
trade.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import datetime as dt
import yfinance as yf
import backtrader as bt
import numpy as np
from Strategies.MovingAverageStrategy import MovingAverageStrategy
# get data
df = yf.download('SPY','2022-01-01', '2022-10-31', interval='1d')
# establish an instance
cerebro = bt.Cerebro()
# create a data feed
feed = bt.feeds.PandasData(dataname = df)
# add feed to instance
cerebro.adddata(feed)
# add strategy
cerebro.addstrategy(MovingAverageStrategy)
# Set initial account value
cerebro.broker.setcash(100000)
# Print out the starting conditions
print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
cerebro.run()
# Print out the final result
print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())
# Return if buy and hold
hold = df['Close'][-1]/df['Close'][0]*100000
print("Return if you just held position {}".format(hold))
cerebro.plot()