コード例 #1
0
ファイル: portfolio.py プロジェクト: luxmeter/portfolio
def stock_price_eur(symbol):
    """Returns current price of a stock in EUR.

    Args:
        symbol (str): Identifying symbol of the stock.

    Returns:
        numpy.float64: Current stock price in EUR.
    """
    stock = pdr.get_quote_yahoo(symbol)
    currency = stock.currency.values[0]
    price = pdr.get_quote_yahoo(f"{currency.upper()}EUR=X").price.values[0]
    ratio = price if currency.upper() != "GBP" else price / 100
    return stock.price.values[0] * ratio
コード例 #2
0
ファイル: Metrics.py プロジェクト: johnsoong216/pymarkowitz
 def market_cap_data(assets):
     """
     Helper function to get market cap information from yahoo finance
     :param assets: List[str], ticker symbols
     :return: np.ndarray
     """
     return data.get_quote_yahoo(assets)['marketCap'].values
コード例 #3
0
def track(watchlist):
    start_time = time()
    while True:
        print(pdr.get_quote_yahoo(watchlist)['price'])
        elapsed = time() - start_time
        if elapsed >= 10:
            prompt = input("Would you like to continue? y/n: ")
            if prompt == 'n':
                break
            start_time = time()
            elapsed = 0
        sleep(1)
コード例 #4
0
ファイル: routes.py プロジェクト: Chauwaj/CSC330-Scholes
def home():



  import pandas_datareader as pdr
  import csv
  import pandas
  import json
  from pandas_datareader.data import Options
  from datetime import date
  from sqlalchemy import create_engine

  stocks = ['AAPL','GOOGL', 'AMZN', 'FB', 'SSNLF', 'MSFT', 'SNE', 'IBM', 'NTDOY', 'ORCL', 'VMW', 'INTC', 'HPQ', 'DVMT',
  'CSCO', 'ADBE', 'SAP', 'LNVGY', 'RHT', 'SYMC', 'TWTR', 'ATNY', 'ACTS', 'ATVI', 'IOTS', 'ADRO', 'AMD', 'ADVS', 'ZBRA',
  'XPLR', 'XBIT', 'WIX', 'WBMD', 'VNOM', 'VIA', 'VECO', 'UPLD', 'UBNT', 'UFPT', 'TYME', 'TRIV', 'TRIP', 'TGA', 'TSI',
  'TESS', 'AIR', 'ATEN', 'AQN', 'DDD', 'WUBA', 'ASX', 'A', 'AYX', 'AMBR', 'AEE', 'BHE', 'BIO', 'CPL', 'CTS', 'CMI', 'DGI',
  'D', 'HEI', 'ASUR', 'AVID', 'EPAY', 'CBAK', 'CPSH', 'CYAN', 'DBVT', 'DELT', 'EDGW', 'XELA', 'FALC', 'SVVC', 'FBIO', 'GEOS',
  'QQQC', 'GPRO', 'MRVL', 'MZOR', 'BKFS', 'BA', 'CAJ', 'CRY', 'CUB', 'DGI', 'GME', 'GM', 'GNE', 'ASR', 'PAC', 'MDT',
  'MTD', 'MIXT', 'MULE', 'NC', 'NPTN', 'NXPI', 'NSTG', 'UEPS']

  stock_df = pdr.get_quote_yahoo(stocks)


  #s = Options('AAPL')._get_data_in_date_range(date.today())
  #print s
  stock_df.index.name = "StockSymbol"

  stock_df.to_csv("stock.csv")

  company_stock = pandas.read_csv("stock.csv")
  companies = pandas.read_csv("companies.csv")

  merged = company_stock.merge(companies, on = 'StockSymbol')
  merged['Amount'] = merged['last']*(merged['NumberofStocks']).astype(float)
  merged.columns = map(str.lower, merged.columns)
  merged.rename(columns = {'change_pct':'changepct','last':'lastprice','amount':'totalpricestocks','short_ratio' : 'shortratio'}, inplace = True)
  merged.to_csv('new_stock.csv', index=False)



  df = pd.read_csv('new_stock.csv')

  engine = create_engine('postgresql:///finance')
  df.to_sql('j', engine)

  return render_template("home.html")
