From 0400298d4d2246e30e3690edeaf4604e64581b23 Mon Sep 17 00:00:00 2001 From: Finn Lancaster Date: Tue, 14 Feb 2023 16:34:49 -0500 Subject: [PATCH] Add helper scripts for quickstart, update docs accordingly --- .gitignore | 3 +-- README.md | 43 +++++++++++++++++++++++++++-- config.example.py | 54 ------------------------------------- config.py | 37 +++++++++++++++++++++++++ helpers/amount.py | 43 +++++++++++++++++++++++++++++ helpers/auth.py | 36 +++++++++++++++++++++++++ helpers/tickers.py | 33 +++++++++++++++++++++++ images/amount-example.png | Bin 0 -> 39520 bytes images/auth-example.png | Bin 0 -> 8051 bytes images/tickers-example.png | Bin 0 -> 10591 bytes 10 files changed, 191 insertions(+), 58 deletions(-) delete mode 100644 config.example.py create mode 100644 config.py create mode 100644 helpers/amount.py create mode 100644 helpers/auth.py create mode 100644 helpers/tickers.py create mode 100644 images/amount-example.png create mode 100644 images/auth-example.png create mode 100644 images/tickers-example.png diff --git a/.gitignore b/.gitignore index c8ef175..ed8ebf5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -__pycache__ -config.py \ No newline at end of file +__pycache__ \ No newline at end of file diff --git a/README.md b/README.md index cf28921..03d1d7d 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,20 @@ # HFT-EXT > An extensible framework for high-frequency trading built on top of [Alpaca](https://alpaca.markets/) and Yahoo Finance. +## Table of Contents +- [HFT-EXT](#hft-ext) + - [Table of Contents](#table-of-contents) + - [Disclaimer](#disclaimer) + - [Why should I use HFT-EXT?](#why-should-i-use-hft-ext) + - [I'm sold! How do I get started?](#im-sold-how-do-i-get-started) + - [I have a working strategy! How do I deploy it to live trading?](#i-have-a-working-strategy-how-do-i-deploy-it-to-live-trading) + - [How do I add my own strategies?](#how-do-i-add-my-own-strategies) + - [What about if I want to change the amount of shares I buy for each pricepoint?](#what-about-if-i-want-to-change-the-amount-of-shares-i-buy-for-each-pricepoint) + - [This is great, but I wish I could customize which tickers I want to trade.](#this-is-great-but-i-wish-i-could-customize-which-tickers-i-want-to-trade) + - [I want to get to modifying the framework, but I don't know where to start.](#i-want-to-get-to-modifying-the-framework-but-i-dont-know-where-to-start) + - [I want to contribute!](#i-want-to-contribute) + + ## Disclaimer _It goes without saying that past performance is not indicative of future results. This framework is not intended to be used for live trading. If you do use it for live trading, you do so at your own risk. The authors of this framework are not responsible for any losses incurred by using this framework. Please use this framework responsibly._ @@ -33,7 +47,15 @@ Then, you need to install the dependencies. You can do this by running the follo cd hft-ext pip install -r requirements.txt ``` -Finally, you need to add your API keys to the `config.example.py` file. Simply fill the `ALPACA_PUBLIC_KEY` and `ALPACA_SECRET_KEY` variables with your API keys. Then, rename the file to `config.py`. You can now run the framework by running the following command in your terminal: +Finally, you need to add your API keys to the `config.py` file. We have a built-in script that will help you do this. You can run this script by running the following command in your terminal: +```bash +cd helpers +python auth.py +``` +The script should look like this: +![auth-example](images/auth-example.png) + +From there, make sure you are back in the root directory ``cd ..`` and run the following command in your terminal: ```bash python main.py ``` @@ -68,8 +90,25 @@ strategy = Strategy(ArimaStrategy()) The default strategy used is the ARIMA strategy. You can find the code for this strategy in the `scripts/strategies.py` file, within the `ArimaStrategy` class. +## What about if I want to change the amount of shares I buy for each pricepoint? +By default, the model will buy a total of $200 worth of shares for each pricepoint. We recognize that this may be a bit too much for some people, so we have made it easy to change this. You can run the following command in your terminal to change the amount of shares you buy for each pricepoint: +```bash +cd helpers +python amount.py +``` +The script should look like this: +![amount-example](images/amount-example.png) +Which is also the default setting. + + ## This is great, but I wish I could customize which tickers I want to trade. -You can customize which tickers you want to trade by adding them to the `config.py` file. Simply add the tickers you want to trade to the `TRADE_TICKERS` variable. For example, if you want to trade Apple, Microsoft, and Tesla, you would add `TRADE_TICKERS = ["AAPL", "MSFT", "TSLA"]` to the `config.py` file. However, it is recommended that you use the default tickers, as they are the ones that have been tested and are known to work well with the framework. +You can customize which tickers you want to trade by adding them to the `config.py` file. We have a built-in script that will help you do this. You can run this script by running the following command in your terminal: +```bash +cd helpers +python tickers.py +``` +The script should look like this: +![tickers-example](images/tickers-example.png) As an aside, there are no limits to the number of tickers you can trade. However, the more tickers you trade, the more you risk running into API rate limits. If you do run into API rate limits, you can simply wait a few minutes and try again. If you want to avoid this, you can simply trade fewer tickers. diff --git a/config.example.py b/config.example.py deleted file mode 100644 index 348990b..0000000 --- a/config.example.py +++ /dev/null @@ -1,54 +0,0 @@ -ALPACA_PUBLIC_KEY = "" -ALPACA_SECRET_KEY = "" -PAPER = True - -# list of large cap stocks to trade -TRADE_TICKERS = [ - "AAPL", "MSFT", "AMZN", "GOOG", "FB", "JPM", "JNJ", "V", "PG", - "UNH", "MA", "HD", "VZ", "DIS", "BAC", "INTC", "T", "PFE", "CMCSA", - "WFC", "KO", "PEP", "NFLX", "NVDA", "ADBE", "CRM", "TMO", "CSCO", "ABT", - "NKE", "MRK", "MDT", "ACN", "COST", "AVGO", "TXN", "QCOM", "UNP", "NEE", - "PYPL", "LIN", "PM", "CVX", "MCD", "ORCL", "UPS", "IBM", "LOW", "MMM", - "AMGN", "GS", "BA", "CAT", "XOM", "WMT", "DHR", "AMT", "AXP", "HON", - "CVS", "BKNG", "CHTR", "SBUX", "GILD", "MDLZ", "BLK", "INTU", "TGT", - "ZTS", "WBA", "MU", "GE", "MCK", "GPN", "FIS", "USB", "DUK", "DOW", - "PLD", "RTX", "ANTM", "DE", "ISRG", "SYK", "LMT", "CI", "MS", "TJX", - "BK", "C", "PNC", "SPGI", "ADP", "CL", "SO", "CME", "COP", "MDXG", - "CNC", "CARR", "CRL", "CPB", "COF", "CAH", "KMX", "KHC", "K", "KEY", - "KMB", "KIM", "KMI", "KLAC", "KSS", "KDP", "KR", "LB", "LHX", "LH", - "LRCX", "LW", "LVS", "LEG", "LDOS", "LEN", "LLY", "LNC", "LIN", "LYB", - "LKQ", "LMT", "L", "LOW", "LUMN", "LYV", "MTB", "MRO", "MPC", "MKTX", - "MAR", "MMC", "MLM", "MAS", "MA", "MKC", "MXIM", "MCD", "MCK", "MDT", - "MRK", "MET", "MTD", "MGM", "MCHP", "MU", "MSFT", "MAA", "MHK", "TAP", - "MDLZ", "MNST", "MCO", "MS", "MOS", "MSI", "MSCI", "MYL", "NDAQ", "NOV", - "NTAP", "NFLX", "NWL", "NEM", "NWSA", "NWS", "NEE", "NLSN", "NKE", - "NI", "NSC", "NTRS", "NOC", "NLOK", "NCLH", "NRG", "NUE", "NVDA", - "NVR", "ORLY", "OXY", "ODFL", "OMC", "OKE", "ORCL", "PCAR", "PKG", - "PH", "PAYX", "PAYC", "PYPL", "PNR", "PBCT", "PEP", "PKI", "PRGO", - "PFE", "PM", "PSX", "PNW", "PXD", "PNC", "POOL", "PPG", "PPL", "PFG", - "PG", "PGR", "PLD", "PRU", "PTC", "PEG", "PSA", "PHM", "PVH", "QRVO", - "PWR", "QCOM", "DGX", "RL", "RJF", "RTX", "O", "REG", "REGN", "RF", - "RSG", "RMD", "RHI", "ROK", "ROL", "ROP", "ROST", "RCL", "SPGI", - "CRM", "SBAC", "SLB", "STX", "SEE", "SRE", "NOW", "SHW", "SPG", "SWKS", - "SLG", "SNA", "SO", "LUV", "SWK", "SBUX", "STT", "STE", "SYK", "SIVB", - "SYF", "SNPS", "SYY", "TMUS", "TROW", "TTWO", "TPR", "TGT", "TEL", - "TDY", "TFX", "TER", "TSLA", "TXN", "TXT", "TMO", "TJX", "TSCO", - "TT", "TDG", "TRV", "TRMB", "TFC", "TWTR", "TYL", "TSN", "UDR", "ULTA", - "USB", "UAA", "UA", "UNP", "UAL", "UNH", "UPS", "URI", "UHS", "UNM", - "VLO", "VTR", "VRSN", "VRSK", "VZ", "VRTX", "VFC", "VIAC", "VTRS", - "V", "VNO", "VMC", "WRB", "WAB", "WMT", "WBA", "DIS", "WM", "WAT", - "WEC", "WFC", "WELL", "WST", "WDC", "WU", "WRK", "WY", "WHR", "WMB", - "WLTW", "WYNN", "XEL", "XRX", "XYL", "YUM", "ZBRA", "ZBH", - "ZION", "ZTS" -] - -# API is limited to 200 requests per minute -ALPACA_TIMEOUT = 3.0 - - -def CHOOSE_AMOUNT(value): - value_buys = {1: 200, 5: 40, 10: 20, 20: 10, 50: 4, 100: 2} - for key in value_buys: - if value <= key: - return value_buys[key] - return 1 diff --git a/config.py b/config.py new file mode 100644 index 0000000..7943be9 --- /dev/null +++ b/config.py @@ -0,0 +1,37 @@ +# These are our API keys and other configuration settings +# for the Alpaca API and the trading algorithm. +# ALPACA_PUBLIC_KEY is the API key ID for your account. +# ALPACA_SECRET_KEY is the "passphrase" for your API key. +# PAPER is a boolean value that determines whether we are +# using the paper trading API or the live trading API. +# You can configure these values by running the helpers/auth.py script. +ALPACA_PUBLIC_KEY = "" +ALPACA_SECRET_KEY = "" +PAPER = True + +# ALPACA_TIMEOUT is the number of seconds we will wait for +# to avoid rate limiting. This same value is used for both +# Yahoo Finance and Alpaca. It defaults to 3 seconds. +ALPACA_TIMEOUT = 3.0 + +# SHARES_BY_PRICE is a dictionary that maps the price of a +# share to the number of shares we want to buy at that price. +# For example, we want to buy 200 shares at $1, 100 shares +# at $2, 40 shares at $5, 20 shares at $10, 10 shares at $20, ... +# You can configure this dictionary by running the helpers/amount.py script. +SHARES_BY_PRICE = {1: 200, 2: 100, 5: 40, 10: 20, 50: 4, 100: 2} + +# TRADE_TICKERS is a list of the tickers we want to trade. +# We will use the first 100 tickers in the S&P 500 by default. +# You can change this list to any other tickers you want. +# You can configure this list by running the helpers/tickers.py script. +TRADE_TICKERS = [ "AAPL", "MSFT", "AMZN", "GOOG", "FB", "JPM", "JNJ", "V", "PG", "UNH", "MA", "HD", "VZ", "DIS", "BAC", "INTC", "T", "PFE", "CMCSA", "WFC", "KO", "PEP", "NFLX", "NVDA", "ADBE", "CRM", "TMO", "CSCO", "ABT", "NKE", "MRK", "MDT", "ACN", "COST", "AVGO", "TXN", "QCOM", "UNP", "NEE", "PYPL", "LIN", "PM", "CVX", "MCD", "ORCL", "UPS", "IBM", "LOW", "MMM", "AMGN", "GS", "BA", "CAT", "XOM", "WMT", "DHR", "AMT", "AXP", "HON", "CVS", "BKNG", "CHTR", "SBUX", "GILD", "MDLZ", "BLK", "INTU", "TGT", "ZTS", "WBA", "MU", "GE", "MCK", "GPN", "FIS", "USB", "DUK", "DOW", "PLD", "RTX", "ANTM", "DE", "ISRG", "SYK", "LMT", "CI", "MS", "TJX", "BK", "C", "PNC", "SPGI", "ADP", "CL", "SO", "CME", "COP", "MDXG", "CNC", "CARR", "CRL", "CPB", "COF", "CAH", "KMX", "KHC", "K", "KEY", "KMB", "KIM", "KMI", "KLAC", "KSS", "KDP", "KR", "LB", "LHX", "LH", "LRCX", "LW", "LVS", "LEG", "LDOS", "LEN", "LLY", "LNC", "LIN", "LYB", "LKQ", "LMT", "L", "LOW", "LUMN", "LYV", "MTB", "MRO", "MPC", "MKTX", "MAR", "MMC", "MLM", "MAS", "MA", "MKC", "MXIM", "MCD", "MCK", "MDT", "MRK", "MET", "MTD", "MGM", "MCHP", "MU", "MSFT", "MAA", "MHK", "TAP", "MDLZ", "MNST", "MCO", "MS", "MOS", "MSI", "MSCI", "MYL", "NDAQ", "NOV", "NTAP", "NFLX", "NWL", "NEM", "NWSA", "NWS", "NEE", "NLSN", "NKE", "NI", "NSC", "NTRS", "NOC", "NLOK", "NCLH", "NRG", "NUE", "NVDA", "NVR", "ORLY", "OXY", "ODFL", "OMC", "OKE", "ORCL", "PCAR", "PKG", "PH", "PAYX", "PAYC", "PYPL", "PNR", "PBCT", "PEP", "PKI", "PRGO", "PFE", "PM", "PSX", "PNW", "PXD", "PNC", "POOL", "PPG", "PPL", "PFG", "PG", "PGR", "PLD", "PRU", "PTC", "PEG", "PSA", "PHM", "PVH", "QRVO", "PWR", "QCOM", "DGX", "RL", "RJF", "RTX", "O", "REG", "REGN", "RF", "RSG", "RMD", "RHI", "ROK", "ROL", "ROP", "ROST", "RCL", "SPGI", "CRM", "SBAC", "SLB", "STX", "SEE", "SRE", "NOW", "SHW", "SPG", "SWKS", "SLG", "SNA", "SO", "LUV", "SWK", "SBUX", "STT", "STE", "SYK", "SIVB", "SYF", "SNPS", "SYY", "TMUS", "TROW", "TTWO", "TPR", "TGT", "TEL", "TDY", "TFX", "TER", "TSLA", "TXN", "TXT", "TMO", "TJX", "TSCO", "TT", "TDG", "TRV", "TRMB", "TFC", "TWTR", "TYL", "TSN", "UDR", "ULTA", "USB", "UAA", "UA", "UNP", "UAL", "UNH", "UPS", "URI", "UHS", "UNM", "VLO", "VTR", "VRSN", "VRSK", "VZ", "VRTX", "VFC", "VIAC", "VTRS", "V", "VNO", "VMC", "WRB", "WAB", "WMT", "WBA", "DIS", "WM", "WAT", "WEC", "WFC", "WELL", "WST", "WDC", "WU", "WRK", "WY", "WHR", "WMB", "WLTW", "WYNN", "XEL", "XRX", "XYL", "YUM", "ZBRA", "ZBH", "ZION", "ZTS"] + +# CHOOSE_AMOUNT is a function that takes a price and returns +# the number of shares we want to buy at that price. It is not +# configurable, but you can change it if you want. +def CHOOSE_AMOUNT(value): + for key in SHARES_BY_PRICE: + if value <= key: + return SHARES_BY_PRICE[key] + return 1 diff --git a/helpers/amount.py b/helpers/amount.py new file mode 100644 index 0000000..c145d4a --- /dev/null +++ b/helpers/amount.py @@ -0,0 +1,43 @@ +class COLORS: + BLUE = "\033[94m" + END = "\033[0m" + RED = "\033[91m" + YELLOW = "\033[93m" + GREEN = "\033[92m" + + +def main(): + shares_by_price = {} + + # Ask the user to enter their preferred stock prices and corresponding shares to buy + while True: + try: + price = int( + # print blue text + input( + f"""{COLORS.BLUE}Enter a stock price for a new rule (or -1 to stop). +For example, entering 1000 will allow you to set the amount of shares to +buy when the stock price is $1000 or less:{COLORS.END} """ + ) + ) + if price == -1: + break + shares = int(input(f"{COLORS.YELLOW}Enter the number of shares to buy for this rule:{COLORS.END} ")) + shares_by_price[price] = shares + except ValueError: + print("Invalid input, please try again.") + + with open('../config.py', 'r') as f: + lines = f.readlines() + with open("../config.py", "w") as f: + for line in lines: + if line.startswith("SHARES_BY_PRICE"): + f.write(f"SHARES_BY_PRICE = {shares_by_price}\n") + else: + f.write(line) + + print(f"{COLORS.GREEN}Successfully updated config.py!{COLORS.END}") + + +if __name__ == "__main__": + main() diff --git a/helpers/auth.py b/helpers/auth.py new file mode 100644 index 0000000..c2fba8f --- /dev/null +++ b/helpers/auth.py @@ -0,0 +1,36 @@ +class COLORS: + BLUE = "\033[94m" + END = "\033[0m" + RED = "\033[91m" + YELLOW = "\033[93m" + GREEN = "\033[92m" + + +def main(): + try: + public = str(input(f"{COLORS.BLUE}Enter your Alpaca API Key ID:{COLORS.END} ")) + private = str(input(f"{COLORS.BLUE}Enter your Alpaca API Secret Key:{COLORS.END} ")) + paper = str(input(f"{COLORS.BLUE}Are you using a paper account? (y/n):{COLORS.END} ")) + except ValueError: + print("Invalid input, please try again.") + + with open("../config.py", "r") as f: + lines = f.readlines() + # Generate the dictionary and save it to the config file + with open("../config.py", "w") as f: + for line in lines: + if line.startswith("ALPACA_PUBLIC_KEY"): + f.write(f"ALPACA_PUBLIC_KEY = '{str(public)}'\n") + elif line.startswith("ALPACA_SECRET_KEY"): + f.write(f"ALPACA_SECRET_KEY = '{str(private)}'\n") + elif line.startswith("PAPER"): + boolean = paper.lower() == "y" or paper.lower() == "yes" + f.write(f"PAPER = {boolean}\n") + else: + f.write(line) + + print(f"{COLORS.GREEN}Successfully updated config.py!{COLORS.END}") + + +if __name__ == "__main__": + main() diff --git a/helpers/tickers.py b/helpers/tickers.py new file mode 100644 index 0000000..aa2e4b6 --- /dev/null +++ b/helpers/tickers.py @@ -0,0 +1,33 @@ +class COLORS: + BLUE = "\033[94m" + END = "\033[0m" + RED = "\033[91m" + YELLOW = "\033[93m" + GREEN = "\033[92m" + + +def main(): + tickers = [] + + while True: + try: + ticker = str(input(f"{COLORS.BLUE}Enter a ticker you would like to trade (or -1 to stop):{COLORS.END} ")) + if ticker == '-1': break + tickers.append(ticker) + except ValueError: + print("Invalid input, please try again.") + + with open("../config.py", "r") as f: + lines = f.readlines() + with open("../config.py", "w") as f: + for line in lines: + if line.startswith("TRADE_TICKERS"): + f.write(f"TRADE_TICKERS = {tickers}\n") + else: + f.write(line) + + print(f"{COLORS.GREEN}Successfully updated config.py!{COLORS.END}") + + +if __name__ == "__main__": + main() diff --git a/images/amount-example.png b/images/amount-example.png new file mode 100644 index 0000000000000000000000000000000000000000..f945e0fde9cfb7565b185ae8c45914e908f0d258 GIT binary patch literal 39520 zcmd>_oG;<}sH+ywr$ySsZRZvZF#alP}|9V}8Pp_KXS@b*vpjo{Ok{abt#Dg5pq z1)mk5q`t}gdkND4JvKH2#MkFOXfT*!>_ih9e+FN@Pg{rFJ2yF5 z*#hTq`d~G6`{k3o4T-J`k2Xf_@p-2fxNfwP$Z*vZkC24`x@7cV89GYThxf$0TP{bu z{w}i3huGIOh=n5tXxq#43-3?7V|c9i72(<;>Pm9Cf#3Q*3k2xOvv;4cHs?8{}fF+Wj)$>t2HtSrgFzl_We;c2VYseE3|-M8tRE@6CPaAm6gxur=I=a z&kil6Eh^fdY8Brqb@F8SKlqNq2$|Mv#`MV4FUgHEyJJ_ArnO2hcr6E(i;Zs5YfVc1 z{m5$dpd5YCN#kuHLAV6(UZX3|Z9Y-^;2gzKn`YkF11pxW9`tv|i%>=G`wXuv_A>P1d+`=r#+Kk?4;p}&48x1g zFijVsI&X$zeovUA9t+QqoHKL{9Pjse+H)Q@A!pEzS8-+Hhg2|E@jLlAD&28Bg4Z2T4jeN9Io5@h~{XA@fDOLg5J1HQDV^u|nghO8CK+ zyW^-Z2fnC3GXNXv3bj=`UP7Z>0U^^p4#W5q;n6=gzHCy=$1aal1;TNYFY(LcVr8C2 zakXfZyfuBv!tBf?^S$(woBL9iddr$d>tokK5djyFgT z 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 IkkI%2UpLgqEdT%j literal 0 HcmV?d00001 diff --git a/images/auth-example.png b/images/auth-example.png new file mode 100644 index 0000000000000000000000000000000000000000..61f6b67d0fe5fb4102ca5e5dd9775ff38abbecf0 GIT binary patch literal 8051 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 aN-2T(o>J+-^S=w_F!ItWQXomw(EkI&)WszL literal 0 HcmV?d00001 diff --git a/images/tickers-example.png b/images/tickers-example.png new file mode 100644 index 0000000000000000000000000000000000000000..0bbca921db320084aaa7713d78c12ecd71089f85 GIT binary patch literal 10591 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 E2WHL7c>n+a literal 0 HcmV?d00001