Beispiel #1
0
def load_data(settings):
    data = {}

    # general stock parameters
    expense_ratios, leverage_factors, underlying_index, dividend_yield = define_stock_parameters(
    )
    data['expense_ratios'] = expense_ratios
    data['leverage_factors'] = leverage_factors
    data['underlying_index'] = underlying_index
    data['dividend_yield'] = dividend_yield

    # define the dates axis that will be mutual for all the portfolio ingredients
    date_start = settings['date_start']
    date_end = settings['date_end']
    dates, _ = load_stock_data(
        'SP500', date_start,
        date_end)  # SP500 index has the "oldest" trading dates data
    inds_years, label_years = get_year_labels(dates)
    data['dates'] = dates
    data['inds_years'] = inds_years
    data['label_years'] = label_years

    # load libor_rate (relevant to leveraged etf sim)
    libor_rate = get_libor_rate(dates)
    data['libor_rate'] = libor_rate

    # check that portfolio fractions are all positive (and remove zeros if exist)
    stock_names = settings['ideal_portfolio_fractions'].keys()
    zero_stocks = []
    for stock_name in stock_names:
        if settings['ideal_portfolio_fractions'][stock_name] < 0:
            raise ValueError('negative portfolio fraction for ' +
                             str(stock_name))
        elif settings['ideal_portfolio_fractions'][stock_name] == 0:
            zero_stocks += [stock_name]
    for stock_name in zero_stocks:
        settings['ideal_portfolio_fractions'].pop(stock_name)

    # stocks to be a part of the portfolio
    for stock_name in stock_names:
        index_name = underlying_index[stock_name]
        _, stock_values = load_stock_data(index_name,
                                          date_start,
                                          date_end,
                                          dividend_yield=dividend_yield,
                                          settings=settings)
        data[stock_name] = stock_values

    return settings, data
Beispiel #2
0
# matplotlib.use('TkAgg')

plt.rcParams.update({'font.size': 12})
matplotlib.rcParams.update({'axes.prop_cycle': cycler(color='bgrcmyk')})

plt.close('all')

# date_start = '1980-01-01'
date_start = '1986-01-01'
date_end = '2020-09-30'

index_name_list = []
index_name_list += ['SP500']
index_name_list += ['NDX100']

for index_name in index_name_list:
    dates, _ = load_stock_data(index_name, date_start, date_end)
    inds_years, label_years = get_year_labels(dates)
    dividends = get_dividend_yield(dates, index_name=index_name)

    # plots
    plt.figure(1)
    plt.plot(dividends, label=index_name, linewidth=2)
    plt.xticks(inds_years, label_years, rotation='vertical')
    plt.ylabel('dividend yield %')
    plt.title('Dividends Data')
    plt.legend()
    plt.grid(True)
    plt.tight_layout()
# plot_data = False
plot_data = True

plot_close_adjusted = False
# plot_close_adjusted = True

settings = define_default_settings()
expense_ratios, leverage_factors, underlying_index, dividend_yield = define_stock_parameters(
)

if plot_data:
    for stock_name in stock_name_list:
        dates, index_values = load_stock_data(stock_name,
                                              date_start,
                                              date_end,
                                              dividend_yield=dividend_yield,
                                              settings=settings)
        if plot_close_adjusted:
            _, index_adjusted_values = load_stock_data(stock_name,
                                                       date_start,
                                                       date_end,
                                                       close_type='Adj Close')
        inds_years, label_years = get_year_labels(dates)

        # plots
        plt.figure(1)
        plt.plot(index_values, label=stock_name, linewidth=1)
        if plot_close_adjusted and stock_name not in [
                'SP500', 'SP500TR', 'NDX100', 'NDX100TR'
        ]:
import matplotlib
from data_functions import load_stock_data, get_libor_rate
from aux_functions import get_year_labels
from cycler import cycler

import matplotlib.pyplot as plt

# matplotlib.use('TkAgg')

plt.rcParams.update({'font.size': 12})
matplotlib.rcParams.update({'axes.prop_cycle': cycler(color='bgrcmyk')})

plt.close('all')

# date_start = '1980-01-01'
date_start = '1986-01-01'
date_end = '2020-09-30'

dates, _ = load_stock_data('SP500', date_start, date_end)
inds_years, label_years = get_year_labels(dates)
libor_rate = get_libor_rate(dates)

# plots
plt.figure(1)
plt.plot(libor_rate, linewidth=2)
plt.xticks(inds_years, label_years, rotation='vertical')
plt.ylabel('libor rate %')
plt.title('LIBOR 1-month loan rate')
plt.grid(True)
plt.tight_layout()