Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import numpy as np
- class StockPrices:
- # param prices dict of string to list. A dictionary containing the tickers of the stocks, and each tickers daily prices.
- # returns list of strings. A list containing the tickers of the two most correlated stocks.
- @staticmethod
- def most_corr(prices):
- return None
- #For example, with the parameters below the function should return ['FB', 'MSFT'].
- prices = {
- 'GOOG' : [
- 742.66, 738.40, 738.22, 741.16,
- 739.98, 747.28, 746.22, 741.80,
- 745.33, 741.29, 742.83, 750.50
- ],
- 'FB' : [
- 108.40, 107.92, 109.64, 112.22,
- 109.57, 113.82, 114.03, 112.24,
- 114.68, 112.92, 113.28, 115.40
- ],
- 'MSFT' : [
- 55.40, 54.63, 54.98, 55.88,
- 54.12, 59.16, 58.14, 55.97,
- 61.20, 57.14, 56.62, 59.25
- ],
- 'AAPL' : [
- 106.00, 104.66, 104.87, 105.69,
- 104.22, 110.16, 109.84, 108.86,
- 110.14, 107.66, 108.08, 109.90
- ]
- }
- df = pd.DataFrame.from_dict(prices)
- def get_redundant_pairs(df):
- pairs_to_drop = set()
- cols = df.columns
- for i in range(0, df.shape[1]):
- for j in range(0, i+1):
- pairs_to_drop.add((cols[i], cols[j]))
- return pairs_to_drop
- def get_top_abs_correlations(df, n=12):
- au_corr = df.corr().abs().unstack()
- labels_to_drop = get_redundant_pairs(df)
- au_corr = au_corr.drop(labels=labels_to_drop).sort_values(ascending=False)
- return au_corr[0:n]
- print(get_top_abs_correlations(df, 1))
Add Comment
Please, Sign In to add comment