Пример #1
0
 def chat(msg):
     global dictionary,pending,pending_action,state,my_friend
     print(msg)              
     usermessage=txt_recog(msg)         
     if usermessage=='quit':
         my_friend.send(get_chatbotanswer('See you.'))
         sys.exit()
     intent=interprete(interpreter,usermessage)['intent']['name']
     entities=extract_entities(nlp,usermessage)
     Org=Check_Org(entities)
     intent_=(check_intents(intent))       
     dictionary,pending,pending_action,state=bot_reply(intent_,state,pending,Org,pending_action,dictionary)  
     if state==END:
         my_friend.send(get_chatbotanswer('See you.'))
         sys.exit()        
     action=pending_actions()       
     if pending is not 0:
         my_friend.send(get_chatbotanswer(action[pending_action])) 
     if state is not 0 and state is not 3 and state is not 5:
         my_friend.send(get_chatbotanswer(state_change_action(state)))
     if (dictionary['function'] is not None) and (dictionary['company']is not None):
         CPN=Stock(get_ticker_symbol(dictionary['company']))
         if dictionary['function']=='b':               
             if error_check1(CPN)==1:      
                 p_CPN=CPN.get_price()
                 state=FOUND
                 my_friend.send(get_chatbotanswer('Ok,I have found it! The price of {0} is {1}$'.format(dictionary['company'],p_CPN) ))
             else:     
                 my_friend.send(get_chatbotanswer('Information of company not found'))
                 state=NOTFOUND
         if dictionary['function']=='c':
             if error_check2(CPN)==1:                
                 mv_CPN=CPN.get_volume()
                 my_friend.send(get_chatbotanswer('Ok,I have found it!'))
                 state=FOUND
                 my_friend.send(get_chatbotanswer('The volume of {0} is {1}'.format(dictionary['company'],mv_CPN) ))
             else: 
                 
                 my_friend.send(get_chatbotanswer('Information of company not found'))
                 state=NOTFOUND            
         if dictionary['function']=='d':
             if error_check3(CPN)==1:                
                 mc_CPN=CPN.get_market_cap()
                 my_friend.send(get_chatbotanswer('Ok,I have found it!'))
                 state=FOUND
                 my_friend.send(get_chatbotanswer('The market value of {0} is {1}$'.format(dictionary['company'],mc_CPN)))  
             else:                    
                 my_friend.send(get_chatbotanswer('Information not found'))
                 state=NOTFOUND
     if state == FOUND or state==NOTFOUND :
         my_friend.send(get_chatbotanswer('Do you have other questions? Say "quit" to quit'))
         state=INIT
