worker.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:flats 作者: librae8226 项目源码 文件源码
def __get_est_price_mode_pb(realtime, code, years):

    q_str = 'code==' + '\"' + code + '\"'

    pb_obj = {}
    bvps = 0
    for y in range(datetime.now().year - years, datetime.now().year + 1):
        for q in range(1, 5):
        quarter = str(y)+'q'+str(q)
        if (os.path.exists(PREFIX+'/'+quarter+'.csv')):
        r = __pd_read_report(quarter)
        if (len(r.query(q_str)) > 0):
            # save all pb history and latest bvps
                    tmp_pb, tmp_bvps = __get_pb_and_bvps(code, quarter)
                    if (isinstance(tmp_pb, float) & isinstance(tmp_bvps, float)):
                        pb_obj[quarter] = tmp_pb
                        bvps = tmp_bvps
                        log.debug('%s pb: %.2f, bvps: %.2f', quarter, pb_obj[quarter], bvps)
                    else:
                        log.warn('skip %s', quarter)
                        continue
    #sorted(pb_obj)
    #log.debug(pb_obj)
    arr = pb_obj.values()
    mu, std = norm.fit(arr)

    if (realtime):
    d = datetime.now()
    today = __pd_read_today_all()
    close = round(today.query(q_str).trade.values[0], 2)
    else:
    k, d = __get_k_data_of_last_trade_day(code)
    close = round(k.close.values[0], 2)
    log.info('%s price: %.2f @ pb %.2f, bvps %.2f', d.strftime("%Y-%m-%d"), close, close/bvps, bvps)
    log.info('mu, std: %.2f, %.2f', mu, std)

    left = __estimation_formula_pb(bvps, mu - std)
    centrum = __estimation_formula_pb(bvps, mu)
    right = __estimation_formula_pb(bvps, mu + std)
    value = __estimation_formula_pb(bvps, 1.0)

    log.info('est dynamic: %.2f~%.2f~%.2f', left, centrum, right)
    log.info('est value: %.2f', value)
    log.info('range from left: %.2f%%', (close-left)/left*100.0)
    log.info('position: %.2f%%', (close-left)/(right-left)*100.0)

    return left, centrum, right, value
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号