def test_fundamentals(self):
     quote = r.get_fundamentals(self.single_stock, info=None)
     assert (len(quote) == 1)
     assert (quote[0]['symbol'] == self.single_stock)
     quote = quote[0]
     assert ('open' in quote)
     assert isinstance(quote["open"], float)
     assert ('high' in quote)
     assert isinstance(quote["high"], float)
     assert ('low' in quote)
     assert isinstance(quote["low"], float)
     assert ('volume' in quote)
     assert isinstance(quote["volume"], int)
     assert ('average_volume_2_weeks' in quote)
     assert isinstance(quote["average_volume_2_weeks"], float)
     assert ('average_volume' in quote)
     assert isinstance(quote["average_volume"], float)
     assert ('high_52_weeks' in quote)
     assert isinstance(quote["high_52_weeks"], float)
     assert ('dividend_yield' in quote)
     assert isinstance(quote["dividend_yield"], float)
     assert ('float' in quote)
     assert isinstance(quote["float"], int)
     assert ('low_52_weeks' in quote)
     assert isinstance(quote["low_52_weeks"], float)
     assert ('market_cap' in quote)
     assert isinstance(quote["market_cap"], float)
     assert ('pb_ratio' in quote)
     assert isinstance(quote["pb_ratio"], float)
     assert ('pe_ratio' in quote)
     assert isinstance(quote["pe_ratio"], float)
     assert ('shares_outstanding' in quote)
     assert isinstance(quote["shares_outstanding"], float)
     assert ('description' in quote)
     assert isinstance(quote["description"], str)
     assert ('instrument' in quote)
     assert isinstance(quote["instrument"], str)
     assert ('ceo' in quote)
     assert isinstance(quote["ceo"], str)
     assert ('headquarters_city' in quote)
     assert isinstance(quote["headquarters_city"], str)
     assert ('headquarters_state' in quote)
     assert isinstance(quote["headquarters_state"], str)
     assert ('sector' in quote)
     assert isinstance(quote["sector"], str)
     assert ('industry' in quote)
     assert isinstance(quote["industry"], str)
     assert ('num_employees' in quote)
     assert isinstance(quote["num_employees"], int)
     assert ('year_founded' in quote)
     assert isinstance(quote["year_founded"], int)
     assert ('symbol' in quote)
     assert isinstance(quote["symbol"], str)
     #
     more_quotes = r.get_fundamentals(self.list_stocks, info=None)
     assert (len(more_quotes) == len(self.list_stocks))
     #
     fake_quotes = r.get_fundamentals(self.fake_stocks, info=None)
     assert (len(fake_quotes) == 1)
     assert (fake_quotes[0] is None)
 def test_instruments(self):
     quote = r.get_instruments_by_symbols(self.single_stock)
     assert (len(quote) == 1)
     assert (quote[0]['symbol'] == self.single_stock)
     quote = quote[0]
     assert ('id' in quote)
     assert isinstance(quote["id"], str)
     assert ('url' in quote)
     assert isinstance(quote["url"], str)
     assert ('quote' in quote)
     assert isinstance(quote["quote"], str)
     assert ('fundamentals' in quote)
     assert isinstance(quote["fundamentals"], str)
     assert ('splits' in quote)
     assert isinstance(quote["splits"], str)
     assert ('state' in quote)
     assert isinstance(quote["state"], str)
     assert ('market' in quote)
     assert isinstance(quote["market"], str)
     assert ('simple_name' in quote)
     assert isinstance(quote["simple_name"], str)
     assert ('name' in quote)
     assert isinstance(quote["name"], str)
     assert ('tradeable' in quote)
     assert isinstance(quote["tradeable"], bool)
     assert ('tradability' in quote)
     assert isinstance(quote["tradability"], str)
     assert ('symbol' in quote)
     assert isinstance(quote["symbol"], str)
     assert ('bloomberg_unique' in quote)
     assert isinstance(quote["bloomberg_unique"], str)
     assert ('margin_initial_ratio' in quote)
     assert isinstance(quote["margin_initial_ratio"], float)
     assert ('maintenance_ratio' in quote)
     assert isinstance(quote["maintenance_ratio"], float)
     assert ('country' in quote)
     assert isinstance(quote["country"], str)
     assert ('day_trade_ratio' in quote)
     assert isinstance(quote["day_trade_ratio"], float)
     assert ('list_date' in quote)
     assert isinstance(quote["list_date"], str)
     assert ('min_tick_size' in quote)
     assert ('type' in quote)
     assert isinstance(quote["type"], str)
     assert ('tradable_chain_id' in quote)
     assert isinstance(quote["tradable_chain_id"], str)
     assert ('rhs_tradability' in quote)
     assert isinstance(quote["rhs_tradability"], str)
     assert ('fractional_tradability' in quote)
     assert isinstance(quote["fractional_tradability"], str)
     assert ('default_collar_fraction' in quote)
     assert isinstance(quote["default_collar_fraction"], float)
     #
     more_quotes = r.get_fundamentals(self.list_stocks, info=None)
     assert (len(more_quotes) == len(self.list_stocks))
     #
     fake_quotes = r.get_fundamentals(self.fake_stocks, info=None)
     assert (len(fake_quotes) == 1)
     assert (fake_quotes[0] == None)
