Skip to main content

ReplicateETF

Disclaimer:

There can be significant tax, financial, and legal consequences related to this repository and its use. Signficant losses can occur. Trading equities is always dangerous and should be approached with extreme caution. By using this repository, you accept all liability or consequences related to the code provided here.

Context:

This repository allows users to purchase the underlying stocks of an ETF.

This repository uses Alpaca API, but the code can be reused for other trading platform like IEX. To directly use the package defined here, please setup an Alpaca API account.

Export Alpaca API Keys and Base URL

This example showcases exporting the basic API keys needed to execute some of the available functions. The BASE_URL defined below corresponds to the paper trading for testing algorithms. There is an alternative BASE_URL for live trading.

Example:

export APCA_API_KEY_ID=<api key>
export APCA_API_SECRET_KEY=<secret key>
export APCA_API_BASE_URL=https://paper-api.alpaca.markets

Here is some more documentation from Alpaca on how to setup API Keys.

Download the Package:

pip install -i https://test.pypi.org/simple/ replicateETF

Import package:

from replicateETF.scrapeETF import ETFHandler

Example use:

from replicateETF.scrapeETF import ETFHandler
from alpaca_trade_api.rest import REST

myObj = ETFHandler()
symbol = "VOO"
etfAssetDict = myObj.getETFTable(symbol)

# identify the mimimum amount of purchasing power to build ETF
minimumDollars = myObj.getMimimumDollars(symbol)

# determine whether available cash enough to build ETF
if myObj.getAvailableCash() < minimumDollars:
    print ("Insufficient fund to build ETF")
else:
    investmentAmount = -1
    while investmentAmount < minimumDollars:
        investmentAmount = float(input(f"Based on the ETF, please enter a value greater than {minimumDollars} to invest: "))
    #build Alpaca client
    api = REST()
    for key in etfAssetDict.keys():
        equity = etfAssetDict[key]
        percent = equity['percent']/100
        # TODO - should be a separate function to enable retry logic
        try:
            orderResponse=api.submit_order(symbol=key, 
                            notional=investmentAmount*percent, 
                            side="buy",
                            type="market")
            print(orderResponse)
        except Exception as e:
            print(e)

This example case is listed as test.py in the repository.

Install dependencies (these should automatically be download but just in case):

  • beautifulsoup4>=4.11.1
  • alpaca-trade-api>=2.0.0
  • selenium>=4.1.3

Release files for replicateETF 0.0.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for replicateETF 0.0.16
File Size Uploaded
replicateETF-0.0.16.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for replicateETF 0.0.16
File Interpreter ABI Platform
replicateETF-0.0.16-py3-none-any.whl Python 3 none any Details

Total release size: 11.0 kB

Release files / replicateETF-0.0.16.tar.gz

Download URL replicateETF-0.0.16.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e23b1f1ea59e4cd98bfef3e3cb17b551166fc301113a829efb17e7337314f9cc
BLAKE2b-256 checksum
How to use checksums
b98a78f43cef241bf97da206dfad43fd818a422cf894a209c52b45b6cd8be8a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / replicateETF-0.0.16-py3-none-any.whl

Download URL replicateETF-0.0.16-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63a1f4eb208a21362446e45109d25b0e8b88bc14e2d1a6a28074740bf0c00c9d
BLAKE2b-256 checksum
How to use checksums
7b8cb877a4ff5d6d2f913993ae0970e4b2057c157b1e68aff1f7ea1f059a0352
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release history Release notifications | RSS feed

This release

0.0.16 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page