示例#1
0
import alchemist_lib.exchange as exchange

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe

session = Session()

assets = session.query(Asset).join(Instrument, Asset.instrument).filter(
    Instrument.instrument_type == "cryptocurrency").all()
print("All assets in db: ", assets)

print("\n")

tradable = exchange.are_tradable(assets=assets, exchange_name="poloniex")
print("All tradable assets on Poloniex: ", tradable)

print("\n")

all_assets = exchange.get_assets(session=session, exchange_name="bittrex")
print("All assets on Bittrex: ", all_assets)

session.close()
示例#2
0
from alchemist_lib.datafeed.poloniexdatafeed import PoloniexDataFeed

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker

session = Session()
polo = PoloniexDataFeed(session=session)

assets = session.query(Asset).join(
    Exchange,
    Asset.exchanges).filter(Exchange.exchange_name == "poloniex").all()

tradable_assets = polo.get_assets()
print("Tradable assets: ", tradable_assets)

print("\n")

#Will raise AssertError:
candles = polo.get_ohlcv(assets=assets,
                         start_date=dt.datetime(2018, 2, 10),
                         end_date=dt.datetime(2018, 2, 12),
                         timeframe="3H")

candles = polo.get_ohlcv(assets=assets,
                         start_date=dt.datetime(2018, 2, 8),
示例#3
0
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.aum_history import AumHistory
from alchemist_lib.database.ohlcv import Ohlcv
from alchemist_lib.database.ptf_allocation import PtfAllocation
from alchemist_lib.database.ts import Ts
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe
from alchemist_lib.database.executed_order import ExecutedOrder

session = Session()

all_assets = session.query(Asset).all()
bittrex_assets = session.query(Asset).join(
    Exchange,
    Asset.exchanges).filter(Exchange.exchange_name == "Bittrex").all()
print("All assets:\n", all_assets)
print("All assets instrument:\n", [asset.instrument for asset in all_assets])
print("All assets exchanges:\n", [asset.exchanges for asset in all_assets])
print("Bittrex assets:\n", bittrex_assets)

print("\n")

aum_history = session.query(AumHistory).all()
print("All aum history:\n", aum_history)
print("All aum history trading systems:\n",
      [aum_record.ts for aum_record in aum_history])
示例#4
0
import datetime as dt

import alchemist_lib.datafeed as dfeed

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker



session = Session()
assets = session.query(Asset).all()

print("All assets: ", assets)

print("\n")

last_prices = dfeed.get_last_price(assets = assets)
print("Last prices: ", last_prices)

print("\n")

dfeed.save_ohlcv(session = session, assets = assets, start_date = dt.datetime(2018,2,1), timeframe = "1D")
print("OHLCV from 2018-02-01 saved!")

print("\n")
示例#5
0
from alchemist_lib.database.timeframe import Timeframe
from alchemist_lib.database.ptf_allocation import PtfAllocation

from alchemist_lib.portfolio import LongsOnlyPortfolio

import alchemist_lib.datafeed as dfeed



session = Session()

ptf = LongsOnlyPortfolio(capital = 0.05)

ts_name = "AccumulationZone"

BTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "BTC").one()
ETH = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "ETH").one()
LTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "LTC").one()
XZC = session.query(Asset).join(Exchange, Asset.exchanges).filter(Exchange.exchange_name == "bittrex", Asset.ticker == "XZC").one()

bittrex = BittrexBroker(api_key = "APIKEY",
                         secret_key = "SECRETKEY")
bittrex.set_session(session = session)


ptf_t0 = []
ptf_t1 = [
          PtfAllocation(ticker = BTC.ticker,
                        instrument_id = BTC.instrument_id,
                        amount = -ptf.capital,
                        base_currency_amount = -ptf.capital,
示例#6
0
import alchemist_lib.utils as utils

from alchemist_lib.database import Session
from alchemist_lib.database.asset import Asset
from alchemist_lib.database.exchange import Exchange
from alchemist_lib.database.instrument import Instrument
from alchemist_lib.database.price_data_source import PriceDataSource
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker

session = Session()

fct = Factor(session=session)

assets = session.query(Asset).filter(
    or_(Asset.ticker == "BCH", Asset.ticker == "ETH",
        Asset.ticker == "XZC")).all()

print("All assets: ", utils.print_list(assets))
print("\n")

hist = fct.history(assets, "*", "1D", 30)
print("History: ", hist)
print("\n")

reg = fct.LinearRegression(hist, 5, field="close")
print("Regression 5: ", reg)
print("\n")

ma = fct.MovingAverage(hist["close"], 3)
print("MA 3: ", ma)
from alchemist_lib.database.timetable import Timetable
from alchemist_lib.database.broker import Broker
from alchemist_lib.database.timeframe import Timeframe
from alchemist_lib.database.ptf_allocation import PtfAllocation

from alchemist_lib.portfolio import LongsOnlyPortfolio

import alchemist_lib.datafeed as dfeed

session = Session()

ptf = LongsOnlyPortfolio(capital=0.05)

ts_name = "AccumulationZone"

BTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "BTC").one()
ETH = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "ETH").one()
LTC = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "LTC").one()
BCH = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex", Asset.ticker == "BCH").one()

poloniex = PoloniexBroker(api_key="APIKEY", secret_key="SECRETKEY")
poloniex.set_session(session=session)

ptf_t0 = []
ptf_t1 = [
    PtfAllocation(ticker=BTC.ticker,
                  instrument_id=BTC.instrument_id,
                  amount=-ptf.capital,
示例#8
0

def set_weights(df):
    alphas_sum = df["alpha"].sum()

    df["weight"] = np.nan
    for asset, alpha in zip(df.index.values, df["alpha"]):
        df.loc[asset, "weight"] = alpha / alphas_sum

    return df


session = Session()

assets = session.query(Asset).join(Exchange, Asset.exchanges).filter(
    Exchange.exchange_name == "poloniex",
    Asset.ticker.in_(["ETH", "BCH", "LTC"])).all()
print("Assets: ", utils.print_list(assets), "\n")

df = pd.DataFrame(data={
    "asset": assets
}, columns=["asset", "alpha"]).set_index("asset")
for asset in df.index.values:
    df.loc[asset, "alpha"] = Decimal(random.uniform(0.5, 5.0))
df.sort_values(by=["alpha"], inplace=True)

print("Random alphas: ", df)

print("\n\n")

ptf = LongsOnlyPortfolio(capital=0.5)