예제 #1
0
def tdaysoffset_uqer(tdate, N, fre, offset):
    client = uqer.Client(
        token='811e6680b27759e045ed16e2ed9b408dc8a0cbffcf14e4bb755144dd45fa5ea0'
    )
    all_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",
                                  beginDate='19000101',
                                  endDate='20181231',
                                  field=u"",
                                  pandas="1")
    all_day = all_day[all_day.isOpen == 1]
    all_day = all_day.reset_index(drop=True)
    all_day['calendarDate'] = pd.to_datetime(all_day['calendarDate'],
                                             format='%Y-%m-%d')
    all_day['calendarDate'] = all_day['calendarDate'].apply(
        lambda x: x.strftime("%Y%m%d"))

    tdate_index = all_day[all_day.calendarDate <= tdate]
    tdate_index = len(tdate_index) - 1
    if fre == 'day':
        t_index = tdate_index + N * offset
    elif fre == 'week':
        t_index = tdate_index + N * 5 * offset

    if t_index > len(all_day) - 1:
        t = None
    elif t_index < 0:
        t = None
    else:
        t = all_day.ix[t_index, 'calendarDate']
    return t
예제 #2
0
def uqer1(start, end, fre='day'):
    client = uqer.Client(
        token='811e6680b27759e045ed16e2ed9b408dc8a0cbffcf14e4bb755144dd45fa5ea0'
    )
    trade_day = DataAPI.TradeCalGet(exchangeCD=u"XSHG",
                                    beginDate=start,
                                    endDate=end,
                                    field=u"",
                                    pandas="1")

    trade_day = trade_day[trade_day.isOpen == 1][[
        'calendarDate', 'isWeekEnd', 'isMonthEnd'
    ]]

    if fre == 'month':
        df = trade_day[trade_day.isMonthEnd == 1]['calendarDate']
    elif fre == 'week':
        df = trade_day[trade_day.isWeekEnd == 1]['calendarDate']
    elif fre == 'day':
        df = trade_day['calendarDate']
    elif fre == '2week':
        df = trade_day[trade_day.isWeekEnd == 1][['calendarDate', 'isWeekEnd']]
        df = df[1::2]
        df = df['calendarDate']
    else:
        print 'change fre parameter'
        raise ValueError
    df.index = range(len(df))
    df = pd.DataFrame(df)
    df['calendarDate'] = pd.to_datetime(df['calendarDate'], format='%Y-%m-%d')
    df['calendarDate'] = df['calendarDate'].apply(
        lambda x: x.strftime("%Y%m%d"))
    df = df['calendarDate']
    df.name = 'trade_day'
    return df
예제 #3
0
 def __init__(self, **kwargs):
     self._conn = kwargs.get('conn', None)
     self._uqer_token = kwargs.get('uqer_token', None)
     is_uqer_init = kwargs.get('is_uqer', 0)
     if is_uqer_init == 0:
         #uqer初始化时连接互联网,故放此处引用
         import uqer
         uqer.Client(token=self._uqer_token)
예제 #4
0
 def __init__(self, inner_api=True):
     self.inner_api = inner_api
     self.session = requests.session()
     adapter = requests.adapters.HTTPAdapter(pool_connections=100,
                                             pool_maxsize=100)
     if not inner_api:
         self.session.mount('https://api.wmcloud.com:443', adapter)
         self.token = TOKEN
     else:
         self.session.mount('http://vip.newapi.wmcloud.com/', adapter)
     self.client = uqer.Client(token=TOKEN)
예제 #5
0
def get_sw_industry_weight(industry_component):
    client = uqer.Client(username='******', password='******')
    ticker = list(industry_component['Code'].apply(lambda x: str(x).zfill(6)))
    df = uqer.DataAPI.EquIndustryGet(industryVersionCD="010303",
                                     ticker=ticker,
                                     field="ticker,industryName1",
                                     pandas="1")
    df.rename(columns={
        'ticker': 'Code',
        'industryName1': 'industry'
    },
              inplace=True)
    df['Code'] = df['Code'].apply(int)
    df = industry_component.merge(df, on='Code', how='left')
    res = df.groupby('industry')['weight'].sum().reset_index()
    res['industry'] = res['industry'].apply(lambda x: industry_mapping[x])
    res = res.merge(pd.DataFrame(ind_col, columns=['industry']),
                    on='industry',
                    how='outer').fillna(0)
    res = res.set_index('industry').loc[ind_col].reset_index()
    return res
