Package: pyportfoliotracker
portfolio-trackerTrack 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. InitialisingThe following packages are required:yahoofinancials,pandas,matplotlib,datetime,numpyEnter the following imports at the top of the file:import pyportfoliotracker
from pyportfoliotracker import Fund1. Setting up your fundSet up your fund using the following parameters:fund = Fund(cash, index_ticker, date_of_creation, strategy, risk_free_rate_percentage):wherecash = cash value of the fundindex_ticker = the ticker (based on Yahoo Finance) of the benchmark indexdate_of_creation = date of creation of the fundstrategy (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 equitiesBuyingUsing the .buy_equity() method, purchase the relevant equities that are present in your fund.fund.buy_equity(ticker, date_of_purchase, qty, price)whereticker = the ticker (based on Yahoo Finance) of the equitydate_of_purchase = date of purchase of the equityqty = quantity of equity purchasedprice = price at which equity was purchasedSellingUsing the .sell_equity() method, purchase the relevant equities that are present in your fund.fund.sell_equity(ticker, date_of_sale, qty, price)whereticker = the ticker (based on Yahoo Finance) of the equitydate_of_sale = date of sale of the equityqty = quantity of equity purchasedprice = price at which equity was purchased3. Selecting your desired outputThere are many types of output that can be useful to you:1a. DataFrame of the fund's historical paper value vs Index: obtained by callingprint(fund.all_assets_normalised)Note that simply calling the attributefund.all_assets_normalisedreturns 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 callingfund.export_to_csv(output_path)Note that the variableoutput_pathin.export_to_csvis set to 'data/historical-paper-values.csv' by default.2a. Graphical comparison of fund vs index performance: obtained by callingfund.plot_fund_performance()2b. Exporting the Graph mentioned in 2a into a PNG: obtained by callingfund.export_graph(output_path)Note that the variableoutput_pathin.export_graphis 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 callingprint(fund.fund_metrics_table())Note that simply calling the methodfund.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 callingfund.export_fund_metrics(output_path)Note that the variableoutput_pathin.export_fund_metricsis 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