Exemplo n.º 1
0
    def storereportdata(self, startyear):

        report = self.report.collection_names()
        for r in report:
            print u"删除" + r
            self.report[r].drop()

        x = datetime.datetime.now()
        nowyear = int(x.year)
        nowmonth = int(x.month)

        #print nowmonth,nowyear,startyear,startmonth

        for year in range(startyear, nowyear + 1):
            if year != nowyear + 1:
                for month in range(1, 5):
                    name = str(year) + "-" + str(month)
                    print u"正在获取数据" + str(year) + "-" + str(month)
                    data = ts.get_profit_data(year, month)
                    self.report[name].insert_many(
                        json.loads(data.to_json(orient='records')))
            else:
                session = nowmonth / 4
                for month in range(1, session):
                    name = str(year) + "-" + str(month)
                    print u"正在获取数据" + str(year) + "-" + str(month)
                    data = ts.get_profit_data(year, month)
                    self.report[name].insert_many(
                        json.loads(data.to_json(orient='records')))
Exemplo n.º 2
0
def get_returnSeason(x, Year):
    #
    basicdata = ts.get_stock_basics()
    basicdata = basicdata.loc[x, ['name', 'outstanding']]
    basicdata['code'] = basicdata.index
    #profitdata=get_profit_report['code','name','roe']
    returnSeasonly = np.zeros(4)

    for i in range(4):
        pd = ts.get_profit_data(Year, i + 1)
        while pd is None:
            pd = ts.get_profit_data(Year, i + 1)

        pd = pd.loc[:, ['code', 'roe']]
        pd = pd.dropna()

        #pd.index =pd[pd.code<>np.nan]
        pd.index = pd['code']
        Return = pd.loc[x, ['code', 'roe']]
        if len(Return) == 0:
            print('空数据,不处理 ' + str(Year) + str(i))
            returnSeasonly[i] = 0
            break
        Return['weight'] = basicdata['outstanding'] / basicdata[
            'outstanding'].sum()
        Return['Wreturn'] = Return['weight'] * Return['roe']
        returnSeasonly[i] = Return['Wreturn'].sum()
        if i > 0:
            returnSeasonly[i] = returnSeasonly[i] - returnSeasonly[i - 1]
        print('已处理 ' + str(Year) + str(i))
    return returnSeasonly
Exemplo n.º 3
0
def save_profit(y, q):
    df = ts.get_profit_data(y,q)
    # df = ts.get_today_all()
    while df is None:
        df = ts.get_profit_data(y,q)
    print df
    df.to_csv('profit_%s0%s.csv' % (y,q),encoding='utf-8')
Exemplo n.º 4
0
def update_single_basic_ele(ele_name, retry_times):
    for year in range(2001, int(year_now) + 1):
        for quarter in range(1, 5):
            table_name = ele_name + str(year) + '0' + str(quarter)

            if not is_table_exist(conn=conn_profit,
                                  database_name=stk_profit_data_db_name,
                                  table_name=table_name):
                """失败达到一定次数便不再尝试"""
                failure_time = 0
                go_on_flag = True
                while go_on_flag & (failure_time < retry_times):
                    try:
                        if ele_name == "profit":
                            ts.get_profit_data(year=year,quarter=quarter)\
                                .to_sql(con=engine_profit,
                                        name=table_name,
                                        if_exists='append',
                                        schema=stk_profit_data_db_name,
                                        index=False)

                        elif ele_name == "growth":
                            ts.get_growth_data(year=year, quarter=quarter) \
                                .to_sql(con=engine_growth,
                                        name=table_name,
                                        if_exists='append',
                                        schema=stk_growth_data_db_name,
                                        index=False,)

                        elif ele_name == "operation":
                            ts.get_operation_data(year=year, quarter=quarter) \
                                .to_sql(con=engine_operation,
                                        name=table_name,
                                        if_exists='append',
                                        schema=stk_operation_data_db_name,
                                        index=False)

                        elif ele_name == "debtpaying":
                            ts.get_debtpaying_data(year=year, quarter=quarter) \
                                .to_sql(con=engine_debtpaying,
                                        name=table_name,
                                        if_exists='append',
                                        schema=stk_debtpaying_data_db_name,
                                        index=False)

                        elif ele_name == "cashflow":
                            ts.get_cashflow_data(year=year, quarter=quarter) \
                                .to_sql(con=engine_cashflow,
                                        name=table_name,
                                        if_exists='append',
                                        schema=stk_cashflow_data_db_name,
                                        index=False)

                        go_on_flag = False
                    except:
                        print(table_name + "下载失败!重试!\n")
                        failure_time = failure_time + 1
            else:
                print(table_name + "已经存在!\n")
Exemplo n.º 5
0
 def get_profit_data(self, year, loops):
     for i in range(1,loops):
         print(i)
         for j in year:
             print(year)
             try:
                 ts.get_profit_data(j, 4).to_csv('profit_data_%d.csv'%j, encoding='utf-8')
                 print(j)
                 year.remove(j)
             except: pass
Exemplo n.º 6
0
def basic_information():
    ts.get_cashflow_data(2017, 1).to_sql('cash_flow',
                                         engine,
                                         if_exists='append')
    ts.get_debtpaying_data(2017, 1).to_sql('debtpaying',
                                           engine,
                                           if_exists='append')
    ts.get_growth_data(2017, 1).to_sql('growth', engine, if_exists='append')
    ts.get_operation_data(2017, 1).to_sql('operation',
                                          engine,
                                          if_exists='append')
    ts.get_profit_data(2017, 1).to_sql('profit', engine, if_exists='append')
    ts.get_report_data(2017, 2).to_sql('report', engine, if_exists='append')
    print('basic information over ....')
Exemplo n.º 7
0
def _fetch_finance():
    for year in range(2004, 2018):
        set_year = lambda x: str(year) + '-' + x
        for quarter in range(1, 5):
            print(year, ' year ', 'quarter ', quarter)
            rep = ts.get_report_data(
                year, quarter)[['code', 'eps', 'bvps', 'epcf', 'report_date']]
            pro = ts.get_profit_data(year, quarter)[[
                'code', 'roe', 'net_profit_ratio', 'gross_profit_rate',
                'net_profits', 'business_income', 'bips'
            ]]
            ope = ts.get_operation_data(year, quarter)[[
                'code', 'arturnover', 'arturndays', 'inventory_turnover',
                'currentasset_turnover', 'currentasset_days'
            ]]
            gro = ts.get_growth_data(
                year, quarter)[['code', 'mbrg', 'nprg', 'nav', 'epsg', 'seg']]
            deb = ts.get_debtpaying_data(year, quarter)[[
                'code', 'currentratio', 'quickratio', 'cashratio', 'icratio',
                'sheqratio', 'adratio'
            ]]
            cas = ts.get_cashflow_data(year, quarter)[[
                'code', 'cf_sales', 'rateofreturn', 'cf_nm', 'cf_liabilities',
                'cashflowratio'
            ]]

            rep.rename(columns={'report_date': 'date'}, inplace=True)
            rep['date'] = rep['date'].apply(set_year)
            rep = rep.merge(pro, on='code', how='left')
            rep = rep.merge(ope, on='code', how='left')
            rep = rep.merge(gro, on='code', how='left')
            rep = rep.merge(deb, on='code', how='left')
            rep = rep.merge(cas, on='code', how='left')
            finance.insert(rep.to_dict('record'))
            print(year, quarter)