Пример #3
0
def get_fundamentals(tickers):
    fundamentals = []
    sets_of_100 = len(tickers) // 100

    for i in range(sets_of_100):
        print('Call #' + str(i + 1))
        fundamentals += r.get_fundamentals(tickers[i * 100:(i + 1) * 100])

    fundamentals += r.get_fundamentals(tickers[sets_of_100 * 100:])
    return fundamentals
Пример #4
0
	def get_rel_volume(self):
		try:
			fund = r.get_fundamentals(self.tick)

			return float(fund['volume'])/float(fund['average_volume_2_weeks'])

		except:
			# be default, assume normal rel volume
			return 1
Пример #5
0
def grabIntradayHL(stock):
    """Returns intra-day low/high of the day.

    :param stock: {1-5} character stock-ticker
    :return: [float] low, [float] high
    """
    quote = r.get_fundamentals(stock)[0]
    low = '{:.2f}'.format(round(float(quote['low']), 2))
    high = '{:.2f}'.format(round(float(quote['high']), 2))
    return low, high
Пример #6
0
 def test_fundamentals(self):
     quote = r.get_fundamentals(self.single_stock, info=None)
     assert (len(quote) == 1)
     assert (quote[0]['symbol'] == self.single_stock)
     quote = quote[0]
     assert ('open' in quote)
     assert ('high' in quote)
     assert ('low' in quote)
     assert ('volume' in quote)
     assert ('average_volume_2_weeks' in quote)
     assert ('average_volume' in quote)
     assert ('high_52_weeks' in quote)
     assert ('dividend_yield' in quote)
     assert ('float' in quote)
     assert ('low_52_weeks' in quote)
     assert ('market_cap' in quote)
     assert ('pb_ratio' in quote)
     assert ('pe_ratio' in quote)
     assert ('shares_outstanding' in quote)
     assert ('description' in quote)
     assert ('instrument' in quote)
     assert ('ceo' in quote)
     assert ('headquarters_city' in quote)
     assert ('headquarters_state' in quote)
     assert ('sector' in quote)
     assert ('industry' in quote)
     assert ('num_employees' in quote)
     assert ('year_founded' in quote)
     assert ('symbol' in quote)
     #
     more_quotes = r.get_fundamentals(self.list_stocks, info=None)
     assert (len(more_quotes) == len(self.list_stocks))
     #
     fake_quotes = r.get_fundamentals(self.fake_stocks, info=None)
     assert (len(fake_quotes) == 1)
     assert (fake_quotes[0] == None)