예제 #6
0
uqer.DataAPI.api_base.timeout = 300

start_date = dt.datetime(2010, 1, 1)
dag_name = 'update_uqer_data_postgres'

default_args = {
    'owner': 'wegamekinglc',
    'depends_on_past': True,
    'start_date': start_date
}

dag = DAG(dag_id=dag_name,
          default_args=default_args,
          schedule_interval='0 6 * * 1,2,3,4,5')

_ = uqer.Client(token='')
engine = sqlalchemy.create_engine('')


def process_date(ds):
    alpha_logger.info("Loading data at {0}".format(ds))
    this_date = dt.datetime.strptime(ds, '%Y-%m-%d')
    ref_date = this_date.strftime('%Y%m%d')
    return ref_date, this_date


def format_data(df, format='%Y%m%d'):
    df['trade_date'] = pd.to_datetime(df['trade_date'], format=format)


def check_holiday(this_date):
예제 #7
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 24 11:00:39 2020

@author: terrystanley
"""

import uqer
from uqer import DataAPI
SDK = "9279251a79dffd5c01c6e5da12bd0b09d622fcff6af65c883712d98d5b6136ff"
client = uqer.Client(token=SDK)

from WindPy import w


class ETF_recognition:
    '''识别每日成分券中的涨跌停、波动率和换手率
    Attributes:
        tradeDate: str, 交易日期
        consTicker: list, 成分券信息
        consPrice: dict{str: Series}, 成分券价格
        consMaxUpOrDown: dict{str: int}, 涨跌停       
    '''
    def __init__(self, consTicker, tradeDate):
        self.tradeDate = tradeDate
        self.consTicker = consTicker

        self.consPrice = {}
        self.consMaxUpOrDown = {}
        self.consTurn = {}
# -*- coding: utf-8 -*-
from functools import reduce
import pandas as pd
import numpy as np
import os
# 连接wind
from WindPy import *

w.start()
# 连接通联账号
import uqer
from uqer import DataAPI

client = uqer.Client(
    token='b52e04ea8d938a5a756e52c755cb0432d2933ed2bf10b80e828fca6a76ea5ded')

path = u'C:\\Users\\yz283\\Desktop\\ruitian'
write_file = u'C:\\Users\\yz283\\Desktop\\ruitian.xlsx'

# 取出文件夹下所有文件的名称
filename = pd.DataFrame()
filename['filename'] = os.listdir(path)
l = len(filename)
IndustrySummary = pd.DataFrame()
PESummary = pd.DataFrame(
    index=['<0', '0-15', '15-25', '25-40', '40-50', '50-100', '>100'])
MVSummary = pd.DataFrame(index=[
    '<100', '100-150', '150-200', '200-250', '250-400', '400-700', '>700'
])
Summary = pd.DataFrame(index=[
    u'股票个数', u'仓位(%)', "PE(TTM)", "PB", u'市值(亿)', u'个股最大持仓(%)', u'个股持仓中位数(%)'
예제 #9
0
import math
import uqer
from uqer import DataAPI
import seaborn as sns
from utils.logger import Logger
import math
from data_processing.hf_features import get_features_by_date
from model_processing.lstm_clf_model import predict_with_lstm
from data_processing.gen_sample import get_samples
from model_processing.lstm_clf_model import lstm
from account_info.get_account_info import get_account_info

sns.set()
logger = Logger(log_level='DEBUG').get_log()

uqer_client = uqer.Client(token=get_account_info().get('uqer_token'))

MIN_VOL = 1000
SAMPLE_MODE = 2
SAMPLE_NUM = 1
TEST_DATE = '2019-12-02'
MKT_TICKERS = ['399001']


def get_market_impacts():
    '''
    return tmp impact and perm impact
    '''
    return 0.001, 0.002

uqer.DataAPI.api_base.timeout = 300

start_date = dt.datetime(2018, 5, 4)
dag_name = 'update_uqer_data_postgres'

default_args = {
    'owner': 'wegamekinglc',
    'depends_on_past': True,
    'start_date': start_date
}

dag = DAG(dag_id=dag_name,
          default_args=default_args,
          schedule_interval='0 1 * * 1,2,3,4,5')

_ = uqer.Client(token=os.environ['DATAYES_TOKEN'])
engine = sqlalchemy.create_engine(os.environ['DB_URI'])
alpha_engine = SqlEngine(os.environ['DB_URI'])


def process_date(ds):
    alpha_logger.info("Loading data at {0}".format(ds))
    this_date = dt.datetime.strptime(ds, '%Y-%m-%d')
    ref_date = this_date.strftime('%Y%m%d')
    return ref_date, this_date


def format_data(df, format='%Y%m%d'):
    df['trade_date'] = pd.to_datetime(df['trade_date'], format=format)

예제 #11
0
# -*- coding: utf-8 -*-
"""
@author: 陈祥明
从uqer导入全部股票历史数据
"""
import uqer
import sys
sys.path.append(r'D:\CXM\Project\SQLLINK')
sys.path.append(r'D:\CXM\Project\ScenarioAnalysis')
import SASQL
import Constant

# 连接uqer
uqer.Client(token=Constant.token)

#
dbsa = SASQL.ScenarioAnalysis()

date = Constant.date

# 清空原有表内数据
query = "delete from HistData_Stock where Date='{}'".format(date)
dbsa.ExecNonQuery(query)

col_query = "select name from syscolumns where id = object_id('{}')".format(
    'HistData_Stock')
cols = dbsa.ExecQuery(col_query)

df = uqer.DataAPI.MktEqudGet(
    tradeDate=date,
    field=
예제 #12
0
# -*- coding: utf-8 -*-
# @time      : 2018/12/26 14:24
# @author    : [email protected]
# @file      : data_download.py

from quant_models.data_processing.features_calculation import get_idx_cons
from quant_models.data_processing.data_fetcher import DataFetcherDB
from quant_models.utils.date_utils import get_all_trading_dates
from quant_models.utils.io_utils import load_json_file
import pprint
import pandas as pd
import uqer
from uqer import DataAPI
from quant_models.utils.date_utils import datetime_delta

c = uqer.Client(token="cae4e8fdd64a6cb9c68e9014ab04fdd823da6c41a77417ce6c8dbdf31db35541")

data_fetcher = DataFetcherDB()


def get_idx_cons_dy(security_id='', index_date=''):
    search_id_mapping = {'000001.XSHG': 1, '000300.XSHG': 1782}
    rows, desc = data_fetcher.get_idx_cons(search_id_mapping.get(security_id))
    ret = []
    code_to_dates = {}
    for item in rows:
        sec_id = '{0}.{1}'.format(item[0], item[1])
        try:
            start_date = item[3].strftime('%Y%m%d')
        except Exception as ex:
            start_date = ''
예제 #13
0
        self.update_destdb('daily_high_frequency', trend_strength)
        '''
        improved_reversal = improved_reversal_calc_factor(begin_date, end_date, 
                               windows=4).merge(stock_df, on=['code']).drop(['code'],axis=1).rename(columns={'secID':'code'})
        self.update_destdb('daily_high_frequency', improved_reversal)
        
        
        hf_volatility = hf_volatility_calc_factor(begin_date, end_date, 
                   windows=3).merge(stock_df, on=['code']).drop(['code'],axis=1).rename(columns={'secID':'code'})
        self.update_destdb('daily_high_frequency', hf_volatility)
        
        volume_price_corr = volume_price_corr_calc_factor(begin_date, end_date,
                   windows=3).merge(stock_df, on=['code']).drop(['code'],axis=1).rename(columns={'secID':'code'})
        self.update_destdb('daily_high_frequency', volume_price_corr)
       
        volume_ratio = volume_ratio_calc_factor(begin_date, end_date).merge(
            stock_df, on=['code']).drop(['code'],axis=1).rename(columns={'secID':'code'})
        grouped = volume_ratio.groupby(['bar_time'])
        for k, g in grouped:
            new_columns = str(k).replace(':','') + '_volume_ratio'
            g = g.rename(columns={'ratio': new_columns})[['trade_date','code',new_columns]]
            self.update_destdb('daily_high_frequency', g)
        '''
        print('----->')


if __name__ == '__main__':
    client = uqer.Client(token=config.UQUER_TOKEN)
    factor_proess = FactorProess()
    print(factor_proess.load_stock())
예제 #14
0
# -*- coding: utf-8 -*-
"""
@author: 陈祥明
从uqer导入全部历史数据
"""
import uqer
from SQLLINK import MSSQL
from ScenarioAnalysis import Constant

# 连接uqer
uqer.Client(token='f1b9bea1d0b4e489c5ab9b69c3e2326a1bee6057af858067dbd1546453f428b2')

#
dbsa = MSSQL.DB_ScenarioAnalysis()
today = '20180821'#Constant.date

# 清空原有表内数据
query = "delete from HistData_Stock"
dbsa.ExecNonQuery(query)

# 获取股票代码
query0 = "select InstrumentID from InstrumentInfo_Stock"
Stock_Info = dbsa.ExecQuery(query0)



# 获取A股历史数据并写入数据库
for i in Stock_Info:
    a = uqer.DataAPI.MktEqudGet(ticker=i[0], beginDate=u"20150101", endDate=today, field="tradeDate,ticker,openPrice,highestPrice,lowestPrice,closePrice,chgPct", pandas="1")
    print("查询代码为" + i[0] + "股票数据成功")
    for j in range(0, a.shape[0]):
예제 #15
0
                                                     tradeDate=str(date),
                                                     exchangeCD=index_id[-4:])
    if not os.path.exists(index_data_save_path + "tick/" + index_id[:6]):
        os.makedirs(index_data_save_path + "tick/" + index_id[:6])
    index_tick.to_csv(index_data_save_path + "tick/" + index_id[:6] + "/" +
                      str(date) + ".csv")


def save_all_index_tick_data(index_list, date):
    for i in index_list:
        save_index_tick_data(i, date=date)


if __name__ == "__main__":
    client = uqer.Client(
        token='5e834b742dd1f7d2822b835fdf91088377b8630152426222813c4929cdccfa69'
    )
    stock_data_save_path = "D:/hjq/data/stocks/"
    future_data_save_path = "D:/hjq/data/futures/"
    index_data_save_path = "D:/hjq/data/indexs/"
    opt_data_save_path = "D:/hjq/data/opts/"
    date = datetime.datetime.now().strftime("%Y%m%d")

    deal_date_df = pd.read_excel("C:/Users/thinkcentre/Desktop/deal_date.xlsx")
    deal_date = deal_date_df.values

    date_use = []
    for i in np.arange(len(deal_date)):
        deal_date_str = str(deal_date[i][0])
        date_use.append(deal_date_str[:4] + deal_date_str[5:7] +
                        deal_date_str[8:10])
예제 #16
0
@time: 20-2-22 下午3:10
@desc:
'''

import os
import pprint
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import uqer
from uqer import DataAPI
import seaborn as sns

sns.set()

uqer_client = uqer.Client(
    token="26356c6121e2766186977ec49253bf1ec4550ee901c983d9a9bff32f59e6a6fb")


def get_samples(mode=0, *arge, **kwargs):
    ''' mode 对应的测试集
        0. 每种规模分别取前N,默认000300-沪深300,000001-上证综指,000905-中证500,399005-深证中小板指,399006-创业板指
        1. 每个行业龙头,主要市值排行
        2. 流动性看:成交量活跃度,按换手率,和成交量日间日内波动
        3.  异动股,日间(短期)、日内
        4.  风格: 动量、反转
        5. 对每种指数,300,500
    '''
    total_num = kwargs.get('total_num') or 100
    start_date = "20191201"
    end_date = "20191231"
    if mode == 0:
예제 #17
0
 def __init__(self, **kwargs):
     self._conn = kwargs.get('conn', None)
     self._uqer_token = kwargs.get('uqer_token', None)
     is_uqer_init = kwargs.get('is_uqer', 0)
     if is_uqer_init == 0:
         uqer.Client(token=self._uqer_token)
예제 #18
0
import alphalens
from alphalens import utils
import pandas as pd
import os
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
from pylab import mpl  #画图显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

import uqer
from uqer import DataAPI
client = uqer.Client(
    token='811e6680b27759e045ed16e2ed9b408dc8a0cbffcf14e4bb755144dd45fa5ea0')

import sys
sys.path.append("..")
from tools import get_tradeDay
reload(sys)

start = '20080401'
end = '20170510'

df_index = DataAPI.MktIdxdGet(tradeDate=u"",
                              indexID=u"",
                              ticker=u"000300",
                              beginDate=start,
                              endDate=end,
                              exchangeCD=u"XSHE,XSHG",
예제 #19
0
 def __init__(self, **kwargs):
     self._conn = kwargs.get('engine', None)
     self._uqer_token = kwargs.get('uqer_token', None)
     is_uqer_init = kwargs.get('is_uqer', 0)
     if is_uqer_init == 0 and self._uqer_token is not None:
         uqer.Client(token=self._uqer_token)