Exemplo n.º 8
0
def valuation_factor(year):
    report = ts.get_report_data(year,4)
    report = report.sort_values(by = 'code',axis = 0,ascending = True)
    report = report.reset_index(drop = True)
    report.to_csv("/home/yirui/Desktop/Quant/Report/%s.csv"%year, mode="w")

    profit = ts.get_profit_data(year, 4)
    profit = profit.sort_values(by='code', axis=0, ascending=True)
    profit = profit.reset_index(drop=True)
    profit.to_csv("/home/yirui/Desktop/Quant/Profit/%s.csv"%year,mode= "w")

    operation = ts.get_operation_data(year,4)
    operation = operation.sort_values(by='code', axis=0, ascending=True)
    operation = operation.reset_index(drop=True)
    operation.to_csv("/home/yirui/Desktop/Quant/Operation/%s.csv" % year, mode="w")

    growth = ts.get_growth_data(year,4)
    growth = growth.sort_values(by='code', axis=0, ascending=True)
    growth = growth.reset_index(drop=True)
    growth.to_csv("/home/yirui/Desktop/Quant/Growth/%s.csv" % year, mode="w")

    debtpaying = ts.get_debtpaying_data(year,4)
    debtpaying = debtpaying.sort_values(by='code', axis=0, ascending=True)
    debtpaying = debtpaying.reset_index(drop=True)
    debtpaying.to_csv("/home/yirui/Desktop/Quant/Debtpaying/%s.csv" % year, mode="w")

    cashflow = ts.get_cashflow_data(year,4)
    cashflow = cashflow.sort_values(by='code', axis=0, ascending=True)
    cashflow = cashflow.reset_index(drop=True)
    cashflow.to_csv("/home/yirui/Desktop/Quant/Cashflow/%s.csv" % year, mode="w")
Exemplo n.º 9
0
 def get_profit_data(self, year, quarter):
     tsdata = ts.get_profit_data(
         year=year,
         quarter=quarter,
     )
     jsdata = To_Json(tsdata)
     return jsdata
Exemplo n.º 10
0
def stat_stock_profit(tmp_datetime, max_year=18):
    """
    以后每年7月份取一下上年的年报即可,历史数据不必再取
    经验: 19年4月份取18年的年报是不全的,所以延到7月取
    """
    # cur_year = int((tmp_datetime).strftime("%Y"))
    cur_year = 2005
    # i = cur_year - max_year
    i = 2001
    MAX_RETRY_TIME = 3
    retry_time = 0
    while i < cur_year:
        try:
            data = ts.get_profit_data(i, 4)
        except IOError:
            data = None
        if not data is None and len(data) > 0:
            print("\nyear done", i)
            # data = data.drop_duplicates(subset="code", keep="last")
            data.insert(0, "year", [i] * len(data))
            data.head(n=1)
            common.insert_db(data, "ts_stock_profit", False, "`year`,`code`")
            i += 1
            retry_time = 0
        else:
            print("\nno data . stock_profit year", i)
            retry_time += 1
            if retry_time > MAX_RETRY_TIME:
                i += 1
                retry_time = 0

        time.sleep(5)  # 停止5秒
Exemplo n.º 11
0
def get_profit(year,q):
    conn = default_db()
    cur = conn.cursor()
    net_profits_df = ts.get_profit_data(year,q)
    num = len(net_profits_df.index)
    for i in net_profits_df.index:
    	print num,year,q
        stock_id = net_profits_df.loc[i]['code']
        stock_name = net_profits_df.loc[i]['name']
        if q == 1:
            date = '%d-01-01' % (year)
        elif q == 2:
            date = '%d-04-01' % (year)
        elif q == 3:
            date = '%d-07-01' % (year)
        else:
            date = '%d-10-01' % (year)
        roe = net_profits_df.loc[i]['roe']
        net_profit_ratio = net_profits_df.loc[i]['net_profit_ratio']
        gross_profit_rate = net_profits_df.loc[i]['gross_profit_rate']
        net_profits = net_profits_df.loc[i]['net_profits']
        eps = net_profits_df.loc[i]['eps']
        business_income = net_profits_df.loc[i]['business_income']
        bips = net_profits_df.loc[i]['bips']

        order = 'insert into %s ( %s,%s,%s,%s,%s,%s,%s,%s,%s,%s)values("%s", "%s","%s","%f","%f","%f","%f","%f","%f","%f")'\
            % (TABLE_NETPROFIT,NETPROFIT_STOCK_ID,NETPROFIT_STOCK_NAME,NETPROFIT_DATE,NETPROFIT_ROE,NETPROFIT_NET_PROFIT_RATIO,\
            NETPROFIT_GROSS_PROFIT_RATE,NETPROFIT_NET_PROFITS,NETPROFIT_EPS,NETPROFIT_BUSINESS_INCOME,NETPROFIT_BIPS,\
            stock_id,stock_name,date,roe,net_profit_ratio,gross_profit_rate,net_profits,eps,business_income,bips)
        try:  
            cur.execute(order)
            conn.commit()
        except Exception, e:
            print e
        num -= 1
Exemplo n.º 12
0
Arquivo: run.py Projeto: tzxfl/Triton
def export(exportType, datePicker):
    sb = None
    [year, quarter] = getYearQuarter(datePicker)
    if exportType == "report":
        name = "业绩报表"
        sb = ts.get_report_data(year, quarter)
    elif exportType == "profit":
        name = "盈利能力报表"
        sb = ts.get_profit_data(year, quarter)
    elif exportType == "operation":
        name = "营运能力报表"
        sb = ts.get_operation_data(year, quarter)
    elif exportType == "growth":
        name = "成长能力报表"
        sb = ts.get_growth_data(year, quarter)
    elif exportType == "debtpaying":
        name = "偿债能力报表"
        sb = ts.get_debtpaying_data(year, quarter)
    elif exportType == "cashflow":
        name = "现金流量报表"
        sb = ts.get_cashflow_data(year, quarter)

    filename = quote(name + str(year) + "Q" + str(quarter) + ".xlsx")
    filepath = os.path.join(basedir, app.config['UPLOAD_FOLDER'], filename)

    sb.to_excel(filepath)

    rtn = send_file(filepath, as_attachment=True)
    rtn.headers['Content-Disposition'] += "; filename*=utf-8''%s" % (filename)
    return rtn