Пример #7
0
 def test_fundamentals(self):
     quote = r.get_fundamentals(self.single_stock, info=None)
     self.assertEqual(len(quote), 1)
     self.assertEqual(quote[0]['symbol'], self.single_stock)
     quote = quote[0]
     self.assertIn('open', quote)
     self.assertIn('high', quote)
     self.assertIn('low', quote)
     self.assertIn('volume', quote)
     self.assertIn('average_volume_2_weeks', quote)
     self.assertIn('average_volume', quote)
     self.assertIn('high_52_weeks', quote)
     self.assertIn('dividend_yield', quote)
     self.assertIn('float', quote)
     self.assertIn('low_52_weeks', quote)
     self.assertIn('market_cap', quote)
     self.assertIn('pb_ratio', quote)
     self.assertIn('pe_ratio', quote)
     self.assertIn('shares_outstanding', quote)
     self.assertIn('description', quote)
     self.assertIn('instrument', quote)
     self.assertIn('ceo', quote)
     self.assertIn('headquarters_city', quote)
     self.assertIn('headquarters_state', quote)
     self.assertIn('sector', quote)
     self.assertIn('industry', quote)
     self.assertIn('num_employees', quote)
     self.assertIn('year_founded', quote)
     self.assertIn('symbol', quote)
     #
     more_quotes = r.get_fundamentals(self.list_stocks, info=None)
     self.assertEqual(len(more_quotes), len(self.list_stocks))
     #
     fake_quotes = r.get_fundamentals(self.fake_stocks, info=None)
     self.assertEqual(len(fake_quotes), 1)
     self.assertEqual(fake_quotes[0], None)
Пример #8
0
 def test_instruments(self):
     quote = r.get_instruments_by_symbols(self.single_stock)
     self.assertEqual(len(quote), 1)
     self.assertEqual(quote[0]['symbol'], self.single_stock)
     quote = quote[0]
     self.assertIn('id', quote)
     self.assertIn('url', quote)
     self.assertIn('quote', quote)
     self.assertIn('fundamentals', quote)
     self.assertIn('splits', quote)
     self.assertIn('state', quote)
     self.assertIn('market', quote)
     self.assertIn('simple_name', quote)
     self.assertIn('name', quote)
     self.assertIn('tradeable', quote)
     self.assertIn('tradability', quote)
     self.assertIn('symbol', quote)
     self.assertIn('bloomberg_unique', quote)
     self.assertIn('margin_initial_ratio', quote)
     self.assertIn('maintenance_ratio', quote)
     self.assertIn('country', quote)
     self.assertIn('day_trade_ratio', quote)
     self.assertIn('list_date', quote)
     self.assertIn('min_tick_size', quote)
     self.assertIn('type', quote)
     self.assertIn('tradable_chain_id', quote)
     self.assertIn('rhs_tradability', quote)
     self.assertIn('fractional_tradability', quote)
     self.assertIn('default_collar_fraction', quote)
     #
     more_quotes = r.get_fundamentals(self.list_stocks, info=None)
     self.assertEqual(len(more_quotes), len(self.list_stocks))
     #
     fake_quotes = r.get_fundamentals(self.fake_stocks, info=None)
     self.assertEqual(len(fake_quotes), 1)
     self.assertEqual(fake_quotes[0], None)
Пример #9
0
def getstockinfo(watchlistname):
    # fetch data from robinhood and parse data into a dictionary structure that stockcontainer can accept
    for stock in watchlist:
        week = r.get_historicals(stock, span='week', bounds="regular")
        month = r.get_historicals(stock, span='month', bounds="regular")
        year = r.get_historicals(stock, span='year', bounds="regular")
        fiveyear = r.get_historicals(stock, span='5year', bounds="regular")
        data = {}
        data['name'] = str(stock)
        data[
            'price'] = "Stock created using secondary method - price not supported"
        data['earnings'] = r.get_earnings(stock)
        data['events'] = r.get_events(stock)
        data['fundamentals'] = r.get_fundamentals(stock)
        x = stockcontainer(stock, data, "f**k off", week, month, year,
                           fiveyear)
        traj = trajectory(x)
        x.addtrajectory(traj)
        stocksArray.append(x)
