From 927c5eb9ded78debd87ef0fe1d270d5126816165 Mon Sep 17 00:00:00 2001 From: Felix Martin Date: Mon, 7 Sep 2020 21:24:45 -0400 Subject: [PATCH] Finish project 2. --- README.md | 4 +- optimize_something/optimization.py | 88 +++++++++++++++++++++-------- optimize_something/plot.png | Bin 0 -> 52220 bytes optimize_something/readme.md | 7 +++ 4 files changed, 76 insertions(+), 23 deletions(-) create mode 100644 optimize_something/plot.png create mode 100644 optimize_something/readme.md diff --git a/README.md b/README.md index 8a02ac6..08f2fb2 100644 --- a/README.md +++ b/README.md @@ -36,5 +36,7 @@ unzip -n zips/19fall_optimize_something.zip -d ./ # Reports - [Report 1](./martingale/martingale.md) -- [Report 2](#) +- [Report 2](./optimize_something/readme.md) +- [Report 3](#) + diff --git a/optimize_something/optimization.py b/optimize_something/optimization.py index 461df53..309fab6 100644 --- a/optimize_something/optimization.py +++ b/optimize_something/optimization.py @@ -30,8 +30,42 @@ import pandas as pd import matplotlib.pyplot as plt import numpy as np import datetime as dt +import math +import scipy.optimize as opt from util import get_data, plot_data + +def get_sharpe_ratio(daily_returns): + SR = daily_returns.mean() / daily_returns.std() + k = math.sqrt(252) # daily sampling + SR = k * SR + return SR + + +def get_daily_returns(df): + daily_returns = df.copy() + daily_returns[1:] = (df[1:] / df[:-1].values) - 1 + daily_returns = daily_returns.iloc[1:] + return daily_returns + + +def get_daily_portfolio_value(prices, allocs): + normed = prices / prices.iloc[0, :] + alloced = normed * allocs + port_values = alloced.sum(axis=1) + return port_values + + +def calculate_stats(prices, allocs): + port_value = get_daily_portfolio_value(prices, allocs) + cum_ret = (port_value.iloc[-1] / port_value.iloc[0]) - 1 + daily_returns = get_daily_returns(port_value) + avg_daily_ret = daily_returns.mean() + std_daily_ret = daily_returns.std() + sharpe_ratio = get_sharpe_ratio(daily_returns) + return [cum_ret, avg_daily_ret, std_daily_ret, sharpe_ratio] + + # This is the function that will be tested by the autograder # The student must update this code to properly implement the functionality def optimize_portfolio(sd=dt.datetime(2008,1,1), ed=dt.datetime(2009,1,1), \ @@ -43,41 +77,52 @@ def optimize_portfolio(sd=dt.datetime(2008,1,1), ed=dt.datetime(2009,1,1), \ prices = prices_all[syms] # only portfolio symbols prices_SPY = prices_all['SPY'] # only SPY, for comparison later - plot_data(prices_all) + def calc_sr(allocs): + port_value = get_daily_portfolio_value(prices, allocs) + cum_ret = (port_value.iloc[-1] / port_value.iloc[0]) - 1 + daily_returns = get_daily_returns(port_value) + sharpe_ratio = get_sharpe_ratio(daily_returns) + return sharpe_ratio * -1 # find the allocations for the optimal portfolio - # note that the values here ARE NOT meant to be correct for a test case - allocs = np.asarray([0.2, 0.2, 0.3, 0.3]) # add code here to find the allocations - cr, adr, sddr, sr = [0.25, 0.001, 0.0005, 2.1] # add code here to compute stats - - # Get daily portfolio value - port_val = prices_SPY # add code here to compute daily portfolio values + len_syms = len(syms) + allocs = np.asarray([1 / len_syms for _ in range(len_syms)]) + bounds = [(0, 1) for _ in range(len_syms)] + consts = ({'type': 'eq', 'fun': lambda inputs: 1.0 - np.sum(inputs)}) + result = opt.minimize(calc_sr, x0=allocs, bounds=bounds, constraints=consts) + print(result) + allocs = result.x + cr, adr, sddr, sr = calculate_stats(prices, allocs) # Compare daily portfolio value with SPY using a normalized plot if gen_plot: - # add code to plot here - df_temp = pd.concat([port_val, prices_SPY], keys=['Portfolio', 'SPY'], axis=1) - pass + port_val = get_daily_portfolio_value(prices, allocs) + prices_SPY_normed = prices_SPY / prices_SPY.iloc[0] + df_temp = pd.concat([port_val, prices_SPY_normed], keys=['Portfolio', 'SPY'], axis=1) + ax = df_temp.plot(title="SPY and Portfolio Normed", fontsize=12) + plt.savefig('plot.png') + plt.show() return allocs, cr, adr, sddr, sr -def test_code(): - # This function WILL NOT be called by the auto grader - # Do not assume that any variables defined here are available to your function/code - # It is only here to help you set up and test your code +def report(): + start_date = dt.datetime(2008,6,1) + end_date = dt.datetime(2009,6,1) + symbols = ['IBM', 'X', 'GLD', 'JPM'] + allocations, cr, adr, sddr, sr = optimize_portfolio(sd = start_date, ed = end_date,\ + syms = symbols, gen_plot = True) + + +def test_code(): # Define input parameters # Note that ALL of these values will be set to different values by # the autograder! - start_date = dt.datetime(2009,1,1) end_date = dt.datetime(2010,1,1) symbols = ['GOOG', 'AAPL', 'GLD', 'XOM', 'IBM'] - - # Assess the portfolio allocations, cr, adr, sddr, sr = optimize_portfolio(sd = start_date, ed = end_date,\ - syms = symbols, \ - gen_plot = False) + syms = symbols, gen_plot = True) # Print statistics print(f"Start Date: {start_date}") @@ -90,6 +135,5 @@ def test_code(): print(f"Cumulative Return: {cr}") if __name__ == "__main__": - # This code WILL NOT be called by the auto grader - # Do not assume that it will be called - test_code() + # test_code() + report() diff --git a/optimize_something/plot.png b/optimize_something/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c9e1e1f60fd6090dab41f2a15aa9e198247ba4 GIT binary patch literal 52220 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
*6y(mIw%0Fb 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