Exemplo n.º 13
0
 def profit_data(self, year, quarter):  #盈利能力
     df = ts.get_profit_data(year, quarter)
     for indexs in df.index:
         code = str(df.loc[indexs, ["code"]].values[0])
         name = str(df.loc[indexs, ["name"]].values[0])
         roe = str(df.loc[indexs, ["roe"]].values[0])
         roe = '0' if roe in ('nan', '--') else roe
         net_profit_ratio = str(df.loc[indexs,
                                       ["net_profit_ratio"]].values[0])
         net_profit_ratio = '0' if net_profit_ratio in (
             'nan', '--') else net_profit_ratio
         gross_profit_rate = str(df.loc[indexs,
                                        ["gross_profit_rate"]].values[0])
         gross_profit_rate = '0' if gross_profit_rate in (
             'nan', '--') else gross_profit_rate
         net_profits = str(df.loc[indexs, ["net_profits"]].values[0])
         net_profits = '0' if net_profits in ('nan', '--') else net_profits
         eps = str(df.loc[indexs, ["eps"]].values[0])
         eps = '0' if eps in ('nan', '--') else eps
         business_income = str(df.loc[indexs,
                                      ["business_income"]].values[0])
         business_income = '0' if business_income in (
             'nan', '--') else business_income
         bips = str(df.loc[indexs, ["bips"]].values[0])
         bips = '0' if bips in ('nan', '--') else bips
         insert = (
             "insert into  profit_data(code,name,roe,net_profit_ratio,gross_profit_rate,net_profits,eps,business_income,bips,year,quarter) values('"
             + code + "','" + name + "'," + roe + "," + net_profit_ratio +
             "," + gross_profit_rate + "," + net_profits + "," + eps + "," +
             business_income + "," + bips + ",'" + str(year) + "','" +
             str(quarter) + "')")
         self.dbA.updateInsertDelete(insert)
     self.dbA.commit()
Exemplo n.º 14
0
def get_profit(year, q):
    conn = default_db()
    cur = conn.cursor()
    net_profits_df = ts.get_profit_data(year, q)
    num = len(net_profits_df.index)
    for i in net_profits_df.index:
        print num, year, q
        stock_id = net_profits_df.loc[i]['code']
        stock_name = net_profits_df.loc[i]['name']
        if q == 1:
            date = '%d-01-01' % (year)
        elif q == 2:
            date = '%d-04-01' % (year)
        elif q == 3:
            date = '%d-07-01' % (year)
        else:
            date = '%d-10-01' % (year)
        roe = net_profits_df.loc[i]['roe']
        net_profit_ratio = net_profits_df.loc[i]['net_profit_ratio']
        gross_profit_rate = net_profits_df.loc[i]['gross_profit_rate']
        net_profits = net_profits_df.loc[i]['net_profits']
        eps = net_profits_df.loc[i]['eps']
        business_income = net_profits_df.loc[i]['business_income']
        bips = net_profits_df.loc[i]['bips']

        order = 'insert into %s ( %s,%s,%s,%s,%s,%s,%s,%s,%s,%s)values("%s", "%s","%s","%f","%f","%f","%f","%f","%f","%f")'\
            % (TABLE_NETPROFIT,NETPROFIT_STOCK_ID,NETPROFIT_STOCK_NAME,NETPROFIT_DATE,NETPROFIT_ROE,NETPROFIT_NET_PROFIT_RATIO,\
            NETPROFIT_GROSS_PROFIT_RATE,NETPROFIT_NET_PROFITS,NETPROFIT_EPS,NETPROFIT_BUSINESS_INCOME,NETPROFIT_BIPS,\
            stock_id,stock_name,date,roe,net_profit_ratio,gross_profit_rate,net_profits,eps,business_income,bips)
        try:
            cur.execute(order)
            conn.commit()
        except Exception, e:
            print e
        num -= 1
Exemplo n.º 15
0
def get_basic_datas(
        data_kind):  #datakind 为debtpaying,growth,operation,profit,report
    client = pymongo.MongoClient('localhost', 27017)
    table_stock = client['stock']
    sheet = table_stock[data_kind]
    for year in range(STARTYEAR, ENDYEAR + 1):
        try:
            for season in range(1, 5):
                print('getting ' + datakind + ' data at year:' + str(year) +
                      " season:" + str(season))
                if data_kind == 'debtpaying':
                    tf = ts.get_debtpaying_data(year, season)
                elif data_kind == 'growth':
                    tf = ts.get_growth_data(year, season)
                elif data_kind == 'operation':
                    tf = ts.get_operation_data(year, season)
                elif data_kind == 'profit':
                    tf = ts.get_profit_data(year, season)
                elif data_kind == 'report':
                    tf = ts.get_report_data(year, season)
                else:
                    print('Not available data type of data_kind!')
                    return
                jsonres = json.loads(tf.to_json(orient='records'))
                for j in jsonres:
                    sheet.insert_one(j)
        except:  #数据缺失,tushare接口会报网络错误
            print('the year: ' + str(year) + ' lost data will begin next year')
            continue
Exemplo n.º 16
0
def get_profit_data(year, season):
    frame = ts.get_profit_data(year, season)
    table_name = 'stock_profit_' + str(year) + 'q' + str(season)
    #frame.to_sql(table_name, engine)
    db = MySQLdb.connect("localhost",
                         "root",
                         "123456",
                         'stock',
                         charset='utf8')
    cursor = db.cursor()
    createDBSql = 'create table if not exists ' + table_name + '(code varchar(10), name varchar(16), roe text, net_profit_ratio text, gross_profit_rate text, net_profits text, eps text, business_income text, bips text)'
    cursor.execute(createDBSql)
    for i in range(0, len(frame)):
        prefix = 'insert into ' + table_name + '(code, name, roe, net_profit_ratio, gross_profit_rate, net_profits, eps, business_income, bips) select \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\' from dual where not exists (select * from ' + table_name + ' where code = \'%s\')'
        sql = prefix % (frame['code'][i], frame['name'][i], str(
            frame['roe'][i]), str(frame['net_profit_ratio'][i]),
                        str(frame['gross_profit_rate'][i]),
                        str(frame['net_profits'][i]), str(frame['eps'][i]),
                        str(frame['business_income'][i]), str(
                            frame['bips'][i]), frame['code'][i])
        cursor.execute(sql)
        db.commit()
        print(frame['name'][i])

    db.close()
def choosing_stock(the_year, the_quarter):
	x_choosing_stock = []
	x_temp_choosing_stock = []
	print (the_year, the_quarter)
	data_choosing_stock = ts.get_profit_data(the_year, the_quarter)
	data_choosing_stock.dropna( axis=0, how='any', thresh=None, subset=None, inplace=True )
	data_choosing_stock.sort_values( by="code" , ascending=True, inplace=True )
	data_choosing_stock.drop_duplicates( ['code'], inplace = True )
	data_choosing_stock['yield'] = np.nan
	( row_choosing_stock, col_choosing_stock ) = data_choosing_stock.shape
	row_choosing_stock = test_less_row ######################################################
	for the_row in range(0, row_choosing_stock):
		for the_col in range(2, col_choosing_stock-1):
			x_temp_choosing_stock.append(data_choosing_stock.iloc[the_row, the_col])
		x_choosing_stock.append(x_temp_choosing_stock)
		x_choosing_stock_new = MinMax.transform(x_choosing_stock)
		y_choosing_stock_predict = model.predict(x_choosing_stock_new)
		x_choosing_stock = []
		x_temp_choosing_stock = []
		data_choosing_stock.iloc[the_row, -1] = y_choosing_stock_predict

	data_choosing_stock.sort_values( by="yield", ascending=False, inplace=True )
	stock_list = data_choosing_stock[['code', 'name', 'yield']]

	print ('stock_list')
	print (stock_list)