Пример #10
0
    def rh_pull_portfolio_data(user_id, passwd):
        r.login(username=user_id, password=passwd)

        if DbAccess.is_update_needed():
            obj = portfolio_summary.objects.all()
            if not obj:
                obj = portfolio_summary()
                obj.timestamp = timezone.now()
            else:
                obj = obj[0]
            obj.portfolio_cash  = float(profiles.load_account_profile()['portfolio_cash'])
            obj.save()

            # remove current entries
            stocks_held.objects.all().delete()
            # get current owned securites and save to db
            positions_data = r.get_open_stock_positions()
            for item in positions_data:
                quantity = float(item['quantity'])
                if not quantity:
                    continue
                # check if instrument is present in robinhood_traded_stocks table
                obj                     = stocks_held()
                obj.symbol, obj.name    = RhWrapper.rh_pull_symbol_from_instrument_url(item['instrument'])
                obj.quantity            = quantity
                obj.average_price       = float(item['average_buy_price'])
                obj.latest_price        = float(r.get_latest_price(obj.symbol)[0])
                obj.open_price          = float(r.get_fundamentals(obj.symbol)[0]['open'])
                try:
                    obj.prev_close_price    = float(StockUtils.getStockInfo(obj.symbol)['previousClose'])
                except Exception as e:
                    logging.error(str(e) + ' encountered when fetching yahoo data for ' + obj.symbol)
                    obj.prev_close_price = obj.open_price
                obj.save()

            # remove current entries
            options_held.objects.all().delete()
            # get current owned securites and save to db
            options_position_data = r.get_open_option_positions()
            for item in options_position_data:
                quantity = float(item['quantity'])
                if not quantity:
                    continue
                obj                        = options_held()
                obj.option_id              = item['option_id']
                contract_into              = r.get_option_instrument_data_by_id(obj.option_id)
                obj.strike_price           = float(contract_into['strike_price'])
                obj.expiration_date        = contract_into['expiration_date']
                obj.option_type            = contract_into['type']
                obj.symbol                 = item['chain_symbol']
                obj.trade_value_multiplier = float(item['trade_value_multiplier'])
                obj.average_price          = float(item['average_price']) / obj.trade_value_multiplier
                obj.quantity               = float(item['quantity'])
                # adjust value for sold calls
                if obj.average_price < 0:
                    obj.average_price      = (-1) * obj.average_price
                    obj.quantity           = (-1) * obj.quantity
                market_data                = r.get_option_market_data_by_id(obj.option_id)
                obj.previous_close_price   = float(market_data['previous_close_price'])
                obj.current_price          = float(market_data['adjusted_mark_price'])
                # print('symbol: %5s strike_price: %7.2f option_type: %4s expiration_date: %12s trade_value_multiplier: %d average_price: %7.2f quantity: %d previous_close_price: %7.2f current_price: %7.2f' % (obj.symbol, obj.strike_price, obj.option_type, obj.expiration_date, obj.trade_value_multiplier, obj.average_price, obj.quantity, obj.previous_close_price, obj.current_price))
                obj.save()
Пример #11
0
def write_volume(data_frame):
    for index, new_share_info in data_frame.iterrows():
        print('Writing volume for: ', new_share_info['Symbol'])
        closing_prices = stonks.get_fundamentals(new_share_info['Symbol'], info='average_volume')
        data_frame.loc[index, 'Volume'] = volume
Пример #12
0
 def searchSymbol(self, symbol):
     return self.masterFormat(robin_stocks.get_fundamentals(symbol),
                              "search")