Files
Mark Aron Szulyovszky 7a443d93e4 feat(Transformations): added robust scaler (#223)
* feat(Transformations): added robust scaler

* fix(Config): set back default scaler to MinMax
2022-02-20 00:41:46 +01:00

75 lines
2.4 KiB
Python

# %%
import requests
import pandas as pd
# %%
def get_crypto_price_crypto_compare(
symbol: str, exchange: str, days: int
) -> pd.DataFrame:
api_url = f"https://min-api.cryptocompare.com/data/v2/histoday?fsym={symbol}&tsym={exchange}&limit={days}&api_key={CC_API_KEY}"
raw = requests.get(api_url).json()
df = pd.DataFrame(raw["Data"]["Data"])[
["time", "high", "low", "open", "close"]
].set_index("time")
df.index = pd.to_datetime(df.index, unit="s")
df.sort_index(inplace=True, ascending=True)
return df
def get_crypto_price_av(symbol: str, exchange: str, start_date=None) -> pd.DataFrame:
api_url = f"https://www.alphavantage.co/query?function=DIGITAL_CURRENCY_DAILY&symbol={symbol}&market={exchange}&apikey={AV_API_KEY}"
raw_df = requests.get(api_url).json()
df = pd.DataFrame(raw_df["Time Series (Digital Currency Daily)"]).T
df = df.rename(
columns={
"1a. open (USD)": "open",
"2a. high (USD)": "high",
"3a. low (USD)": "low",
"4a. close (USD)": "close",
"5. volume": "volume",
}
)
for i in df.columns:
df[i] = df[i].astype(float)
df.index = pd.to_datetime(df.index)
df = df.iloc[::-1].drop(
[
"1b. open (USD)",
"2b. high (USD)",
"3b. low (USD)",
"4b. close (USD)",
"6. market cap (USD)",
],
axis=1,
)
if start_date:
df = df[df.index >= start_date]
df.sort_index(inplace=True, ascending=True)
return df
def get_stock_price_av(symbol: str, start_date: str = None) -> pd.DataFrame:
api_url = f"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={symbol}&outputsize=full&apikey={AV_API_KEY}"
raw_df = requests.get(api_url).json()
df = pd.DataFrame(raw_df["Time Series (Daily)"]).T
df = df.rename(
columns={
"1. open": "open",
"2. high": "high",
"3. low": "low",
"5. adjusted close": "close",
"6. volume": "volume",
}
)
for i in df.columns:
df[i] = df[i].astype(float)
df.index = pd.to_datetime(df.index)
df = df.iloc[::-1].drop(
["4. close", "7. dividend amount", "8. split coefficient"], axis=1
)
if start_date:
df = df[df.index >= start_date]
df.sort_index(inplace=True, ascending=True)
df = df.rename_axis("time")
return df