Exemplo n.º 18
0
def update_basics():
    basics = ts.get_stock_basics()
    f = os.path.join(DATA_DIR, 'basics.h5')
    basics.to_hdf(f, 'basics')

    length = 4 * 5
    year, season = last_report_season()
    for i in range(length):
        f = os.path.join(DATA_DIR, 'basics-{0}-{1}.h5'.format(year, season))
        if os.path.exists(f):
            continue
        report = ts.get_report_data(year, season)
        report.to_hdf(f, 'report')

        profit = ts.get_profit_data(year, season)
        profit.to_hdf(f, 'profit')

        operation = ts.get_operation_data(year, season)
        operation.to_hdf(f, 'operation')

        growth = ts.get_growth_data(year, season)
        growth.to_hdf(f, 'growth')

        debtpaying = ts.get_debtpaying_data(year, season)
        debtpaying.to_hdf(f, 'debtpaying')

        cashflow = ts.get_cashflow_data(year, season)
        cashflow.to_hdf(f, 'cashflow')

        season -= 1
        if season == 0:
            season = 4
            year -= 1
Exemplo n.º 19
0
def load_profits(year, quarter):
    """
    加载所有股票指定年份和季度的盈利能力列表。
    若列表文件‘profits-(year)-(quarter).csv’不存在,则下载
    
    :param year: 年份
    :param quarter: 季度(1,2,3,4)    
    :return:   
        code,代码
        name,名称
        roe,净资产收益率(%)
        net_profit_ratio,净利率(%)
        gross_profit_rate,毛利率(%)
        net_profits,净利润(万元)
        eps,每股收益
        business_income,营业收入(百万元)
        bips,每股主营业务收入(元)
    :rtype: DataFrame
    """
    file_name = 'profits-' + str(year) + '-' + str(quarter) + '.csv'
    if os.path.exists(file_name):
        df_profits = pd.read_csv(file_name)
    else:
        try:
            df_profits = ts.get_profit_data(year, quarter)
            df_profits.to_csv(file_name)
        except Exception as ex:
            print ex
            df_profits = load_profits(year - 1, quarter)
            df_profits.drop(df_profits.index, inplace=True)
    return df_profits
Exemplo n.º 20
0
def stat_all(tmp_datetime):
    # 返回 31 天前的数据,做上个季度数据统计。
    tmp_datetime_1month = tmp_datetime + datetime.timedelta(days=-31)
    year = int((tmp_datetime_1month).strftime("%Y"))
    quarter = int(pd.Timestamp(tmp_datetime_1month).quarter)  # 获得上个季度的数据。
    print("############ year %d, quarter %d", year, quarter)
    # 业绩报告(主表)
    data = ts.get_report_data(year, quarter)
    # 增加季度字段。
    data = concat_quarter(year, quarter, data)
    # 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
    data = data.drop_duplicates(subset="code", keep="last")
    global db
    # 插入数据库。
    db.insert_db(data, "ts_report_data", True, "`quarter`,`code`")

    # 盈利能力
    data = ts.get_profit_data(year, quarter)
    # 增加季度字段。
    data = concat_quarter(year, quarter, data)
    # 处理重复数据,保存最新一条数据。
    data = data.drop_duplicates(subset="code", keep="last")
    # 插入数据库。
    db.insert_db(data, "ts_profit_data", True, "`quarter`,`code`")

    # 营运能力
    data = ts.get_operation_data(year, quarter)
    # 增加季度字段。
    data = concat_quarter(year, quarter, data)
    # 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
    data = data.drop_duplicates(subset="code", keep="last")
    # 插入数据库。
    db.insert_db(data, "ts_operation_data", True, "`quarter`,`code`")

    # 成长能力
    data = ts.get_growth_data(year, quarter)
    # 增加季度字段。
    data = concat_quarter(year, quarter, data)
    # 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
    data = data.drop_duplicates(subset="code", keep="last")
    # 插入数据库。
    db.insert_db(data, "ts_growth_data", True, "`quarter`,`code`")

    # 偿债能力
    data = ts.get_debtpaying_data(year, quarter)
    # 增加季度字段。
    data = concat_quarter(year, quarter, data)
    # 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
    data = data.drop_duplicates(subset="code", keep="last")
    # 插入数据库。
    db.insert_db(data, "ts_debtpaying_data", True, "`quarter`,`code`")

    # 现金流量
    data = ts.get_cashflow_data(year, quarter)
    # 增加季度字段。
    data = concat_quarter(year, quarter, data)
    # 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
    data = data.drop_duplicates(subset="code", keep="last")
    # 插入数据库。
    db.insert_db(data, "ts_cashflow_data", True, "`quarter`,`code`")
Exemplo n.º 21
0
    def getThingsEveryday(self):
        yearEnd = datetime.now().year - 1

        if self.__flagUpdateReport:
            pdGrowthLastYear = ts.get_growth_data(yearEnd, 4)
            pdGrowthLastYear.to_excel('./' + \
                        str(yearEnd) + 'Growth.xls', sheet_name='Growth')
            pdProfitLastYear = ts.get_profit_data(yearEnd, 4)
            pdProfitLastYear.to_excel('./' + \
                        str(yearEnd) + 'Profit.xls', sheet_name='Profit')
            pdReportLastYear = ts.get_report_data(yearEnd, 4)
            pdReportLastYear.to_excel('./' + \
                        str(yearEnd) + 'y.xls', sheet_name='Report')

        self.__stockBasics = ts.get_stock_basics()  #获得昨天pe
        self.__stockBasics['code'] = self.__stockBasics.index.astype(int)
        self.__stockBasics.sort_index(inplace=True)
        self.__stockTodayAll = ts.get_today_all()  #获得昨收
        self.__stockTodayAll['code'] = self.__stockTodayAll['code'].astype(int)
        self.__pdForwardEps = pd.merge(self.__stockBasics,
                                       self.__stockTodayAll,
                                       on='code')
        self.__pdForwardEps['feps'] = self.__pdForwardEps[
            'settlement'] / self.__pdForwardEps['pe']
        print('\n')
Exemplo n.º 22
0
def get_profit(year, q):
    conn = default_db()
    cur = conn.cursor()
    net_profits = ts.get_profit_data(year, q)
    for i in net_profits.index:
        stock_id = net_profits.loc[i]['code']
        stock_name = net_profits.loc[i]['name']
        if q == 1:
            date = '%d-01-01' % (year)
        elif q == 2:
            date = '%d-04-01' % (year)
        elif q == 3:
            date = '%d-07-01' % (year)
        else:
            date = '%d-10-01' % (year)
        net_profit = net_profits.loc[i]['net_profits']
        order = 'insert into %s ( %s,%s,%s,%s)values("%s", "%s","%s","%f")' % (
            TABLE_NETPROFIT, NETPROFIT_STOCK_ID, NETPROFIT_STOCK_NAME,
            NETPROFIT_DATE, NETPROFIT_NETPROFIT, stock_id, stock_name, date,
            net_profit)
        try:
            cur.execute(order)
            conn.commit()
        except Exception, e:
            print e
