Beispiel #1
0
def _get_share_filename(share, extension=None):
    _check_type(share,
                bb.Share,
                raise_err=True,
                expected_type_name='bulbea.Share')

    if extension is not None:
        _check_str(extension, raise_err=True)

    source = share.source
    ticker = share.ticker

    start = _get_datetime_str(share.data.index.min(), format_='%Y%m%d')
    end = _get_datetime_str(share.data.index.max(), format_='%Y%m%d')

    filename = '{source}_{ticker}_{start}_{end}'.format(source=source,
                                                        ticker=ticker,
                                                        start=start,
                                                        end=end)

    if extension:
        filename = '{filename}.{extension}'.format(filename=filename,
                                                   extension=extension)

    return filename
Beispiel #2
0
def _get_share_filename(share, extension = None):
    _check_type(share, bb.Share, raise_err = True, expected_type_name = 'bulbea.Share')

    if extension is not None:
        _check_str(extension, raise_err = True)

    source    = share.source
    ticker    = share.ticker

    start     = _get_datetime_str(share.data.index.min(), format_ = '%Y%m%d')
    end       = _get_datetime_str(share.data.index.max(), format_ = '%Y%m%d')

    filename = '{source}_{ticker}_{start}_{end}'.format(
        source = source,
        ticker = ticker,
        start  = start,
        end    = end
    )

    if extension:
        filename = '{filename}.{extension}'.format(
            filename  = filename,
            extension = extension
        )

    return filename
Beispiel #3
0
def split(share,
          attrs     = 'Close',
          window    = 0.01,
          train     = 0.60,
          shift     = 1,
          normalize = False,
          provider = 'quandl'):
    '''
    :param attrs: `str` or `list` of attribute names of a share, defaults to *Close* attribute
    :type attrs: :obj: `str`, :obj:`list`
    '''
    _check_type(share, type_ = bb.Share, raise_err = True, expected_type_name = 'bulbea.Share')
    _check_iterable(attrs, raise_err = True)
    _check_int(shift, raise_err = True)
    _check_real(window, raise_err = True)
    _check_real(train, raise_err = True)

    _validate_in_range(window, 0, 1, raise_err = True)
    _validate_in_range(train, 0, 1, raise_err = True)

    if(provider == 'alphavantage'):
        df = pd.DataFrame(share.data)
        data = df.ix[3]
        data = pd.to_numeric(data)
    else:
        data = share.data[attrs]

    length = len(share)

    window = int(np.rint(length * window))
    offset = shift - 1

    splits = np.array([data[i if i is 0 else i + offset: i + window] for i in range(length - window)])

    if normalize:
        splits = np.array([_get_cummulative_return(split) for split in splits])

    size   = len(splits)
    split  = int(np.rint(train * size))

    train  = splits[:split,:]
    test   = splits[split:,:]

    Xtrain, Xtest = train[:,:-1], test[:,:-1]
    ytrain, ytest = train[:, -1], test[:, -1]

    return (Xtrain, Xtest, ytrain, ytest)
Beispiel #4
0
def split(share,
          attrs     = 'Close',
          window    = 0.01,
          train     = 0.60,
          shift     = 1,
          normalize = False):
    '''
    :param attrs: `str` or `list` of attribute names of a share, defaults to *Close* attribute
    :type attrs: :obj: `str`, :obj:`list`
    '''
    _check_type(share, type_ = bb.Share, raise_err = True, expected_type_name = 'bulbea.Share')
    _check_iterable(attrs, raise_err = True)
    _check_int(shift, raise_err = True)
    _check_real(window, raise_err = True)
    _check_real(train, raise_err = True)

    _validate_in_range(window, 0, 1, raise_err = True)
    _validate_in_range(train, 0, 1, raise_err = True)

    data   = share.data[attrs]

    length = len(share)

    window = int(np.rint(length * window))
    if window <= 1: window = 2
    offset = shift - 1

    splits = np.array([data[i if i is 0 else i + offset: i + window] for i in range(length - window)])
    print("{} {}".format(window,len(splits)))
    if normalize:
        splits = np.array([_get_cummulative_return(split) for split in splits])

    size   = len(splits)
    split  = int(np.rint(train * size))

    train  = splits[:split,:]
    test   = splits[split:,:]

    Xtrain, Xtest = train[:,:-1], test[:,:-1]
    ytrain, ytest = train[:, -1], test[:, -1]

    return (Xtrain, Xtest, ytrain, ytest)
Beispiel #5
0
def split(share,
          attrs     = 'Close',
          window    = 0.01,
          train     = 0.60,
          shift     = 1,
          normalize = False):
    '''
    :param attrs: `str` or `list` of attribute names of a share, defaults to *Close* attribute
    :type attrs: :obj: `str`, :obj:`list`
    '''
    _check_type(share, type_ = bb.Share, raise_err = True, expected_type_name = 'bulbea.Share')
    _check_iterable(attrs, raise_err = True)
    _check_int(shift, raise_err = True)
    _check_real(window, raise_err = True)
    _check_real(train, raise_err = True)

    _validate_in_range(window, 0, 1, raise_err = True)
    _validate_in_range(train, 0, 1, raise_err = True)

    data   = share.data[attrs]

    length = len(share)

    window = int(np.rint(length * window))
    offset = shift - 1

    splits = np.array([data[i if i is 0 else i + offset: i + window] for i in range(length - window)])

    if normalize:
        splits = np.array([_get_cummulative_return(split) for split in splits])

    size   = len(splits)
    split  = int(np.rint(train * size))

    train  = splits[:split,:]
    test   = splits[split:,:]

    Xtrain, Xtest = train[:,:-1], test[:,:-1]
    ytrain, ytest = train[:, -1], test[:, -1]

    return (Xtrain, Xtest, ytrain, ytest)
Beispiel #6
0
def test__check_type():
    with pytest.raises(TypeError):
        _check_type('foo', type_ = int, raise_err = True, expected_type_name = 'str')
    with pytest.raises(TypeError):
        _check_type(12345, type_ = str, raise_err = True, expected_type_name = 'int')

    assert _check_type('bar', type_ = str) == True
    assert _check_type('foo', type_ = int) == False