コード例 #5
0
def getSP500Details(start, end):
    sp500DF = pd.DataFrame()
    #sp500ComponentDf = pd.read_csv(sp500MemberListFile)
    sp500ComponentDf = pd.read_csv(sp500MemberListFundamentalFile)
    sp500SymbolList = sp500ComponentDf['symbol'].tolist()

    successCount = 0
    for symbol in sp500SymbolList:
        try:
            tickerQuote = dr.get_quote_yahoo(symbol)
            getDailyPrice([symbol], start, end).to_pickle('{}{}.pkl'.format(symbolPriceDataLocation, symbol))
            sp500DF = sp500DF.append(tickerQuote, sort=False)
            successCount += 1
        except Exception as e:
            print('Error {} for symbol {}'.format(e, symbol))

    print('Successfully retrieved data for {} stocks'.format(successCount))
    print(sp500DF)
    sp500DF.to_pickle(sp500PickleLocation)
コード例 #6
0
ファイル: yahoo_api.py プロジェクト: clu2/MIS3640-1
# conda install -c pandas-datareader
import pandas_datareader as pdr
from time import time, sleep

start_time = time()
while True:
    print(pdr.get_quote_yahoo('GOOG')['price'])
    elapsed = time() - start_time
    print(elapsed)
    if elapsed >= 10:
        prompt = input("Would you like to continue? y/n: ")
        if prompt == 'n':
            break
        start_time = time()
        elapsed = 0
    sleep(1)
コード例 #7
0
#     x = str(symbol) + '.T'
# #     print(x)
#     symbols.append(x)
for symbol in df['symbol']:
    symbols.append(symbol)