Exemplo n.º 23
0
 def fetchByYearQuarter(self, mongo, type):
     years = range(self.begin_year, self.end_year_notinclude)
     quarters = range(1, 5)
     for year in years:
         for quarter in quarters:
             print(str(type) + '_' + str(year) + '_' + str(quarter))
             if (type == 'report_data'):
                 df = fd.get_report_data(year, quarter)
             elif (type == 'profit_data'):
                 df = ts.get_profit_data(year, quarter)
             elif (type == 'operation_data'):
                 df = ts.get_operation_data(year, quarter)
             elif (type == 'growth_data'):
                 df = ts.get_growth_data(year, quarter)
             elif (type == 'debtpaying_data'):
                 df = ts.get_debtpaying_data(year, quarter)
             elif (type == 'cashflow_data'):
                 df = ts.get_cashflow_data(year, quarter)
             else:
                 df = {}
             tmpJson = json.loads(df.to_json(orient='records'))
             for i in range(len(tmpJson)):
                 tmpJson[i][u'year'] = int(year)
                 tmpJson[i][u'quarter'] = int(quarter)
             coll = mongo.fundemental[type]
             coll2 = mongo.fundemental[str(type) + '_' + str(year) + '_' +
                                       str(quarter)]
             coll2.insert(tmpJson)
             coll.insert(tmpJson)
Exemplo n.º 24
0
 def get_temp_data(year, quarter):
     df1 = ts.get_report_data(year, quarter)
     #print (1)
     df1 = df1.merge(ts.get_profit_data(year, quarter),
                     how='inner',
                     on=['code', 'name'])
     #print (2)
     df1 = df1.merge(ts.get_operation_data(year, quarter),
                     how='inner',
                     on=['code', 'name'])
     #print (3, "n", df1)
     df1 = df1.merge(ts.get_growth_data(year, quarter),
                     how='inner',
                     on=['code', 'name'])
     #print (4)
     print(df1)
     df1 = df1.merge(ts.get_debtpaying_data(year, quarter),
                     how='inner',
                     on=['code', 'name'])
     #print (5)
     print(df1)
     df1 = df1.merge(ts.get_cashflow_data(year, quarter),
                     how='inner',
                     on=['code', 'name'])
     #print (6)
     (row, col) = df1.shape
     for i in range(0, row):
         df1.iloc[i, 0] = str(df1.iloc[i, 0])
     return df1
Exemplo n.º 25
0
def get_all_profit_data(year, quarter):
    """
        Description : 取得盈利能力
        Arg :
            @year : 年份
            @quarter : 季度
        Returns : 返回DataFrame
        Raises	 :
    """
    year_quarter = "{}-{}".format(year, quarter)
    year_quarter_where = 'year_quarter=="{}"'.format(year_quarter)

    if ((stone.get_storer(str_profit) is None) or
        (len(stone.select(str_profit, where=[year_quarter_where])) == 0)):
        pf = ts.get_profit_data(year, quarter)
        # 如果为空,就返回空吧
        if ((pf is None) or (len(pf) == 0)):
            return None
        # 添加月份,
        pf['year_quarter'] = year_quarter
        # 转换格式
        pf = pf.astype(dict_profit_columns, copy=True, errors='ignore')
        # 保存数据到HDF5
        stone.append(str_profit,
                     pf,
                     format='table',
                     data_columns=lst_profit_column_name)
        # 返回这个值就可以了。
        return pf
    return stone.select(str_profit, where=[year_quarter_where])
Exemplo n.º 26
0
def get_profit_report():
    year = time.strftime("%Y", time.localtime())
    month = time.strftime("%m", time.localtime())
    season = int(int(month) / 3)

    df = ts.get_profit_data(int(year), season)

    if df is None:
        season = season - 1
        df = ts.get_profit_data(int(year), season)
    else:
        if str(df.head(1).roe[0]) == 'nan':
            season = season - 1
            df = ts.get_profit_data(int(year), season)

    return df
Exemplo n.º 27
0
 def buildProfitForStock(self, stock):
     code = stock.get_code()
     if self.__dfProfit is None or self.__dfProfit.empty:
         try:
             self.__dfProfit = pd.read_sql_table('profit',
                                                 con=self.__engine,
                                                 index_col='code')
         except:
             pass
         if self.__dfProfit is None or self.__dfProfit.empty:
             self.__dfProfit = ts.get_profit_data(
                 self.__config.get_report()[0],
                 self.__config.get_report()[1])
             self.__dfProfit.to_sql('profit',
                                    self.__engine,
                                    if_exists='replace',
                                    index_label='code',
                                    index=False)
     try:
         roe = self.__dfProfit.loc[stock.get_code()].get('roe')
         if isinstance(roe, pd.Series):
             roe = roe.iat[-1]
         stock.set_roe(roe)
     except:
         stock.set_roe(float("nan"))
Exemplo n.º 28
0
    def get_data_by_year_season(self, year, season):
        struct_time = time.localtime()
        current_year = struct_time.tm_year
        current_month = struct_time.tm_mon

        df = ts.get_profit_data(year, season)
        if df is not None:
            if df.empty is False:
                n_data = len(df.index)
                for i in range(n_data):
                    data = df.iloc[i]
                    data_json = {
                    "id": uuid.uuid4().hex,
                    "code": data["code"],
                    "datetime": str(current_year) + "-" + str(current_month) + "-" + "00" + " " + "00" + ":" + "00" + ":" + "00",
                    "fetchtime": get_formated_time_mysql(),
                    "source": self.source_name,
                    "crawler": self.crawl_id,
                    "ROE": data["roe"],
                    "NPMOS": data["net_profit_ratio"],
                    "GPTS": data["gross_profit_rate"],
                    "IFMO": data["net_profits"],
                    "DOE": data["eps"],
                    }

                    data_json = toshare_null_handle(data_json)
                    self.data.append(data_json)
Exemplo n.º 29
0
def get_eps_series(code, dates):    
    eps_series = []    
    latest_year = 0
    latest_quarter = 0
    latest_eps = 0.0
    date_delta = timedelta(days = 1)
    for date in dates:
        (year, quarter) = get_report_date(date)
        if year == latest_year and quarter == latest_quarter:
            eps_series.append(latest_eps)
        else:
            print("Get profit data of %s, %s" % (year, quarter))
            quarter_eps = ts.get_profit_data(year, quarter)
            try:
                latest_eps = quarter_eps[quarter_eps['code'] == code]['eps'].values[0]
                #annualize eps
                latest_eps = latest_eps * 4.0 / quarter                
            except:
                print("failed to get eps, using last one %s" % (latest_eps))
            eps_series.append(latest_eps)
            latest_year = year
            latest_quarter = quarter
        
        print('%s: %s' % (date, latest_eps))
        date += date_delta
    return eps_series
Exemplo n.º 30
0
def get_report_data(year, season):
    if not available(year, season):
        return None

    print("get_report_data")
    save(ts.get_report_data(year, season), "basics/report_data", year, season)

    print("get_profit_data")
    save(ts.get_profit_data(year, season), "basics/profit_data", year, season)

    filename = "operation_data"
    print("get_operation_data")
    save(ts.get_operation_data(year, season), "basics/operation_data", year,
         season)

    filename = "growth_data"
    print("get_growth_data")
    save(ts.get_growth_data(year, season), "basics/growth_data", year, season)

    filename = "get_debtpaying_data"
    print("get_debtpaying_data")
    save(ts.get_debtpaying_data(year, season), "basics/debtpaying_data", year,
         season)

    filename = "get_debtpaying_data"
    print("get_cashflow_data")
    save(ts.get_cashflow_data(year, season), "basics/cashflow_data", year,
         season)
