-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMeanReversion.py
More file actions
90 lines (58 loc) · 1.84 KB
/
MeanReversion.py
File metadata and controls
90 lines (58 loc) · 1.84 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import alpaca_trade_api as tradeapi
api = tradeapi.REST('PKVBXZRT0VWL3U5RQG3Y', 'Mnm9xzhzrFh2K7b3FoD2z6gIxLtth0u64XlPrNl9', base_url='https://paper-api.alpaca.markets')
portfolio=api.list_positions()
for asset in portfolio:
print(asset)
def sell():
#Liquidates position
portfolio=api.list_positions()
for asset in portfolio:
api.submit_order(
symbol=asset.symbol,
qty=asset.qty,
side='sell',
type='market',
time_in_force='gtc'
)
sell()
api.list_positions()
for asset in api.list_assets():
if asset.tradable:
print("We can trade "+str(asset.symbol))
def percent_change(asset):
#Input: asset from api.list_assets()
#Output: percent change from the last 5 days
symbol=asset.symbol
barset = api.get_barset(symbol, 'day', limit=5)
symbol_bars=barset[symbol]
if not symbol_bars:
return 0
week_open = symbol_bars[0].o
week_close = symbol_bars[-5].c
percent_change = (week_close - week_open) / week_open * 100
return percent_change
print(percent_change(api.get_asset("AAPL")))
import math
def buy():
assets_to_buy=[]
for asset in api.list_assets()[:200]:#Only look at first 200
if asset.tradable:
if (percent_change(asset)<-10):
assets_to_buy.append(asset.symbol)
cash=float(api.get_account().cash)
money_per_asset=cash/len(assets_to_buy)
barset=api.get_barset(assets_to_buy,'minute',limit=1)
for asset in assets_to_buy:
current_price=barset[asset][0].c
shares=money_per_asset/current_price
#shares might not be an integer, =>
shares=math.floor(shares)
api.submit_order(
symbol=asset,
qty=shares,
side='buy',
type='market',
time_in_force='gtc'
)
buy()
print(api.list_positions())