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
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
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)
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)
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
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):
#!/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'个股持仓中位数(%)'
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)
# -*- 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=
# -*- 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 = ''
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())
# -*- 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]):
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])
@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:
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)
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",
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)