def store_fund_data(quarter_list):
    stock2year_path = os.path.join(LastFilePath, "stock_fundm_info")
    for fun_year, fun_quarter in quarter_list:

        #every dataframe you craw down all needs remove the duplicated row. Only need keep the first row of duplicates.

        # stock2year_report is tushare:get_report_data  (fundamental data).
        stock2year_report = ts.get_report_data(
            fun_year, fun_quarter).drop_duplicates(keep='first')
        # stock2year_prof is tushare.get_profit_data  (fundamental data).
        stock2year_prof = ts.get_profit_data(
            fun_year, fun_quarter).drop_duplicates(keep='first')
        # stock2year_opera is tushare.get_operation_data (fundamental data).
        stock2year_opera = ts.get_operation_data(
            fun_year, fun_quarter).drop_duplicates(keep='first')
        #stock2year_grow is tushare.get_growth_data (fundamental data).
        stock2year_grow = ts.get_growth_data(
            fun_year, fun_quarter).drop_duplicates(keep='first')
        #stock2year_debt is tushare.get_debtpaying_data (fundamental data).
        stock2year_debt = ts.get_debtpaying_data(
            fun_year, fun_quarter).drop_duplicates(keep='first')
        #stock2year_cash is tushare.get_cashflow_data (fundamental data).
        stock2year_cash = ts.get_cashflow_data(
            fun_year, fun_quarter).drop_duplicates(keep='first')
        #stock2year_comb is to combine all the stock2year data of same year and quarter in a same stock code.
        stock2year_list = [stock2year_report,stock2year_prof,stock2year_opera,stock2year_grow, \
                           stock2year_debt,stock2year_cash]
        for every_fund_element in stock2year_list:
            every_fund_element = every_fund_element.set_index('code')
        #use pandas concat to combine all the dataframe along columns.
        total_fund = pd.concat(stock2year_list, axis=1)
        HeadName = fun_year + "/" + fun_quarter + "_" + "fundamt_info"
        CsvName = os.path.join(stock2year_path, "{}.csv".format(HeadName))
        total_fund.to_csv(CsvName)
Exemplo n.º 32
0
def get_profit_data(year, quarter):
    try:
        df = ts.get_profit_data(year, quarter)
        engine = create_engine('mysql://*****:*****@127.0.0.1/stock?charset=utf8')
        df.to_sql('profit_data', engine, if_exists='append')
        print "message"
    except Exception, e:
        e.message
Exemplo n.º 33
0
def single_stock_report(code, year_start, k_index):
    """
    :param code: the valid stock code, for example '002146'
    :param year_start: the start date that we want to check the stock report, for example '201801'
    :param k_index: the performance of report we want to check
    :return: DataFrame table: the index is the quarter from start to end, the
    """

    if code is None:
        raise ValueError('please assign code')
    if year_start is None:
        raise ValueError('please assign year')
    if k_index is None:
        raise ValueError('please assign index')

    year_to_market = stock_list('timeToMarket')
    ytm = year_to_market[year_to_market.index == code]
    ytm = str(ytm.iloc[0])
    if ytm >= year_start:
        qs = getBetweenQuarter(ytm)
    else:
        qs = getBetweenQuarter(year_start)
    j = len(qs) - 1
    results = pd.DataFrame()
    new_index = []
    for i in range(j):
        year = int(qs[i].split('Q')[0])
        q = int(qs[i].split('Q')[1])
        n = 1
        data = []
        while n < 10:
            if k_index == 'get_profit_data':
                data = ts.get_profit_data(int(year), q)
            elif k_index == 'get_report_data':
                data = ts.get_report_data(int(year), q)
            elif k_index == 'get_operation_data':
                data = ts.get_operation_data(int(year), q)
            elif k_index == 'get_growth_data':
                data = ts.get_growth_data(int(year), q)
            elif k_index == 'get_debtpaying_data':
                data = ts.get_debtpaying_data(int(year), q)
            elif k_index == 'get_cashflow_data':
                data = ts.get_cashflow_data(int(year), q)
            else:
                raise Exception('the k_indexs is not correct')
            result = data[data['code'] == code]
            if len(result) >= 1:
                new_index.append('%d0%d' % (year, q))
                results = results.append(result[0:1], ignore_index=True)
                print(results)
                break
            elif len(result) == 0:
                n += 1
                continue
    new_index_1 = pd.DataFrame({"Y_Q": new_index})
    frames = [results, new_index_1]
    return pd.concat(frames, axis=1)
Exemplo n.º 34
0
def get_profit_data(year, quarter):
    filename = 'stock_profit'
    filepath = os.path.join(rootDir, 'StockBasis', filename + '.csv')
    if (os.path.exists(filepath)):
        data = pd.read_csv(filepath, encoding='gbk')
    else:
        data = ts.get_profit_data(year, quarter)
        data.to_csv(filepath)
    return data
Exemplo n.º 35
0
def loadprofit():
	for year in [2011,2012,2013,2014,2015,2016,2017]:
	  for quarter in [1,2,3,4]:
		 if quarter == 4 and year ==2017:
			break
		 profit = ts.get_profit_data(year, quarter)
		 filename = "C:\invest\\basic\\profit\\%s%s.csv" % (year, quarter)
		 print filename
		 profit.to_csv(filename, encoding='utf-8')
Exemplo n.º 36
0
def profit():
    df = ts.get_profit_data(2018, 2)
    print(df)
    data = df.to_dict('index')
    print(data)
    for code, value in sorted(data.items()):
        # print(value)
        if value['code'] == '600420':
            print(value)
Exemplo n.º 37
0
 def revenue(self):
     df = ts.get_profit_data(
         self.year,
         self.season).rename(columns={
             "code": "stock_id",
             "gross_profit_rate": "gross_profit_ratio"
         }).drop(labels=["name"], axis=1)
     df["season"] = self.year_season
     return df
Exemplo n.º 38
0
 def table_work(self, duration):
     table = ts.get_profit_data(2015, 4)[['net_profits', 'business_income','code']]
     previous = ts.get_profit_data(2016-duration-1, 4)[['net_profits', 'business_income','code']]
     n = 0
     avg = 0
     list = []
     for i in range(2016-duration,2016):
         current = (ts.get_profit_data(i, 4))[['net_profits', 'business_income','code']]
         hold = pd.merge(previous, current, on='code')
         table = pd.merge(table, hold, on='code')
         table['growth_%d'%(i)]=(table.net_profits_y/table.net_profits_x-1)*0.4 + (table.business_income_y/table.business_income_x-1)*0.6
         table = table.drop(table.columns[[3+n,4+n,5+n,6+n]], axis=1)
         previous = current
         n += 1
         list.append('growth_%d'%(i))
     for j in list:
         avg += table[j]*(1/len(j))
     table['avg_growth'] = avg
     return table
Exemplo n.º 39
0
def get_profit_data_quater():
    temp_year = start
    while(temp_year != end):
        for temp_quater in [1,2,3,4]:
            item = str(temp_year) + "-" + str(temp_quater)
            if not sql.has_table(item, engine, flavor="mysql"):
                print item + "begins"
                data_total_raw[item] = ts.get_profit_data(temp_year, temp_quater)
                print "\n"
                if any(data_total_raw[item]):   data_total_raw[item].to_sql(item, engine)
        temp_year += 1
