Financial Data Science Financial Performance Analysis: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 41: Line 41:
ax.set_ylabel("amount")
ax.set_ylabel("amount")
ax.yaxis.set_major_formatter(mt.FormatStrFormatter('% 1.2f'))  
ax.yaxis.set_major_formatter(mt.FormatStrFormatter('% 1.2f'))  
ax.plot(fidelity_self)
ax.plot(fidelity_self, lw=0.5)
ax.plot(fidelity_self)
ax.plot(fidelity_managed, lw=0.5)
plt.show()
plt.show()
</syntaxhighlight>
</syntaxhighlight>

Revision as of 01:14, 21 October 2023

Internal

Overview

import math
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ptick
from fredapi import Fred

# load the DataFrame
df = pd.read_csv("./finances.csv", parse_dates=["Date"])

# make it a time series DataFrame
df = df.set_index('Date')

# declare the function that converts the dollar amount
def dollar_to_int(s):
    if isinstance(s, str):
        return int(s[1:].replace(',',''))
    elif math.isnan(s):
        return 0
    else:
        return -1

# extract a specific time series and plot it
fidelity_self = df['Fidelity Self'].apply(dollar_to_int)
fidelity_self = fidelity_self[fidelity_self != 0]
fidelity_managed = df['Fidelity Managed'].apply(dollar_to_int)
fidelity_managed = fidelity_managed[fidelity_managed != 0]

# get the SP&500
fred = Fred(api_key='...')
sp500 = fred.get_series(series_id="SP500")

# graph
fig, ax = plt.subplots()
fig.autofmt_xdate()
ax.set_ylabel("amount")
ax.yaxis.set_major_formatter(mt.FormatStrFormatter('% 1.2f')) 
ax.plot(fidelity_self, lw=0.5)
ax.plot(fidelity_managed, lw=0.5)
plt.show()