Пример #2
0
class TestFieldMethodsBatch(object):
    def setup_class(self):
        self.batch = Stock(["AAPL", "TSLA"])
        self.batch2 = Stock(["AAPL", "TSLA"], output_format='pandas')
        self.batch4 = Stock(["AAPL", "TSLA"],
                            json_parse_int=Decimal,
                            json_parse_float=Decimal)

    def test_get_company_name(self):
        data = self.batch.get_company_name()
        assert isinstance(data, dict)
        assert data["AAPL"] == "Apple Inc."

        data2 = self.batch2.get_company_name()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))

    def test_get_primary_exchange(self):
        data = self.batch.get_primary_exchange()
        assert isinstance(data, dict)
        assert data["AAPL"] == "Nasdaq Global Select"

        data2 = self.batch2.get_primary_exchange()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))

    def test_get_sector(self):
        data = self.batch.get_sector()
        assert isinstance(data, dict)
        assert data["AAPL"] == "Technology"

        data2 = self.batch2.get_sector()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))

    def test_get_open(self):
        data = self.batch.get_open()
        assert isinstance(data, dict)
        assert data["AAPL"] > 0

        data2 = self.batch2.get_open()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

    def test_get_close(self):
        data = self.batch.get_close()
        assert isinstance(data, dict)
        assert data["AAPL"] > 0

        data2 = self.batch2.get_close()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

    def test_get_years_high(self):
        data = self.batch.get_years_high()
        assert isinstance(data, dict)
        assert data["AAPL"] > 0

        data2 = self.batch2.get_years_high()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

    def test_get_years_low(self):
        data = self.batch.get_years_low()
        assert isinstance(data, dict)
        assert data["AAPL"] > 0

        data2 = self.batch2.get_years_low()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

    def test_get_ytd_change(self):
        data = self.batch.get_ytd_change()
        assert isinstance(data, dict)

        data2 = self.batch2.get_ytd_change()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

    def test_get_volume(self):
        data = self.batch.get_volume()
        assert isinstance(data, dict)
        assert data["AAPL"] > 50000

        data2 = self.batch2.get_volume()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "int64"

    def test_get_market_cap(self):
        data = self.batch.get_market_cap()
        assert isinstance(data, dict)
        assert data["AAPL"] > 1000000

        data2 = self.batch2.get_market_cap()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "int64"

    def test_get_beta(self):
        data = self.batch.get_beta()
        assert isinstance(data, dict)
        assert isinstance(data["AAPL"], float)

        data2 = self.batch2.get_beta()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.batch4.get_beta()
        assert isinstance(data4, dict)
        assert isinstance(data4["AAPL"], Decimal)

    def test_get_short_interest(self):
        data = self.batch.get_short_interest()
        assert isinstance(data, dict)
        assert data["AAPL"] > 50000

        data2 = self.batch2.get_short_interest()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "int64"

    def test_get_short_ratio(self):
        data = self.batch.get_short_ratio()
        assert isinstance(data, dict)
        assert isinstance(data["AAPL"], float)

        data2 = self.batch2.get_short_ratio()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.batch4.get_short_ratio()
        assert isinstance(data4, dict)
        assert isinstance(data4["AAPL"], Decimal)

    def test_get_latest_eps(self):
        data = self.batch.get_latest_eps()
        assert isinstance(data, dict)
        assert isinstance(data["TSLA"], float)

        data2 = self.batch2.get_latest_eps()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["TSLA"].dtype == "float64"

        data4 = self.batch4.get_latest_eps()
        assert isinstance(data4, dict)
        assert isinstance(data4["AAPL"], Decimal)

    def test_get_shares_outstanding(self):
        data = self.batch.get_shares_outstanding()
        assert isinstance(data, dict)
        assert data["AAPL"] > 100000

        data2 = self.batch2.get_shares_outstanding()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "int64"

    def test_get_float(self):
        data = self.batch.get_float()
        assert isinstance(data, dict)
        assert data["AAPL"] > 1000000

        data2 = self.batch2.get_float()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "int64"

    def test_get_eps_consensus(self):
        data = self.batch.get_eps_consensus()
        assert isinstance(data, dict)
        assert isinstance(data["AAPL"], float)

        data2 = self.batch2.get_eps_consensus()
        assert isinstance(data2, pd.DataFrame)
        assert_index_equal(data2.index, pd.Index(self.batch2.symbols))
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.batch4.get_eps_consensus()
        assert isinstance(data4, dict)
        assert isinstance(data4["AAPL"], Decimal)