Exemplo n.º 40
0
def getProfileReport(year):
    for q in [1, 2, 3, 4]:
        getDownloaded()
        if not isDownloaded(profitByYear(year, q)):
            try:
                print('Profit of ' + str(year) + ' and quarter is ' + str(q))
                profit_df = ts.get_profit_data(year, q)
                profit_df.to_csv(path + profitByYear(year, q))
                time.sleep(5)
            except Exception:
                logError('Profit: ' + str(year) + '-' + str(q) +
                         ' there is problem, will skip it. ')
Exemplo n.º 41
0
def sync_profit_data():
	'''
	sync profit data
	'''
	year = datetime.datetime.now().year
	month = datetime.datetime.now().month
	seaon = month/3
	if month<3:
		year = year - 1
		seaon = 4
	monthstr = '%s%s'%(year,seaon)
	DataFrameToMongo(ts.get_profit_data(year, seaon), MongoClient(mongourl)['stoinfo']['profit_data'], ['code'], monthstr)
Exemplo n.º 42
0
def down_fin(year, season):
	is_succ = False
	t_name = 'zf'+str(year)+str(season)
	print "down_fin.........", t_name
	print t_name
	while is_succ == False:
		try:
			pd = ts.get_profit_data(year,season)
			print type(pd)
			if str(type(pd)) == '<class \'pandas.core.frame.DataFrame\'>': 
				pd.to_sql(t_name, G_DBengine, if_exists='replace')
			is_succ	= True
		except ValueError, e:
			print 'ValueError:', e
Exemplo n.º 43
0
def write_profit():
    arr = [(x, y) for x in range(2007, 2018) for y in range (1, 5)]
    arr.remove((2017, 4))

    frames = []
    for item in arr:
        df = ts.get_profit_data(item[0], item[1])
        df.set_index('code', inplace=True)
        frames.append(df)

    quaters = [pd.Period('{}Q{}'.format(x,y)) for (x, y) in arr]
    result = pd.concat(frames, keys=quaters)
    result.index.names=[u'quarter', u'code']
    result.to_csv('profit.csv', encoding='utf-8')
Exemplo n.º 44
0
def update_basics():
    basics = ts.get_stock_basics()
    f = os.path.join(base_dir, 'basics.h5')
    basics.to_hdf(f, 'basics')

    today = datetime.date.today()
    current_year = today.year
    current_season = today.month / 3
    if current_season == 0:
        current_year -= 1
        current_season = 4
    length = 4 * 5

    year = current_year
    season = current_season
    for i in range(length):
        f = os.path.join(base_dir, 'basics-{0}-{1}.h5'.format(year, season))
        if os.path.exists(f):
            continue
        print(f)
        report = ts.get_report_data(year, season)
        report.to_hdf(f, 'report')

        profit = ts.get_profit_data(year, season)
        profit.to_hdf(f, 'profit')

        operation = ts.get_operation_data(year, season)
        operation.to_hdf(f, 'operation')

        growth = ts.get_growth_data(year, season)
        growth.to_hdf(f, 'growth')

        debtpaying = ts.get_debtpaying_data(year, season)
        debtpaying.to_hdf(f, 'debtpaying')

        cashflow = ts.get_cashflow_data(year, season)
        cashflow.to_hdf(f, 'cashflow')

        season -= 1
        if season == 0:
            season = 4
            year -= 1
Exemplo n.º 45
0
#!/usr/bin/env python3.4

import sys
import time
import tushare as ts
from sqlalchemy import create_engine
import mysql.connector

conn = create_engine('mysql+mysqlconnector://stockadmin:stock2016@localhost/stock?charset=utf8')

for year in range(2004,2012):
    for season in  range(1,5):
        print(year,season)
        df_profit = ts.get_profit_data(year,season)
        time.sleep(15)
        df_growth = ts.get_growth_data(year,season)
        time.sleep(15)
        df_operation = ts.get_operation_data(year,season)
        time.sleep(15)
        df_debtpaying = ts.get_debtpaying_data(year,season)
        time.sleep(15)
        df_cashflow = ts.get_cashflow_data(year,season)
        time.sleep(15)
        df_report = ts.get_report_data(year,season)
        df_profit.to_sql('profit',conn,if_exists='append')
        df_growth.to_sql('growth',conn,if_exists='append')
        df_operation.to_sql('operation',conn,if_exists='append')
        df_debtpaying.to_sql('debtpaying',conn,if_exists='append')
        df_cashflow.to_sql('cashflow',conn,if_exists='append')
        df_report.to_sql('report',conn,if_exists='append')