for symbol in symbols:
    # 150日間で調べる
    start = dt.datetime.now() - dt.timedelta(days=150)
    end = dt.datetime.now()
    count += 1
    print(count)

    try:
        symbol_df = yf.download(symbol, start, end, interval='1d')
        market_capdata = web.get_quote_yahoo(symbol)['marketCap']
        market_cap = int(str(market_capdata).split()[1])
        print('時価総額は' + str(market_cap))

    except:
        print('時価総額なし' + str(symbol))

    if symbol_df.empty:
        continue

    print(symbol)

    # 標準偏差を計算
    try:
        # high in the past 81 days
        symbol_df['Highest81'] = symbol_df['Adj Close'].rolling(
コード例 #8
0
Part 2
Created on Mon Mar 18 14:20:27 2019

@author: mjmacarty
"""
import pandas as pd
import pandas_datareader as pdr

from time import sleep
# get prices from many symbols

symbols = ['AMZN', 'GOOG', 'NFLX', 'FB', 'GLD', 'SPY']


# sort list, get prices
def get_prices(symbols):
	symbols.sort()
    return pdr.get_quote_yahoo(symbols)['price']

# program entry point --> gets prices every 5 seconds until broken	
def main():
    while True:
        
        print(get_prices(symbols))
        print("CNTL + C to quit")
        sleep(5)


		
if __name__ == "__main__":
    main()    
コード例 #9
0
ファイル: stock.py プロジェクト: tarunj096/stock-tracker
def prices(companies):
    companies.sort()
    return pdr.get_quote_yahoo(companies)['price']
コード例 #10
0
                money.append(x)

                #for market capital
                y = 0
                for j in range(len(session_state.stock_list)):
                    y = y + (no_shares_cap[j] *
                             price[session_state.stock_list[j]].iloc[0])
                money_cap.append(y)

            curr_value = money[len(money) - 1]
            #st.write("Curr val",curr_value)
            curr_value_cap = money_cap[len(money_cap) - 1]

            # getting weights for market capital ratios
            market_cap_weights = np.array(
                web.get_quote_yahoo(session_state.stock_list, curr_date,
                                    curr_date)['marketCap'])
            market_cap_weights = market_cap_weights / np.sum(
                market_cap_weights)

            for j in range(len(session_state.stock_list)):
                money_for_share = curr_value * optimum_weights[j]
                no_shares[j] = money_for_share / price[
                    session_state.stock_list[j]].iloc[0]
                #for market capital ratios
                money_for_share = curr_value_cap * market_cap_weights[j]
                no_shares_cap[j] = money_for_share / price[
                    session_state.stock_list[j]].iloc[0]

            for single_date in (curr_date + timedelta(1) + timedelta(n)
                                for n in range(29)):
                price = yf.download(session_state.stock_list, str(single_date),
コード例 #11
0
def get_stock_prices(list):
    for i in list:
        res = pdr.get_quote_yahoo(i)["price"]
        print(res)
コード例 #12
0
def get_quote(ticker):
    data = pdr.get_quote_yahoo(ticker)
    return json.loads(data.to_json(orient="index"))
コード例 #13
0
import pandas_datareader as pdr
import csv
import pandas
import json

stocks = ['AAPL','GOOGL', 'AMZN', 'FB', 'SSNLF', 'MSFT', 'SNE', 'IBM', 'NTDOY', 'ORCL', 'VMW', 'INTC', 'HPQ', 'DVMT',
'CSCO', 'ADBE', 'SAP', 'LNVGY', 'RHT', 'SYMC', 'TWTR', 'ATNY', 'ACTS', 'ATVI', 'IOTS', 'ADRO', 'AMD', 'ADVS', 'ZBRA',
'XPLR', 'XBIT', 'WIX', 'WBMD', 'VNOM', 'VIA', 'VECO', 'UPLD', 'UBNT', 'UFPT', 'TYME', 'TRIV', 'TRIP', 'TGA', 'TSI',
'TESS', 'AIR', 'ATEN', 'AQN', 'DDD', 'WUBA', 'ASX', 'A', 'AYX', 'AMBR', 'AEE', 'BHE', 'BIO', 'CPL', 'CTS', 'CMI', 'DGI',
'D', 'HEI', 'ASUR', 'AVID', 'EPAY', 'CBAK', 'CPSH', 'CYAN', 'DBVT', 'DELT', 'EDGW', 'XELA', 'FALC', 'SVVC', 'FBIO', 'GEOS',
'QQQC', 'GPRO', 'MRVL', 'MZOR', 'BKFS', 'BA', 'CAJ', 'CRY', 'CUB', 'DGI', 'GME', 'GM', 'GNE', 'ASR', 'PAC', 'MDT',
'MTD', 'MIXT', 'MULE', 'NC', 'NPTN', 'NXPI', 'NSTG', 'UEPS']

stock_df = pdr.get_quote_yahoo(stocks)

stock_df.index.name = "StockSymbol"

stock_df.to_csv("stock.csv")

company_stock = pandas.read_csv("stock.csv")
companies = pandas.read_csv("companies.csv")

merged = company_stock.merge(companies, on = 'StockSymbol')

merged.to_csv('new.csv', index=False)
コード例 #14
0
import pandas as pd
import numpy as np

from openpyxl import load_workbook
wb = load_workbook('/Users/maria/Job/Python/Ws.xlsx')  # Work Book file that I have 
ws = wb['Sheet2']  # Work Sheet
column = ws['C']  # Column
tickers_list = [column[x].value for x in range(len(column))]

print(*tickers_list, sep='\n')  #επιβεβαιώνω ότι λειτουργεί σωστά και τυπώνει τα tickers από excel
print(len(tickers_list))  #επιβεβαιώνω ότι το μέγεθος των στοιχείων είναι σωστό

#extract the marketcaps
import pandas_datareader as web
tickers = tickers_list[1:]
print(tickers)
market_cap_data= web.get_quote_yahoo(tickers)['marketCap']
print(market_cap_data)

コード例 #15
0
def get_prices(symbols):
    print(symbols.sort())
    return pdr.get_quote_yahoo(symbols)[
        'price']  # live stock data for finance from yahoo about apple inc
コード例 #16
0
ファイル: stock.py プロジェクト: hookex/stock
def get_stock(stock):
    return DataFrame(pdr.get_quote_yahoo(stock, session=session))
コード例 #17
0
    def __init__(self, feed_dict, full_analysis):
        # initiate common vatiables
        self.returns = feed_dict['input']
        self.covar = self.returns.cov()
        del feed_dict['input']

        columns = []
        self.inital_weights = []
        for col in self.returns.columns:
            name = col.split('_')[0]
            self.inital_weights.append(get_quote_yahoo(name).marketCap)
            columns.append(name)
        self.inital_weights = np.array(self.inital_weights)
        self.inital_weights = self.inital_weights / np.sum(self.inital_weights)

        # save parameters in case replication is desired
        self.Parameters = deepcopy(feed_dict)
        objective, features, constraints, simulations, methods, tol, maxiter, disp = oc.unfeeder(
            feed_dict)

        try:
            views = []
            chg = []
            for view in objective['target']:
                chg.append(view[0] / 100)
                views.append(view[1:])
            views = np.array(views)
            chg = np.array(chg)
        except:
            raise AttributeError(
                'Black Litterman requires target views to be specified.')

        # features
        if 'benchmark' in features:
            self.benchmark = features['benchmark']
        else:
            raise AttributeError('Black Litterman requires a benchmark.')

        self.periodicity = _embed_periodicity(features['periodicity'])
        if methods == 'arithmetic':
            self.mean_returns = self.returns.mean() * self.periodicity
            self.benchmark_mean = self.benchmark.mean() * self.periodicity
        if methods == 'geometric':
            self.mean_returns = _geomean(self.returns, self.periodicity)
            self.benchmark_mean = _geomean(self.benchmark, self.periodicity)

        if 'margin_int_rate' in features:
            self.margin_rate = features['margin_int_rate']
        else:
            self.margin_rate = 0

        if 'rf' in features:
            self.rf = features['rf']
        else:
            self.rf = 0
        # constraints
        if 'min_weights' in constraints:
            self.weight_bounds = tuple(
                zip(constraints['min_weights'], constraints['max_weights']))
        else:
            self.weight_bounds = None
        constraints = self.get_constraints(constraints)

        # return computation
        A = (self.benchmark_mean - self.rf) / (
            (self.benchmark.std()**2) * self.periodicity)

        pi = A * np.matmul(np.mat(self.covar * self.periodicity),
                           self.inital_weights)
        omega = np.matmul(
            np.matmul(views, np.mat(self.covar * self.periodicity)), views.T)

        e1 = np.mat(
            np.mat(self.covar * self.periodicity).I +
            np.matmul(np.matmul(views.T,
                                np.mat(omega).I), views)).I
        e2 = np.matmul(np.mat(self.covar * self.periodicity).I,
                       pi) + np.matmul(np.matmul(views.T,
                                                 np.mat(omega).I), chg).T
        self.Expected_Returns = np.matmul(e1, e2)

        # optimal portfolio
        self.OptiParam = minimize(self.optimize_sharpe_ratio,
                                  self.inital_weights,
                                  method='SLSQP',
                                  bounds=self.weight_bounds,
                                  tol=tol,
                                  constraints=constraints,
                                  options={
                                      'maxiter': maxiter,
                                      'disp': disp
                                  })
        if not self.OptiParam['success']:
            print('Warning!', self.OptiParam['message'])
        tanw = self.OptiParam['x']
        tanww = pd.DataFrame(tanw).T
        tanww.columns = columns
        tanr = self.weighted_annual_return(tanw)
        margin = np.sum(np.abs(tanw)) - 1
        tanra = tanr - self.rf - self.margin_rate * margin
        tans = self.weighted_annual_stddev(tanw)
        self.Optimal = {
            'Weights': tanww,
            'Return': tanr,
            'AdjReturn': tanra,
            'StdDev': tans,
            'Sharpe': tanra / tans,
            'Series': self.weighted_return(tanw)
        }

        # efficent frontier
        if full_analysis == True:
            analyze = np.linspace(max(self.Optimal['Return'] / 4, 0.0001),
                                  min(self.Optimal['Return'] * 4, 0.5),
                                  simulations)
            efficent = []
            eff = []
            for ret in analyze:
                e = self.optimize_efficent(ret, constraints, tol, maxiter,
                                           disp)
                we = e['x']
                wew = pd.DataFrame(we).T
                wew.columns = columns
                margin = np.sum(np.abs(we)) - 1
                re = self.weighted_annual_return(
                    we) - self.rf - self.margin_rate * margin
                se = self.weighted_annual_stddev(we)
                efficent.append({
                    'Weights': wew,
                    'Returns': re,
                    'StdDevs': se,
                    'Sharpe': re / se
                })
                eff.append(e)
            self.EfficentParam = eff
            self.EfficentFrontier = efficent

        # close
        self.ConstituentSharpe = self.get_sharpes(columns)
コード例 #18
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Part 1
Created on Mon Mar 18 12:17:42 2019

@author: mjmacarty
"""

# open a command line window (terminal) and enter the following:
# pip install pandas-datareader

import pandas as pd
import pandas_datareader as pdr

# read data from one of the APIs

# i.e. pdr.get_data_yahoo('SPY') --> returns dataframe of historical quotes for symbol SPY

pdr.get_data_yahoo("SPY")

# many data sources and variations on data sets, we are interested in a current price:
# get_quote downloads "live" data from the API
print(pdr.get_quote_yahoo('AAPL'))
print(pdr.get_quote_yahoo('AAPL')['price'])



     
コード例 #19
0
def get_prices(symbols):
    symbols.sort()
    return pdr.get_quote_yahoo(symbols)['price']
コード例 #20
0
ファイル: pdr_get_quote.py プロジェクト: sarkhub/sand
# -*- coding: utf-8 -*-
"""
Created on Fri Jan  3 13:51:10 2020

@author:  
"""

import pandas as pd
import pandas_datareader as pdr

print(pdr.get_quote_yahoo("AAPL")['price'])