Skip to main content

Track the performance of your portfolio of equities vs an index

Project description

portfolio-tracker

Track an equity portfolio's performance against a major index.

Refer to Sample Code at the bottom for a template on how to use this package.

0. Initialising

The following packages are required: yahoofinancials, pandas, matplotlib, datetime, numpy

Enter the following imports at the top of the file:

import pyportfoliotracker
from pyportfoliotracker import Fund

1. Setting up your fund

Set up your fund using the following parameters:

fund = Fund(cash, index_ticker, date_of_creation, strategy, risk_free_rate_percentage):

where

  • cash = cash value of the fund
  • index_ticker = the ticker (based on Yahoo Finance) of the benchmark index
  • date_of_creation = date of creation of the fund
  • strategy (optional) = strategy used for the index benchmark. The default strategy is lump_sum. The other option is dca10, which represents Dollar Cost Averaging using 10% of cash value per day.
  • risk_free_rate_percentage (optional) = the risk free rates, in percentage (e.g. enter 2.5 for 2.5%), that will be used to calculate alpha, beta and Sharpe ratio. The default is set to 2.5%.

2. Purchasing/Selling the relevant equities

Buying

Using the .buy_equity() method, purchase the relevant equities that are present in your fund.

fund.buy_equity(ticker, date_of_purchase, qty, price)

where

  • ticker = the ticker (based on Yahoo Finance) of the equity
  • date_of_purchase = date of purchase of the equity
  • qty = quantity of equity purchased
  • price = price at which equity was purchased

Selling

Using the .sell_equity() method, purchase the relevant equities that are present in your fund.

fund.sell_equity(ticker, date_of_sale, qty, price)

where

  • ticker = the ticker (based on Yahoo Finance) of the equity
  • date_of_sale = date of sale of the equity
  • qty = quantity of equity purchased
  • price = price at which equity was purchased

3. Selecting your desired output

There are many types of output that can be useful to you:

1a. DataFrame of the fund's historical paper value vs Index : obtained by calling print(fund.all_assets_normalised)

Note that simply calling the attribute fund.all_assets_normalised returns you the DataFrame that can be integrated into other packages and use cases.

1b. Exporting the DataFrame mentioned in 1a into a CSV : obtained by calling fund.export_to_csv(output_path)

CSV Output of Fund Performance

Note that the variable output_path in .export_to_csv is set to 'data/historical-paper-values.csv' by default.

2a. Graphical comparison of fund vs index performance : obtained by calling fund.plot_fund_performance()

Graphical Output of Fund Performance

2b. Exporting the Graph mentioned in 2a into a PNG : obtained by calling fund.export_graph(output_path)

Note that the variable output_path in .export_graph is set to 'data/fund-graph-plot.png' by default.

3a. DataFrame of the fund's key financial metrics e.g. alpha, beta, Sharpe's Ratio : obtained by calling print(fund.fund_metrics_table())

Fund Metrics Table

Note that simply calling the method fund.fund_metrics_table() returns you the DataFrame that can be integrated into other packages and use cases.

3b. Exporting the DataFrame mentioned in 3a into a CSV : obtained by calling fund.export_fund_metrics(output_path)

Note that the variable output_path in .export_fund_metrics is set to 'data/fund-metrics.csv' by default.

Sample Code:

"""
Imports
"""
import pyportfoliotracker
from pyportfoliotracker import Fund

"""
Set up your fund
"""
date = '2020-05-18'
fund = Fund(2375706,'^FTSE',date,strategy='dca10', risk_free_rate_percentage=0.65)

"""
Buy the relevant equities
"""
fund.buy_equity('GSK.L',date,397,1670.20)
fund.buy_equity('SGE.L',date,802,653)
fund.buy_equity('NG.L',date,394,922.2)
fund.buy_equity('WHR.L',date,3345,100.5)
fund.buy_equity('SSE.L',date,161,1242.50)
fund.buy_equity('RHIM.L',date,69,2306.00)
fund.buy_equity('ICP.L',date,64,1109.00)
fund.buy_equity('ASC.L',date,21,2768.8)

"""
Sell the relevant equities
"""
fund.sell_equity('GSK.L','2020-05-22',397,1670.20)

"""
Call methods based on output desired
"""
print(fund.all_assets_normalised.head()) #Returns a DataFrame of the historical performance of the fund
fund.plot_fund_performance() #Returns a graphical plot of the fund vs index
print(fund.fund_metrics_table()) #Returns a DataFrame of key fund metrics (alpha, beta, Sharpe's ratio)
fund.export_to_csv() #Exports the DataFrame of historical performance into a CSV
fund.export_graph() #Exports the graphical plot of the fund vs index into a PNG
fund.export_fund_metrics() #Exports the DataFrame of key fund metrics into a CSV

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

pyportfoliotracker-0.1.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyportfoliotracker-0.1.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file pyportfoliotracker-0.1.0.tar.gz.

File metadata

  • Download URL: pyportfoliotracker-0.1.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for pyportfoliotracker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1c16a29c4dd7624d38783fbb38724dbdc3ac9b788f338d1e55f1b5a4f8c0bcc9
MD5 9c70d090fbc73d3969e11803370edb3f
BLAKE2b-256 873acad9cf959df1b33a5b6a84ec59f5fadff24de279a2c829bfa95178a505dd

See more details on using hashes here.

File details

Details for the file pyportfoliotracker-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyportfoliotracker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.1.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for pyportfoliotracker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7570912149219ff790f29252d0a211754d6f7e715209d4af6e82c8219abd3dcc
MD5 6b1add847e9377682a6711a4f1b31f9b
BLAKE2b-256 be08d53e305170dc7ad6a1114ee8d2dcb85011b376e9e087db24c7188d06059a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page