Пример #3
0
class TestFieldMethodsShare(object):
    def setup_class(self):
        self.share = Stock("AAPL")
        self.share2 = Stock("AAPL", output_format='pandas')
        self.share4 = Stock("AAPL",
                            json_parse_int=Decimal,
                            json_parse_float=Decimal)
        self.share5 = Stock("TSLA")

    def test_get_company_name(self):
        data = self.share.get_company_name()
        print(type(data))

        assert isinstance(data, six.string_types)
        assert data == "Apple Inc."

        data2 = self.share2.get_company_name()
        assert isinstance(data2, pd.DataFrame)

    def test_get_primary_exchange(self):
        data = self.share.get_primary_exchange()
        assert isinstance(data, six.string_types)
        assert data == "Nasdaq Global Select"

        data2 = self.share2.get_primary_exchange()
        assert isinstance(data2, pd.DataFrame)

    def test_get_sector(self):
        data = self.share.get_sector()

        assert isinstance(data, six.string_types)
        assert data == "Technology"

        data2 = self.share2.get_sector()
        assert isinstance(data2, pd.DataFrame)

    def test_get_open(self):
        data = self.share.get_open()
        assert isinstance(data, float)
        assert data > 0

        data2 = self.share2.get_open()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_open()
        assert isinstance(data4, Decimal)
        assert data4 > 0

    def test_get_close(self):
        data = self.share.get_close()
        assert isinstance(data, float)
        assert data > 0

        data2 = self.share2.get_close()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_close()
        assert isinstance(data4, Decimal)
        assert data4 > 0

    def test_get_years_high(self):
        data = self.share.get_years_high()
        assert isinstance(data, float)
        assert data > 0

        data2 = self.share2.get_years_high()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_years_high()
        assert isinstance(data4, Decimal)
        assert data4 > 0

    def test_get_years_low(self):
        data = self.share.get_years_low()
        assert isinstance(data, float)
        assert data > 0

        data2 = self.share2.get_years_low()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_years_low()
        assert isinstance(data4, Decimal)
        assert data4 > 0

    def test_get_ytd_change(self):
        data = self.share.get_ytd_change()
        assert isinstance(data, float)

        data2 = self.share2.get_ytd_change()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_ytd_change()
        assert isinstance(data4, Decimal)

    def test_get_volume(self):
        data = self.share.get_volume()
        assert isinstance(data, int)
        assert data > 1000

        data2 = self.share2.get_volume()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "int64"

        data4 = self.share4.get_volume()
        assert isinstance(data4, Decimal)
        assert data4 > 1000

    def test_get_market_cap(self):
        data = self.share.get_market_cap()
        assert isinstance(data, int)

        data2 = self.share2.get_market_cap()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "int64"

        data4 = self.share4.get_market_cap()
        assert isinstance(data4, Decimal)

    def test_get_beta(self):
        data = self.share.get_beta()
        assert isinstance(data, float)

        data2 = self.share2.get_beta()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_beta()
        assert isinstance(data4, Decimal)

    def test_get_short_interest(self):
        data = self.share.get_short_interest()
        assert isinstance(data, int)

        data2 = self.share2.get_short_interest()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "int64"

        data4 = self.share4.get_short_interest()
        assert isinstance(data4, Decimal)

    def test_get_short_ratio(self):
        data = self.share.get_short_ratio()
        assert isinstance(data, float)

        data2 = self.share2.get_short_ratio()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_short_ratio()
        assert isinstance(data4, Decimal)

    def test_get_latest_eps(self):
        data = self.share5.get_latest_eps()
        assert isinstance(data, float)

        data4 = self.share4.get_latest_eps()
        assert isinstance(data4, Decimal)

    def test_get_shares_outstanding(self):
        data = self.share.get_shares_outstanding()
        assert isinstance(data, int)

        data2 = self.share2.get_shares_outstanding()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "int64"

        data4 = self.share4.get_shares_outstanding()
        assert isinstance(data4, Decimal)

    def test_get_float(self):
        data = self.share.get_float()
        assert isinstance(data, int)

        data2 = self.share2.get_float()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "int64"

        data4 = self.share4.get_float()
        assert isinstance(data4, Decimal)

    def test_get_eps_consensus(self):
        data = self.share.get_eps_consensus()
        assert isinstance(data, float)

        data2 = self.share2.get_eps_consensus()
        assert isinstance(data2, pd.DataFrame)
        assert data2.loc["AAPL"].dtype == "float64"

        data4 = self.share4.get_eps_consensus()
        assert isinstance(data4, Decimal)