Exemplo n.º 46
0
@author: Fuqian
"""

from sqlalchemy import create_engine
import tushare as ts
#import pymongo
import pandas as pd



df_base = ts.get_stock_basics()

df_report_1503 = ts.get_report_data(2015,3)

df_profit_1503 = ts.get_profit_data(2015,3)

df_growth_1503 = ts.get_growth_data(2015,3)

#detail_daily={}

engine = create_engine('mysql://*****:*****@127.0.0.1/stock?charset=utf8')


for row_index, row in df_base.iterrows():
    try:
        f = open('qfq_err', 'a')
        f_d = open('detailDay_err','a')
        
        stocknum = row_index
        timeToMarket = df_base.ix[stocknum]['timeToMarket']
def download_profit_data(file_path, year, quarter):
    profit_data = ts.get_profit_data(year, quarter)
    if profit_data is not None:
        profit_data.to_csv(file_path + 'profit_' + str(year) + '_' + str(quarter) + '.csv', encoding='utf-8')
Exemplo n.º 48
0
# FinancialReport: EPS, EPS_YOY, ROE, net_profits, profits_yoy
# ProfitData: ROE, net_profit_ratio, gross_profit_rate, EPS, bips (business income per share)
# GrowthData: mbrg (main business rate growth), nprg (net profit), 
#             nav, targ (total asset), epsg, seg (shareholder's eqty)
# DebtPayingData: currentratio, quickratio, cashratio, icratio (interest coverage)


# TODO Data is available quarterly
# TODO Compare data for FinancialReport and ProfitData

FinancialData = ts.get_report_data(CURRENT.year, np.floor((CURRENT.month+2)/3)-1)
FinancialData = FinancialData.set_index('code')
FinancialData = FinancialData.drop(['name', 'bvps', 'distrib', 'epcf', 'report_date'], axis = 1)
FinancialData.to_csv('./ASHR/DATA/FinancialData_2015_1.csv', index = True)

ProfitData = ts.get_profit_data(CURRENT.year, np.floor((CURRENT.month+2)/3)-1)
ProfitData = ProfitData.set_index('code')
ProfitData = ProfitData.drop(['name', 'business_income', 'net_profits'], axis = 1)
ProfitData.to_csv('./ASHR/DATA/ProfitData_2015_1.csv', index = True)

GrowthData = ts.get_growth_data(CURRENT.year, np.floor((CURRENT.month+2)/3)-1)
GrowthData = GrowthData.set_index('code')
GrowthData = GrowthData.drop(['name'], axis = 1)
GrowthData.to_csv('./ASHR/DATA/GrowthData_2015_1.csv', index = True)

DebtPayingData = ts.get_debtpaying_data(CURRENT.year, np.floor((CURRENT.month+2)/3)-1)
DebtPayingData = DebtPayingData.set_index('code')
DebtPayingData = DebtPayingData.drop(['name', 'sheqratio', 'adratio'], axis = 1)
DebtPayingData.to_csv('./ASHR/DATA/DebtPayingData_2014_12.csv', index = True)

# Merging data
Exemplo n.º 49
0
import tushare
from datastorage.mongo import writetomongo

stock = tushare.get_profit_data(2015,4)
writetomongo(stock)
Exemplo n.º 50
0
 def test_getcompany_profit(self):
     log.info(ts.get_profit_data(2018, 2))
Exemplo n.º 51
0
    def pick_data(self, max_num_threads = 20, pause = 0):
        """
        pick all necessary data from local database and from internet for loaded stocks. This function will take a while.
        """
        logging.info('getting basics from tushare')
        self._init_stock_objs()

        # self.data_manager.drop_stock()
        # self.stocks = {key: self.stocks[key] for key in ['600233', '600130']}
        logging.info('totally there are %d listed companies' % len(self.stocks))

        logging.info('get indexes from tushare')
        self._get_indexes()

        # self._pick_hist_data_and_save(self.stocks, False, self.indexes['000001'].hist_start_date, max_num_threads)

        logging.info('getting last stock trading data')
        df = ts.get_today_all()
        self._extract_from_dataframe(df,
                    ignore=('changepercent', 'open', 'high', 'low', 'settlement', 'volume', 'turnoverratio', 'amount'),
                    remap={'trade': 'price', 'per': 'pe'})

        # calculate the report quarter
        report_year, report_quarter = ts.get_last_report_period()

        logging.info('getting last report (%d quarter %d) from tushare' % (report_year, report_quarter))
        df = ts.get_report_data(report_year, report_quarter)
        self._extract_from_dataframe(df)

        logging.info('getting last profit data from tushare')
        df = ts.get_profit_data(report_year, report_quarter)
        self._extract_from_dataframe(df, ignore=('net_profits', 'roe', 'eps'))

        logging.info('getting last operation data from tushare')
        df = ts.get_operation_data(report_year, report_quarter)
        self._extract_from_dataframe(df)

        logging.info('getting last growth data from tushare')
        df = ts.get_growth_data(report_year, report_quarter)
        self._extract_from_dataframe(df)

        logging.info('getting last debtpaying data from tushare')
        df = ts.get_debtpaying_data(report_year, report_quarter)
        self._extract_from_dataframe(df)

        logging.info('getting last cashflow data from tushare')
        df = ts.get_cashflow_data(report_year, report_quarter)
        self._extract_from_dataframe(df)

        logging.info('getting history trading data from tushare')
        start_from = self.indexes['000001'].hist_start_date
        data_full = self._pick_hist_data_and_save(self.stocks, False, start_from, max_num_threads, pause)  # anything that pulling data must before here

        self._remove_unavailable_stocks()

        '''
        # calculate qianfuquan data
        # deprecated due to precision issue

        for code, stock in self.stocks.items():
            for i in range(1, len(stock.hist_data.index)-1):
                b = stock.hist_data.at[stock.hist_data.index[i], 'close']
                a = stock.hist_data.at[stock.hist_data.index[i+1], 'close']
                p = stock.hist_data.at[stock.hist_data.index[i+1], 'p_change'] / 100.0

                q = (p*a+a)/b
                if q > 1.1:
                    print('%s chuq-uan %s: %s %s %s, 1/%s' % (stock, stock.hist_data.index[i], b, a, p, q))
        '''

        return data_full
Exemplo n.º 52
0
def getprofit(year,quarter):
	dfprofit = ts.get_profit_data(year,quarter)
	dfprofit.insert(0,'uploadtime',nowtime)
	dfprofit.insert(1,'year',year)
	dfprofit.insert(2,'quarter',quarter)
	dfprofit.to_sql('tb_profit',engine,if_exists='append')
Exemplo n.º 53
0
import tushare as ts
import sys
df = ts.get_profit_data(int(sys.argv[1]), int(sys.argv[2]))
df.to_csv(sys.argv[3], encoding="utf8")
import tushare as ts
import marshal, pickle

year = 2015

print(report_data)

report_data = ts.get_report_data(year, 4)
f = file('report_data', 'w')
pickle.dump(report_data, f)
f.close()

profit_data = ts.get_profit_data(year, 4)
f = file('profit_data', 'w')
pickle.dump(profit_data, f)
f.close()

growth_data = ts.get_growth_data(year, 4)
f = file('growth_data', 'w')
pickle.dump(growth_data, f)
f.close()
Exemplo n.º 55
0
df.to_sql('report_data',engine, if_exists='replace')
df = ts.get_report_data(currentYear,currentSeason)
df = df.assign(quater=currentQuater)
df.to_sql('report_data',engine, if_exists='append')

# import profit data
#code,代码
#name,名称
#roe,净资产收益率(%)
#net_profit_ratio,净利率(%)
#gross_profit_rate,毛利率(%)
#net_profits,净利润(万元)
#esp,每股收益
#business_income,营业收入(百万元)
#bips,每股主营业务收入(元)
df = ts.get_profit_data(lastYear,lastSeason)
df = df.assign(quater=lastQuater)
df.to_sql('profit_data',engine, if_exists='replace')
df = ts.get_profit_data(currentYear,currentSeason)
df = df.assign(quater=currentQuater)
df.to_sql('profit_data',engine, if_exists='append')




# import operation data
#code,代码
#name,名称
#arturnover,应收账款周转率(次)
#arturndays,应收账款周转天数(天)
#inventory_turnover,存货周转率(次)
Exemplo n.º 56
0
#coding=utf-8
import tushare as ts

# 获取沪深上市公司基本情况
df = ts.get_stock_basics()
date = df.ix['600848']['timeToMarket']#上市日期YYYYMMDD

#获取2014年第3季度的业绩报表数据
ts.get_report_data(2014,3)

#获取2014年第3季度的盈利能力数据
ts.get_profit_data(2014,3)


#获取2014年第3季度的营运能力数据
ts.get_operation_data(2014,3)


#获取2014年第3季度的成长能力数据
ts.get_growth_data(2014,3)

#获取2014年第3季度的偿债能力数据
ts.get_debtpaying_data(2014,3)

#获取2014年第3季度的现金流量数据
ts.get_cashflow_data(2014,3)
# open:开盘价
# high:最高价
# close:收盘价
# low:最低价
# volume:成交量
# price_change:价格变动
# p_change:涨跌幅
# ma5:5日均价
# ma10:10日均价
# ma20:20日均价
# v_ma5:5日均量
# v_ma10:10日均量
# v_ma20:20日均量
# turnover:换手率[注:指数无此项] 4/4

raw_data_profit = ts.get_profit_data()
# code,代码
# name,名称
# roe,净资产收益率(%) 7
# net_profit_ratio,净利率(%)
# gross_profit_rate,毛利率(%)
# net_profits,净利润(万元)
# eps,每股收益
# business_income,营业收入(百万元)
# bips,每股主营业务收入(元)

raw_data_report = ts.get_report_data()

# code,代码
# name,名称
# eps,每股收益