def contractMap_mod_domain_utc(): rq.init() # 为contractMap文件增加life_utc列 cm = pd.read_csv( 'D:\\002 MakeLive\DataCollection\public data\\contractMap.csv') domain_start_utc_list = [] domain_end_utc_list = [] cm['domain_start_date'] = cm['domain_start_date'].str.replace('\\', '-') cm['domain_end_date'] = cm['domain_end_date'].str.replace('\\', '-') cm['listed_date'] = cm['listed_date'].str.replace('\\', '-') cm['maturity_date'] = cm['maturity_date'].str.replace('\\', '-') for n, rows in cm.iterrows(): first_date = rows['domain_start_date'] predate = get_previous_trading_date(first_date, country='cn') domain_start_utc = int( time.mktime( time.strptime( predate.strftime("%Y-%m-%d") + ' 21:00:00', '%Y-%m-%d %H:%M:%S'))) domain_end_utc = int( time.mktime( time.strptime(rows['domain_end_date'] + ' 16:00:00', '%Y-%m-%d %H:%M:%S'))) domain_start_utc_list.append(domain_start_utc) domain_end_utc_list.append(domain_end_utc) cm['domain_start_utc'] = domain_start_utc_list cm['domain_end_utc'] = domain_end_utc_list #cm.drop('Unnamed: 0.1', axis=1, inplace=True) #cm['Unnamed: 0']=range(cm.shape[0]) cm.to_csv('contractMap2.csv', index=False) pass
def auth(self, **kwargs): if self.isAuthed: return rq.init(**kwargs) self.isAuthed = True print("Rqdata has been authorized.")
def prep_download(self): # self.start = datetime(2011, 1, 1) self.end = datetime.now().date() # read csv commodities futures list with open('cf_list.csv', 'r') as f: reader = csv.reader(f) cf_list = list(reader) rq.init() today = rq.get_latest_trading_date() prev_trading_day = rq.get_previous_trading_date(today, 1, market='cn') for instrument in cf_list: # check if changed the dominant contract for the latest trading day today_dominant = rq.futures.get_dominant(instrument[1], today) prev_day_dominant = rq.futures.get_dominant( instrument[1], prev_trading_day) if today_dominant[today] == prev_day_dominant[prev_trading_day]: self.start = prev_trading_day elif today_dominant[today] != prev_day_dominant[prev_trading_day]: self.start = datetime(2011, 1, 1) print( f"品种 {instrument[1]} 的主力合约即日起从 {prev_day_dominant[prev_trading_day]} 换到 {today_dominant[today]}" ) else: print("####### 检查主力合约过程中出错,请手动debug!") if self.download_full == True: self.start = datetime(2011, 1, 1) self.rq_download(instrument[0], '1m', self.start, self.end) self.rq_download(instrument[0], 'd', self.start, self.end)
def before_trading(context, bar_dict): rqd.init( 'license', 'BZPntqmgrLH4lKAOjx671eO91m87PaKGRLpXoldWGCf-3Skw8oZ_VnjVSA-M4fRtcuye-HfX8velChxb0iLxDtpzt9DeTCVJsdSYOKQ4' 'grrpqge2IYBUMKmrpFqMiuI6ZXw5d9eje7Qtu28Z-wgDKeWpoI4K0MNYf2aPt_ejSsM=MABNzwICqZ_LX_sk549IAzaYHdtWgAJwSkyRAe' 'DQUq992HgGBL1nC_WicztRvUqa-WiwR-_cGj8-vfFakdVXqtNx9tapTpSuM5PKhfTfDJqOD7HH3jr2KpgI_IX4gNDbKT0a4W9mCKz6qka7' 'KDTj_TlCpdV5_lIfAd7UaIgm9pc=', ('115.159.129.195', 443), proxy_info=('http', '172.20.0.2', 8086, 'yuxiaoqi', '0814xqYu')) trade_date = context.now.strftime('%Y-%m-%d') # print(trade_date) context.stock_lst = index_components('000300.XSHG', trade_date) # print(context.stock_lst) # factor_ret = rqd.get_factor_exposure(id_or_symbols=context.stock_lst, start_date=trade_date, # end_date=trade_date, # factors=['momentum']) # indexes = list(factor_ret.index) # values = list(factor_ret['momentum']) # # context.cached = defaultdict(list) # for idx, val in enumerate(indexes): # book_id, date = val # factor = values[idx] # context.cached[date.strftime('%Y%m%d')].append((book_id, factor)) query_fundamental(context) context.b_price = get_price('000300.XSHG', start_date=trade_date, end_date=trade_date, fields='close').values[0] context.mtm = context.b_price * 300
def update_bundle(data_bundle_path, rqdatac_uri, compression, concurrency): try: import rqdatac except ImportError: click.echo( _('rqdatac is required to update bundle. ' 'you can visit https://www.ricequant.com/welcome/rqdata to get rqdatac, ' 'or use "rqalpha download-bundle" to download monthly updated bundle.' )) return 1 try: init_rqdatac_env(rqdatac_uri) rqdatac.init() except ValueError as e: click.echo(_('rqdatac init failed with error: {}').format(e)) return 1 if not os.path.exists(os.path.join(data_bundle_path, 'bundle')): click.echo( _('bundle not exist, use "rqalpha create-bundle" command instead')) return 1 from rqalpha.data.bundle import update_bundle as update_bundle_ update_bundle_(os.path.join(data_bundle_path, 'bundle'), False, compression, concurrency)
def __init__(self, isSub=False): if not isSub: rq.init() else: rq.reset() self.columns = ["close", "open", "high", "low", "volume"] self.tickColumns = [ "last", "open", "high", "low", "volume", "asks", "ask_vols", "bids", "bid_vols" ] self.HisKline = None self.HisKlineTime = None self.currentKline = {} self.preKline = None self.validDate = None self.kPeriod = 1 self.TimeArea = [] self.TimeDiffArea = [] self.indexCodeList, self.indexMcodes = [], [] # 指数期货对应的行情代码 self.indexMap = {} self.HisKlineTime = {} self.HisKline = {} # tick 触发持续状态,进程结束时返回false,用于终止ctp窗口 self.tickStatus = True
def for_test(mongo_url, db, _days, implied): rqdatac.init(uri='tcp://*****:*****@dev:16010') test = 'test' '''find n trading days before today''' my_mongo = CustomizedMongo(mongo_url, db, test) trading_days = list(get_previous_trading_days_customized(int(_days))) try: print('data_processing') data_processing(my_mongo, trading_days, implied, upsert=True) except ValueError: print('today\'s data is not reachable yet')
def init_rqdatac(rqdatac_uri): try: import rqdatac except ImportError: return try: init_rqdatac_env(rqdatac_uri) rqdatac.init() except Exception as e: system_log.warn(_('rqdatac init failed, some apis will not function properly: {}').format(str(e)))
def get_barra_exposure(stock_list, date): rqdatac.init('rice', 'rice', ('192.168.10.64', 16008)) style_factors = [ 'CNE5S_BETA', 'CNE5S_MOMENTUM', 'CNE5S_SIZE', 'CNE5S_EARNYILD', 'CNE5S_RESVOL', 'CNE5S_GROWTH', 'CNE5S_BTOP', 'CNE5S_LEVERAGE', 'CNE5S_LIQUIDTY', 'CNE5S_SIZENL' ] style_exposure = rqdatac.barra.get_factor_exposure(stock_list, date, date, style_factors) style_exposure.index = style_exposure.index.droplevel('date') return style_exposure
def init_rqdatac(rqdatac_uri): try: import rqdatac except ImportError: return import warnings try: init_rqdatac_env(rqdatac_uri) with warnings.catch_warnings(record=True): rqdatac.init() except Exception as e: system_log.warn( _('rqdatac init failed, some apis will not function properly: {}'). format(str(e)))
def init_rqdatac(rqdatac_uri): try: import rqdatac except ImportError: system_log.info( _('rqdatac is not available, some apis will not function properly') ) return try: init_rqdatac_env(rqdatac_uri) rqdatac.init() except ValueError as e: system_log.warn( _('rqdatac init failed, some apis will not function properly: {}'). format(str(e)))
def get_gics_exposure(stock_list, date): rqdatac.init('rice', 'rice', ('192.168.10.64', 16008)) industry_factors = [ 'CNE5S_ENERGY', 'CNE5S_CHEM', 'CNE5S_CONMAT', 'CNE5S_MTLMIN', 'CNE5S_MATERIAL', 'CNE5S_AERODEF', 'CNE5S_BLDPROD', 'CNE5S_CNSTENG', 'CNE5S_ELECEQP', 'CNE5S_INDCONG', 'CNE5S_MACH', 'CNE5S_TRDDIST', 'CNE5S_COMSERV', 'CNE5S_AIRLINE', 'CNE5S_MARINE', 'CNE5S_RDRLTRAN', 'CNE5S_AUTO', 'CNE5S_HOUSEDUR', 'CNE5S_LEISLUX', 'CNE5S_CONSSERV', 'CNE5S_MEDIA', 'CNE5S_RETAIL', 'CNE5S_PERSPRD', 'CNE5S_BEV', 'CNE5S_FOODPROD', 'CNE5S_HEALTH', 'CNE5S_BANKS', 'CNE5S_DVFININS', 'CNE5S_REALEST', 'CNE5S_SOFTWARE', 'CNE5S_HDWRSEMI', 'CNE5S_UTILITIE' ] industry_exposure = rqdatac.barra.get_factor_exposure( stock_list, date, date, industry_factors) industry_exposure.index = industry_exposure.index.droplevel('date') return industry_exposure
def get_data(start, end, symbol, exchange, level): """ using rqdatac to make an example """ import rqdatac as rq from rqdatac import get_price, id_convert username = "******" password = "******" \ "t7AbdBZEBqRK74fIJH5vsaAfFQgl-tuB8l03axrW8cyN6-nBUho_6Y5VCRI63Mx_PN54nsQOpc1psIGEz" \ "gND8c6Y=bqMVlABkpSlrDNk4DgG-1QXNknJtk0Kkw2axvFDa0E_XPMqOcBxifuRa_DFI2svseXU-8A" \ "eLjchnTkeuvQkKh6nrfehVDiXjoMeq5sXgqpbgFAd4A5j2B1a0gpE3cb5kXb42n13fGwFaGris" \ "8-eKzz_jncvuAamkJEQQV0aLdiw=" host = "rqdatad-pro.ricequant.com" port = 16011 rq.init(username, password, (host, port)) symbol_rq = id_convert(symbol) data = get_price(symbol_rq, start_date=start, end_date=end, frequency=level, fields=None, adjust_type='pre', skip_suspended=False, market='cn', expect_df=False) origin = data.to_dict(orient='records') result = [] for x in origin: do = {} do['open_price'] = x['open'] do['low_price'] = x['low'] do['high_price'] = x['high'] do['close_price'] = x['close'] do['datetime'] = datetime.strptime(str(x['trading_date']), "%Y-%m-%d %H:%M:%S") do['symbol'] = symbol do['local_symbol'] = symbol + "." + exchange do['exchange'] = exchange result.append(do) return result
def create_bundle(data_bundle_path, rqdatac_uri, compression, concurrency): """create bundle using rqdatac""" try: import rqdatac except ImportError: click.echo( _('rqdatac is required to create bundle. ' 'you can visit https://www.ricequant.com/welcome/rqdata to get rqdatac, ' 'or use "rqalpha download-bundle" to download monthly updated bundle.' )) return 1 try: init_rqdatac_env(rqdatac_uri) rqdatac.init() except ValueError as e: click.echo(_('rqdatac init failed with error: {}').format(e)) return 1 os.makedirs(os.path.join(data_bundle_path, 'bundle'), exist_ok=True) from rqalpha.data.bundle import update_bundle as update_bundle_ update_bundle_(os.path.join(data_bundle_path, 'bundle'), True, compression, concurrency)
def start_up(self, env, mod_config): if os.environ.get("RQDATAC2_CONF") or os.environ.get("RQDATAC_CONF"): system_log.info('rqdatac use RQDATAC2_CONF or RQDATAC_CONF') rqdatac.init() else: addr = (mod_config.rqdata_client_addr, mod_config.rqdata_client_port) env.system_log.info('rqdatac use address {}', addr) rqdatac.init( username=mod_config.rqdata_client_username, password=mod_config.rqdata_client_password, addr=addr, lazy=True ) # noinspection PyUnresolvedReferences from rqdatac import fundamentals, Fundamentals, financials, Financials, fenji, query from rqalpha.api.api_base import register_api register_api("fundamentals", fundamentals) register_api("Fundamentals", Fundamentals) register_api("financials", financials) register_api("Financials", Financials) register_api("fenji", fenji) register_api("query", query)
(data_filter['spread_on'] < 0) & (data_filter['spread_pre'] > 0.001 * order)).sum() if (data_filter['spread_pre'] > 0.001 * order).sum(): statistical_details.loc[order, 'ratio_inverse'] = statistical_details.loc[order, 'count_inverse'] \ / statistical_details.loc[order, 'count_all'] statistical_details.loc[ order, 'return_avg'] = data_filter['spread_on'][ data_filter['spread_pre'] > 0.001 * order].mean() statistical_details.drop(index=[0], inplace=True) statistical_dict[time_on] = statistical_details return statistical_dict if __name__ == '__main__': rq.init("ricequant", "8ricequant8", ('10.29.135.119', 16010)) # 参数 回测区间及合约代码 startDate = '20170101' endDate = '20200531' underlyingList = ('IF', 'IH') timeYes = "14:59:00" timeList = [ "09:31:00", "09:35:00", "09:40:00", "09:45:00", "09:50:00", "09:55:00", "10:00:00" ] underlying_list = underlyingList start_date = startDate end_date = endDate time_list = timeList
from time import time import rqdatac as rq from vnpy.trader.database import DbBarData, DB USERNAME = "" PASSWORD = "" FIELDS = ["open", "high", "low", "close", "volume"] rq.init(USERNAME, PASSWORD, ("rqdatad-pro.ricequant.com", 16011)) def generate_bar_from_row(row, symbol, exchange): """""" bar = DbBarData() bar.symbol = symbol bar.exchange = exchange bar.interval = "1m" bar.open_price = row["open"] bar.high_price = row["high"] bar.low_price = row["low"] bar.close_price = row["close"] bar.volume = row["volume"] bar.datetime = row.name.to_pydatetime() bar.gateway_name = "DB" bar.vt_symbol = f"{symbol}.{exchange}" return bar
import numpy as np import pandas as pd import scipy.optimize as sc_opt from datetime import datetime from datetime import timedelta import rqdatac rqdatac.init('rice', 'rice', ('192.168.10.64', 16030)) def get_shenwan_industry_exposure(stock_list, date): industry_classification = rqdatac.shenwan_instrument_industry( stock_list, date) if date > '2014-01-01': shenwan_industry_name = ['农林牧渔', '采掘', '化工', '钢铁', '有色金属', '电子', '家用电器', '食品饮料', '纺织服装', '轻工制造',\ '医药生物', '公用事业', '交通运输', '房地产', '商业贸易', '休闲服务','综合', '建筑材料', '建筑装饰', '电气设备',\ '国防军工', '计算机', '传媒', '通信', '银行', '非银金融', '汽车', '机械设备'] else: shenwan_industry_name = [ '金融服务', '房地产', '医药生物', '有色金属', '餐饮旅游', '综合', '建筑建材', '家用电器', '交运设备', '食品饮料', '电子', '信息设备', '交通运输', '轻工制造', '公用事业', '机械设备', '纺织服装', '农林牧渔', '商业贸易', '化工', '信息服务', '采掘', '黑色金属' ] industry_exposure_df = pd.DataFrame(0, index=industry_classification.index,
# encoding: UTF-8 import rqdatac as rq from rqdatac import * import pandas as pd import sys import datetime import os DATA_PATH = "E:\\future_data\\all_data\\" NO_MAKER_DATA_PATH = "other_table\\" SAVE_PATH = DATA_PATH + NO_MAKER_DATA_PATH reload(sys) loop_count = 0 sys.setdefaultencoding('utf8') rq.init() need_to_monitor_future_list = [ 'RB', 'TA', 'CF', 'L', 'PP', 'M', 'Y', 'AG', 'MA', 'SR' ] margin_rate_list = [] contract_multiplier_list = [] symbol_list = [] time_of_today = datetime.datetime.now().strftime("%Y%m%d") def get_current_domain_future_info(): for temp_future in need_to_monitor_future_list: temp_future_name = rq.get_dominant_future(temp_future, time_of_today)[-1] temp_info = rq.instruments(temp_future_name) margin_rate = temp_info.margin_rate # 保证金率 contract_multiplier = temp_info.contract_multiplier # 合约乘数
from intermediate_variables import * from operators import * import numpy as np import pandas as pd from datetime import datetime from datetime import timedelta import rqdatac rqdatac.init("ricequant", "Ricequant123", ('rqdatad-pro.ricequant.com', 16004)) def get_market_portfolio_beta(stock_excess_return, market_portfolio_excess_return, market_cap_on_current_day): exp_weight = get_exponential_weight(half_life=63, length=252) weighted_stock_excess_return = stock_excess_return.T.multiply(exp_weight).T weighted_market_portfolio_excess_return = market_portfolio_excess_return.multiply(exp_weight).T weighted_market_portfolio_variance = weighted_market_portfolio_excess_return.var() beta = [weighted_market_portfolio_excess_return.cov( weighted_stock_excess_return[stock]) / weighted_market_portfolio_variance for stock in stock_excess_return.columns] market_portfolio_beta = pd.Series(beta, index=stock_excess_return.columns) market_portfolio_beta_exposure = winsorization_and_market_cap_weighed_standardization(market_portfolio_beta,
import rqdatac from rqdatac import * rqdatac.init("ricequant", "8ricequant8") import datetime as dt import itertools import matplotlib.pyplot as plt import numpy as np from math import * import pandas as pd from optimizer_tests.stock_test.ptfopt_cov_shrink import * def get_stock_test_suite(start_t='2013-01-01', end_t='2017-07-05'): """ get alive stock test suite between dates (for test use between 20140101 to 2017) make sure it has IPO for at least one year and is never ST between dates :param start_t: :param end_t: :return: dic return a dic, key is 0-99. 0 is the biggest 100 1 is the second 101 ~ 200 stocks 2 is the smallest -200 ~ -101 stocks 3 is the smallest -100 ~ -1 stocks 4 is the biggest 50 + smallest 50 5 ~ 99 is the 28*3 combo (28: shenwan_industry category, 3: we split each cate by market cap) """ # get all stocks all_stocks0 = list(all_instruments(type='CS').order_book_id)
# 加载配置 config = open('config.json') setting = json.load(config) MONGO_HOST = setting['MONGO_HOST'] MONGO_PORT = setting['MONGO_PORT'] SYMBOLS = setting['SYMBOLS'] mc = MongoClient(MONGO_HOST, MONGO_PORT) # Mongo连接 db = mc[MINUTE_DB_NAME] # 数据库 db2 = mc[DAILY_DB_NAME] USERNAME = setting['USERNAME'] PASSWORD = setting['PASSWORD'] rq.init(USERNAME, PASSWORD) FIELDS = ['open', 'high', 'low', 'close', 'volume'] #---------------------------------------------------------------------- def generateVtBar(row, symbol): """生成K线""" bar = VtBarData() bar.symbol = symbol bar.vtSymbol = symbol bar.open = row['open'] bar.high = row['high'] bar.low = row['low'] bar.close = row['close']
from time import time import rqdatac as rq from fcs_trade.trader.object import BarData from fcs_trade.trader.constant import Exchange, Interval from fcs_trade.trader.database import database_manager USERNAME = "" PASSWORD = "" FIELDS = ["open", "high", "low", "close", "volume"] rq.init(USERNAME, PASSWORD, ("rqdatad-pro.ricequant.com", 16011)) def generate_bar_from_row(row, symbol, exchange): """""" bar = BarData(symbol=symbol, exchange=Exchange(exchange), interval=Interval.MINUTE, open_price=row["open"], high_price=row["high"], low_price=row["low"], close_price=row["close"], volume=row["volume"], datetime=row.name.to_pydatetime(), gateway_name="DB") return bar def download_minute_bar(vt_symbol):
def main(): rq.init() update_minute_lib() update_daily_lib()
# -*- coding:utf-8 -*- from factor.base_factor import BaseFactor from data.data_module import DataModule import rqdatac as rqd rqd.init() """ PE因子 """ class PEFactor(BaseFactor): def __init__(self): BaseFactor.__init__(self, 'pe_ratio_ttm') def compute_one_day(self, date): # 用不到,只是为了练习,实际取米筐数据存 # dm = DataModule() # 某天所有股票数据 # df_daily = dm.get_all_price_one_day(date) stocklist = rqd.all_instruments('CS', date)['order_book_id'].tolist() pe = rqd.get_factor(stocklist, self.name, date, date) factors = [] for code in pe.index: factors.append({ 'date': date, 'code': code, self.name: round(pe[code], 2) }) return factors
#coding=utf-8 import rqdatac from rqdatac import * rqdatac.init() from rqalpha.api import * import numpy as np import pandas as pd import lightgbm import talib from sklearn import metrics def init(context): # 在context中保存全局变量 context.symbols = list(get_all_ins(context).index.values) context.train_days = 40 #用45-5日前的数据做训练 context.test_days = 5 #预测五日收益 scheduler.run_weekly(rebalance, 1) # 实时打印日志 logger.info("there are : {}".format(len(context.symbols))) def rebalance(context, bar_dict): ''' 换仓 ''' #训练预测 train_x, train_y, test_x = get_data(context) test_y_pred = fit_transform(context, train_x, train_y, test_x)
#%% import rqdatac as rq from rqdatac import * rq.init('13581903798','hun829248') import talib import pandas as pd import numpy as np #%% data = get_price("RB2010", start_date="2020-01-02", end_date="2020-01-03", frequency="tick") #%% # rb888_excel = pd.ExcelWriter('D:\\期货自动化交易\\8-CTA_Development\\1-常用模板\\1-rqdata\\螺纹钢期货tick数据.xlsx') # 定义一个向Excel写入数据的对象 # data.to_excel(rb888_excel, "RB888tick数据") # 向该Excel中写入df1到Data1这个sheet # rb888_excel.save() # 保存Excel表格 # rb888_excel.close() # 关闭Excel表格 #%% print(data) #%% data['cci'] = talib.CCI(data['high'], data['low'], data['close'], timeperiod=14) print("cci值为:", data['cci']) data1 = np.array(data['cci']) print("data1:", data1) print("data1[-1]:", data1[-1]) print("data1[-2]:", data1[-2]) print("data1[-3]:", data1[-3]) a = data1[-1] b = data1[-2] c = data1[-3] print(data1[-1] < 100) # %%
from rqdatac import * import talib import datetime import pandas as pd import numpy as np from pandas.tseries.offsets import * import plotly.plotly as py import plotly.graph_objs as go from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot ############################## Initialize rqdatac and plotly environments ################################ # initialize rqdatac to enable online functions such as get_price() and get_next_trading_date() rqdatac.init('xinjin', '123456', ('172.19.182.162', 16003)) # initialize plotly to enable offline mode init_notebook_mode(connected=True) ############################## Initialize rqdatac and plotly environments ################################ ## helper functions # keep only year and moth(year-month) as string of datetime object # return example: 2017-01-01 def date2ym_str(date): y = date.year m = date.month ym = '{}-{}'.format(y, m) return ym def date2ymd_str(date):
TICK_DB_NAME) import rqdatac as rq # 加载配置 config = open('config.json') setting = json.load(config) mc = MongoClient() # Mongo连接 dbMinute = mc[MINUTE_DB_NAME] # 数据库 dbDaily = mc[DAILY_DB_NAME] dbTick = mc[TICK_DB_NAME] USERNAME = setting['rqUsername'] PASSWORD = setting['rqPassword'] rq.init(USERNAME, PASSWORD) FIELDS = ['open', 'high', 'low', 'close', 'volume'] #---------------------------------------------------------------------- def generateVtBar(row, symbol): """生成K线""" bar = VtBarData() bar.symbol = symbol bar.vtSymbol = symbol bar.open = row['open'] bar.high = row['high'] bar.low = row['low'] bar.close = row['close'] bar.volume = row['volume']
import rqdatac as rd from keras.models import Sequential from keras.layers import Dense from sklearn.model_selection import train_test_split import numpy as np import keras import matplotlib.pyplot as plt import pandas as pd rd.init() spot_input_data = rd.get_price('510050.XSHG', start_date='2015-06-01', end_date='2019-01-23', frequency='10m') future_data = rd.get_price('IH88', start_date='2015-06-01', end_date='2019-01-23', frequency='10m') future_data.drop(columns=['trading_date', 'limit_up', 'limit_down'], inplace=True) spot_output_data = rd.get_price('510050.XSHG', start_date='2015-06-02', end_date='2019-01-24', frequency='1d', fields=['open', 'close']) spot_output_data = spot_output_data['close'] > spot_output_data['open'] def combine_spot_future(spot, future, direction): spot1 = spot.copy()
import numpy as np import pandas as pd import rqdatac from rqdatac import * rqdatac.init('ricequant', '8ricequant8') def get_risk_indicators(previous_weight, current_weight, cov_matrix, asset_type): """ Calculate the risk indicators :param previous_weight: list or array :param current_weight: list or array :param cov_matrix: data_frame :param asset_type: str 'fund' or 'stock' :return: list HRCs, HRCGs, Herfindahl, turnover_rate """ # change list to array for later process # previous_weight_array = np.array(previous_weight) current_weight_array = np.array(current_weight) # refer to paper formula 2.19 2.20 production_i = current_weight_array * (cov_matrix.dot(current_weight_array)) productions = current_weight_array.dot(cov_matrix).dot(current_weight_array) # calculate individual's risk contributions
# encoding: UTF-8 # 在python3下运行 import rqdatac from rqdatac import * rqdatac.init('Dajia','------') # 获取螺纹钢的指数数据,15分钟周期 df = get_price('RB99', start_date='2009-01-01', end_date='2017-03-12', frequency='15m') # 导出到文件 df.to_csv('RB99_20090101_20170312_M15.csv')