Пример #4
0
    def analyse_data(self, filename, coin, formatted_cryptocurrency_tweets,
                     j_info):
        tweetsInHour = []

        print("Number of unique tweets in an hour for " + coin + " is " +
              str(len(formatted_cryptocurrency_tweets)))

        file_exists = os.path.isfile(filename)
        if sentiment_config.TYPE == "CRYPTO":
            change = j_info['ticker']['change']
            volume = j_info['ticker']['volume']
            self.price = j_info['ticker']['price']
            timestamp = j_info['timestamp']
        else:
            stock = Stock(sentiment_config.EXCHANGE)
            change = stock.get_price() - self.price
            volume = stock.get_volume()
            self.price = stock.get_price()
            timestamp = datetime.datetime.now().strftime("%H:%M:%S")
        try:
            # average compound
            average_compound = float(
                sum(d['sentiment']['compound']
                    for d in formatted_cryptocurrency_tweets)) / len(
                        formatted_cryptocurrency_tweets)

            cryptoFeature = {
                'TimeStamp': [timestamp],
                'Sentiment': [average_compound],
                'Volume': [volume],
                'Change': [change],
                'Price': [self.price],
                'NoOfTweets': [len(formatted_cryptocurrency_tweets)]
            }

            formatted_cryptocurrency_tweets = []
            pd.DataFrame.from_dict(data=cryptoFeature,
                                   orient='columns').to_csv(
                                       filename,
                                       mode='a',
                                       header=not file_exists)
            # Make Predictions
            linear_predict_change = predict.generate_linear_prediction_model(
                cryptoFeature, filename)
            multi_linear_predict_change = predict.generate_multi_linear_prediction_model(
                cryptoFeature, filename)
            tree_predict_change = predict.generate_tree_prediction_model(
                cryptoFeature, filename)
            forest_predict_change = predict.generate_forest_prediction_model(
                cryptoFeature, filename)

            if linear_predict_change is not None and multi_linear_predict_change is not None\
                    and tree_predict_change is not None and forest_predict_change is not None:
                #get average prediction
                average_prediction = (float(linear_predict_change) +
                                      float(multi_linear_predict_change) +
                                      float(tree_predict_change) +
                                      float(forest_predict_change)) / 4
                self.notify_user(str(average_prediction),
                                 str(cryptoFeature['Sentiment'][0]))

                #Plotting
                self.cryptocurrency_current_price.append(self.price)
                self.cryptocurrency_plot_time.append(
                    datetime.datetime.now().strftime("%H:%M:%S"))
                print("Linear " + linear_predict_change)
                print("Multi Linear" + multi_linear_predict_change)
                print("Forest" + forest_predict_change)

                self.plot(linear_predict_change, multi_linear_predict_change,
                          tree_predict_change, forest_predict_change)
            else:
                print("Still building set")
        except Exception as e:
            print("No tweets in the last hour", str(e))
Пример #5
0
print('Tesla: open price %f, current price %f' % (opn, pri))

# look at AA (Alcoa?)
aa = Stock('AA')
eps = aa.get_latest_eps()
pri = aa.get_price()
print('AA: latest EPS %f, current price %f' % (eps, pri))

# show symbols and company name for each
# for s in symbols:
#   if s['isEnabled'] == True: print(s['symbol'] + ', ' + s['name'])

# Apple
apple = Stock('AAPL')
apple.get_key_stats()
apple.get_volume()
apple.get_earnings()
apple.get_quote()
apple.get_quote()['peRatio']
apple.get_quote()['close']


def pStock(symbol):
    priceCriteria = 5.00
    data = Stock(symbol)
    quote = data.get_quote()
    pe = quote['peRatio']
    close = quote['close']
    sts = data.get_key_stats()
    cName = sts['companyName']
Пример #6
0
from iexfinance import Stock
from iexfinance import get_historical_data
from datetime import datetime
tsla = Stock('TSLA')
print("open", tsla.get_open())
print("volume", tsla.get_volume())
print("price", tsla.get_price())
print("close", tsla.get_close())

start = datetime(2018,10,11)
end = datetime(2018,10,13)

df = get_historical_data("AAPL", start = start, end = end, output_format = 'pandas')
print(df.head())