コード例 #1
0
ファイル: bnh_example.py プロジェクト: qnt-dmitry/qnt-python
import qnt.data as qndata
import qnt.stats as qnstats
import qnt.forward_looking as qnfl
import time
from qnt.neutralization import neutralize
import datetime as dt

data = qndata.load_data(tail=dt.timedelta(days=365 * 3),
                        forward_order=True,
                        dims=("time", "field", "asset"))

assets = qndata.load_assets()

print(qnstats.calc_avg_points_per_year(data))

output = data.sel(field=qndata.f.IS_LIQUID)
output = qndata.sort_and_crop_output(output)
output = neutralize(output, assets, 'industry')

output *= 1

print(output.to_pandas())
print(output[0, 0].item())

print(qnstats.calc_slippage(data).to_pandas()[13:])

stat2 = qnstats.calc_stat(data, output, slippage_factor=0.05, per_asset=True)
# ss = qnstats.calc_stat(data, output, max_periods=252 * 3, slippage_factor=0.05, per_asset=True)

print(
    stat2.sel(field=[  # qnstats.stf.RELATIVE_RETURN,
コード例 #2
0
    v = v * volume
    s = np.nancumsum(v)
    s[np.isnan(v)] = np.nan
    return s


def obv(close: nda.NdType, volume: nda.NdType) -> nda.NdType:
    return nda.nd_universal_adapter(obv_np_1d, (close, volume), ())


if __name__ == '__main__':
    from qnt.data import load_data, load_assets, ds
    from qnt.xr_talib import OBV
    import time

    assets = load_assets()
    ids = [i['id'] for i in assets[0:2000]]

    data = load_data(assets=ids,
                     dims=(ds.TIME, ds.ASSET, ds.FIELD),
                     forward_order=True)

    t1 = time.time()
    obv1 = OBV(data)
    t2 = time.time()
    obv2 = obv(data.sel(field='close'), data.sel(field='vol'))
    t3 = time.time()
    obv3 = obv(
        data.sel(field='close').to_pandas(),
        data.sel(field='vol').to_pandas())
    t4 = time.time()
コード例 #3
0
        print("init")

    def step(self, data):
        assets = data.sel(**{ds.FIELD: f.OPEN})
        assets = assets.where(
            data.sel(**{ds.FIELD: f.IS_LIQUID}) > 0)  # liquidity check
        assets = assets.isel(**{ds.TIME: 0})
        assets = assets.dropna(ds.ASSET)
        assets = assets.coords[ds.ASSET]
        pct = 1. / max(len(assets), 1)
        return xr.DataArray(np.full([len(assets)], pct, dtype=np.float64),
                            dims=[ds.ASSET],
                            coords={ds.ASSET: assets})


assets = load_assets(min_date='2018-01-01')
print(len(assets))
ids = ["NASDAQ:AAPL", "NASDAQ:AMZN", "NASDAQ:FB", "NASDAQ:GOOG"]
data = load_data(assets=ids,
                 min_date='2015-01-01',
                 dims=(ds.TIME, ds.ASSET, ds.FIELD))

output = test_strategy(data, SimpleStrategy())

write_output(output)

RRo = calc_relative_return(data, output)

print(RRo.mean())

RRn = calc_relative_return(data, output)