Navigation

    Quantiacs Community

    • Register
    • Login
    • Search
    • Categories
    • News
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. newbiequant96
    3. Best
    N
    • Profile
    • Following 0
    • Followers 0
    • Topics 4
    • Posts 10
    • Best 2
    • Groups 0
    • Blog

    Best posts made by newbiequant96

    • Is it possible to combine stocks with crypto?

      Hello,

      I'm testing combining crypto with stocks for Q21 but I'm getting an error. We hope to help.

      Thank you.

      Below is my code

      # Import basic libraries.
      import xarray as xr
      import pandas as pd
      import numpy as np
      # Import Quantiacs libraries.
      import qnt.data    as qndata  # load and manipulate data
      import qnt.output as qnout   # manage output
      import qnt.backtester as qnbt # backtester
      import qnt.stats   as qnstats # statistical functions for analysis
      import qnt.graph   as qngraph # graphical tools
      import qnt.ta      as qnta    # indicators library
      import qnt.xr_talib as xr_talib   # indicators library
      
      def load_data(period):
          futures = qndata.futures.load_data(tail=period).isel(asset=0)
          stocks  = qndata.stocks.load_ndx_data(tail=period)
          crypto= qndata.crypto.load_data(tail=period)
          return {"futures": futures, "stocks": stocks, "crypto": crypto}, futures.time.values
      
      
      
      def window(data, max_date: np.datetime64, lookback_period: int):
          min_date = max_date - np.timedelta64(lookback_period, "D")
          return {
              "futures": data["futures"].sel(time=slice(min_date, max_date)),
              "stocks":  data["stocks"].sel(time=slice(min_date, max_date)),
              "crypto":  data["crypto"].sel(time=slice(min_date, max_date)),
          }
      
      
      def strategy(data):
          close_futures = data["crypto"].sel(field="close")
          close_stocks  = data["stocks"].sel(field="close")
          sma20 = qnta.sma(close_futures, 20).isel(time=-1)
          sma20_stocks = qnta.sma(close_stocks, 20).isel(time=-1)
          is_liquid = data["stocks"].sel(field="is_liquid").isel(time=-1)
          weights = xr.where(sma20 < sma20_stocks, 1, -1)
          weights = weights * is_liquid 
          weights = weights / 100.0
          return weights
      
      qnbt.backtest(
          competition_type= "stocks_nasdaq100",
          load_data= load_data,
          lookback_period= 90,
          start_date= "2006-01-01",
          strategy= strategy,
          window= window
      )
      

      2f2a9656-20d0-46e7-9a67-e3bd0d46a75f-image.png

      posted in Support
      N
      newbiequant96
    • How to filter ticker futures by sharpe

      Hello,

      I'm trying to apply ticker filters from stocks to futures, but it doesn't work. Below is my code

      For stock:

      import qnt.stats as qnstats
      
      # data = qndata.stocks.load_ndx_data(tail = 17*365, dims = ("time", "field", "asset"))
      data = qndata.stocks.load_ndx_data(min_date="2005-01-01")
      def get_best_instruments(data, weights, top_size):
          # compute statistics:
          stats_per_asset = qnstats.calc_stat(data, weights, per_asset=True)
          # calculate ranks of assets by "sharpe_ratio":
          ranks = (-stats_per_asset.sel(field="sharpe_ratio")).rank("asset")
          # select top assets by rank "top_period" days ago:
          top_period = 1
          rank = ranks.isel(time=-top_period)
          top = rank.where(rank <= top_size).dropna("asset").asset
      
          # select top stats:
          top_stats = stats_per_asset.sel(asset=top.values)
      
          # print results:
          print("SR tail of the top assets:")
          display(top_stats.sel(field="sharpe_ratio").to_pandas().tail())
      
          print("avg SR = ", top_stats[-top_period:].sel(field="sharpe_ratio").mean("asset")[-1].item())
          display(top_stats)
          return top_stats.coords["asset"].values
      
      get_best_instruments(data, weight, 15)
      

      747ae905-59df-4547-9c44-907349ed5784-image.png

      For futures

      import qnt.stats as qnstats
      
      # data = qndata.stocks.load_ndx_data(tail = 17*365, dims = ("time", "field", "asset"))
      data = qndata.futures_load_data(min_date="2005-01-01")
      def get_best_instruments(data, weights, top_size):
          # compute statistics:
          stats_per_asset = qnstats.calc_stat(data, weights, per_asset=True)
          # calculate ranks of assets by "sharpe_ratio":
          ranks = (-stats_per_asset.sel(field="sharpe_ratio")).rank("asset")
          # select top assets by rank "top_period" days ago:
          top_period = 1
          rank = ranks.isel(time=-top_period)
          top = rank.where(rank <= top_size).dropna("asset").asset
      
          # select top stats:
          top_stats = stats_per_asset.sel(asset=top.values)
      
          # print results:
          print("SR tail of the top assets:")
          display(top_stats.sel(field="sharpe_ratio").to_pandas().tail())
      
          print("avg SR = ", top_stats[-top_period:].sel(field="sharpe_ratio").mean("asset")[-1].item())
          display(top_stats)
          return top_stats.coords["asset"].values
      
      get_best_instruments(data, weight, 15)
      

      a97f8908-4213-41d6-b519-de4b958e916f-image.png

      Please help me. I hope you can provide an example on how to filter ticker futures by sharpe similar to the get_best_instruments function. Thank you

      @support @Vyacheslav_B

      posted in Support
      N
      newbiequant96
    • Documentation
    • About
    • Career
    • My account
    • Privacy policy
    • Terms and Conditions
    • Cookies policy
    Home
    Copyright © 2014 - 2021 Quantiacs LLC.
    Powered by NodeBB | Contributors