Skip to main content

ADA Sentiment Explorer Python API

Project description

logo

ADA Sentiment Explorer API

Introduction

Alpha Data Analytics ("ADA") is a data analytics company, core product is ADA Sentiment Explorer (“ADASE”), build on an opinion monitoring technology that intelligently reads news sources and social platforms into machine-readable indicators. It is designed to provide unbiased visibility of people's opinions as a driving force of capital markets, political processes, demand prediction or marketing

ADA's vision is to democratise advanced AI-system supporting decisions, that benefit data proficient people and small- or medium- quantitative institutions.

ADASE supports keyword and topic engines, as explained below

To install

pip install adase-api

Keyword search engine

Query syntax

  • Each condition is placed inside of round brackets (), where
    • + indicates a search term must be found
    • and - excludes it
  • Multiple conditions can be combined with logical operators
    • OR
    • AND
  • Also you can separate by comma "," multiple requests for a parallel processing as below:
    • "(+Bitcoin -Luna) OR (+ETH), (+crypto)"
    • Will return matches to data that hit Bitcoin or ETH but not Luna for the first query, and crypto for the second
    • Amount of sub-queries is not limited and is executed in parallel

To use API you need to provide API credentials as environment variables

adase_api.query.load_sentiment method has more configurations described in the docstring

from adase_api.sentiment import load_sentiment
from adase_api.schemas.sentiment import Credentials
from adase_api.schemas.sentiment import QuerySentimentAPI, ProcessConfig

credentials = Credentials(username='youruser@gmail.com', password='yourpass')

search_keywords = "(+Bitcoin -Luna) OR (+ETH), (+crypto)"  # each query separated by ","
ada_query = QuerySentimentAPI(
  many_query=search_keywords,
  engine='keyword',
  process_cfg=ProcessConfig(roll_period='28d', freq='-1d', z_score=True),
  credentials=credentials,
  run_async=False
)
sentiment = load_sentiment(ada_query)
sentiment.unstack(2).tail()

Returns coverage, hits, score and score_coverage to a pandas dataframe

query                      (+Bitcoin -Luna) OR (+ETH)                      (+crypto)                     
                                       coverage       hits     score  coverage       hits     score
date_time           source                                                                         
2022-05-27 11:00:00 all                0.026520  36.676056  0.218439  0.055207  76.487535  0.267412
2022-05-27 12:00:00 all                0.026497  36.668539  0.216516  0.055200  76.518006  0.267331
2022-05-27 13:00:00 all                0.026443  36.616246  0.215001  0.055238  76.554017  0.266730
2022-05-27 14:00:00 all                0.026442  36.605042  0.213506  0.055187  76.481994  0.266553
2022-05-27 15:00:00 all                0.026452  36.647059  0.212794  0.055199  76.512465  0.265416

Since data is weekly seasonal, a 7-day rolling average is applied by default

Topic embedding search engine

Topic syntax

  • In contrast with keyword based search, topic syntax allows to query data in a fuzzy way. It works the best when 2-5 words describe some wider concepts, examples:
    • "NASDAQ technology index"
    • "Airline travel demand"
    • "Energy disruptions in Europe"
  • Such queries will include related concept
    • for "NASDAQ technology index" it might also consider terms as "Dow Jones", "FAANG", "FTSE" etc.
    • exact structure depends mostly on how topics co-occur together
    • intuition behind is that NASDAQ is US tech stock index, but if data contains strong signals from FTSE, a British blue chip index, or Dow Jones, less tech heavy index, this will also have an impact on query of interest
    • to reflect changing world situation, underlying models are constantly re-trained making sure relations are up-to-date
from adase_api.sentiment import load_sentiment_topic
from adase_api.schemas.sentiment import QuerySentimentTopic
search_topics = ["inflation rates", "OPEC cartel"]
ada_query = QuerySentimentTopic(
  text=search_topics,
  credentials=credentials,
  run_async=False
)
sentiment = load_sentiment_topic(ada_query)
sentiment.tail(10)
                          score                    coverage                
query               OPEC cartel inflation rates OPEC cartel inflation rates
date_time                                                                  
2024-01-12 03:00:00    0.170492       -3.210051   -0.270801        1.600013
2024-01-12 04:00:00    0.184400       -0.621429   -0.270801        1.600013
2024-01-12 05:00:00    0.170492        0.952482   -0.270801        0.414950
2024-01-12 06:00:00    0.170492       -0.114074   -0.270801        0.414950
2024-01-12 07:00:00    0.170492        0.804350   -0.270801        0.414950
2024-01-12 08:00:00    0.170492        0.241445   -0.270801        1.600013
2024-01-12 09:00:00    0.170492        1.548717   -0.270801        3.970140

When normalize_to_global=True data comes more sparse, since query hits most likely won't be found every hour. In this case missing records, both coverage and score are filled with 0's

Mobility Index

Monitor traffic (on the road) situation on the city-to-airport pairs

from adase_api.schemas.geo import QueryTagGeo, GeoH3Interface, QueryTextMobility, QueryMobility
from adase_api.geo import load_mobility_by_text

q = QueryTextMobility(
    tag_geo=QueryTagGeo(text='Gdansk'),
    geo_h3_interface=GeoH3Interface(),
    mobility=QueryMobility(aggregated=False)
)
mobility = load_mobility_by_text(q)

API rate limit

All endpoints have set limit on API calls per minute, by default 10 calls / min.

In case you don't have yet the credentials, you can sign up for free

  • Data available since January 1, 2001
  • Easy way to explore or backtest
  • In a trial version data lags 24-hours
  • Probably something else? Hopefully the data can inspire you for other use cases

You can follow us on LinkedIn

Questions?

For package questions, rate limit or feedback you can reach out to info@adalytica.io

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

adase-api-0.3.3.tar.gz (47.5 kB view details)

Uploaded Source

Built Distribution

adase_api-0.3.3-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file adase-api-0.3.3.tar.gz.

File metadata

  • Download URL: adase-api-0.3.3.tar.gz
  • Upload date:
  • Size: 47.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for adase-api-0.3.3.tar.gz
Algorithm Hash digest
SHA256 5d0b5f3522afd3ec4096408a0a1073ef355abfc25d9373be880439428d2bd1ac
MD5 0edbb23dbb80f40ce4042dfecec245f7
BLAKE2b-256 e1b9f4ce3db7215cb2ed358a91900224cf03fa4404c677447b03e2fd0c751570

See more details on using hashes here.

File details

Details for the file adase_api-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: adase_api-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for adase_api-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 635c423a76789b8fcc56a3a67d33918181656bfa95c30cb41dde3f4e39c32196
MD5 e7e66ad87da08fd64cee5ca70ccd432f
BLAKE2b-256 57e04bea4a7e2c10d9d4bf69a7531bd9bc9dc9c7afb7955714c03db867ef93fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page