예제 #1
0
def parse_snowball_stocks(filter_bad=True, only_starred_owned=False):
    random.seed()
    find = {'$or': [{'starred': True}, {'owned': True}]} if only_starred_owned else None
    stocks =  db.all_stocks(find=find, filter_bad=filter_bad)
    print('{} 종목 수집'.format(len(stocks)))
    for stock in stocks:
        if stock.get('code', None):
            parse_snowball(stock['code'])
            time.sleep(random.random())
예제 #2
0
def stocks(status=None):
    find = None
    if status == 'starred':
        find = {'starred': True}
    elif status == 'owned':
        find = {'owned': True}
    elif status == 'starredorowned':
        find = {'$or': [{'starred': True}, {'owned': True}]}
    elif status == 'doubtful':
        find = {'doubtful': True}
    order_by = request.args.get('order_by', 'expected_rate')
    ordering = request.args.get('ordering', 'desc')
    stocks = db.all_stocks(order_by=order_by, ordering=ordering, find=find, filter_bad=status!='bad')
    return render_template('stocks.html', stocks=stocks, order_by=order_by, ordering=ordering, status=status)
예제 #3
0
파일: app.py 프로젝트: jangxyz/snowball
def stocks(status=None, filter_id=None):
    find = None
    filter_fscore = False
    stat = {}
    if status == 'starred':
        find = {'starred': True}
    elif status == 'owned':
        find = {'owned': True}
    elif status == 'starredorowned':
        find = {'$or': [{'starred': True}, {'owned': True}]}
    elif status == 'doubtful':
        find = {'doubtful': True}
    elif status == 'fscore':
        filter_fscore = True
    order_by = request.args.get('order_by', 'expected_rate')
    ordering = request.args.get('ordering', 'desc')

    filters = db.all_filters()
    current_filter = None
    if filter_id:
        current_filter = db.filter_by_id(filter_id)
    
    stocks = db.all_stocks(order_by=order_by, 
        ordering=ordering, find=find, 
        filter_by_expected_rate=find==None, 
        filter_bad=status!='bad', 
        filter_fscore=filter_fscore,
        filter_options=(current_filter.filter_options if current_filter else []))

    if status in ['owned', 'starred', 'starredorowned']:
        stat['low_pbr'] = len([stock for stock in stocks if stock.pbr <= 1])
        stat['high_expected_rate'] = len([stock for stock in stocks if stock.expected_rate >= 15])
        stat['fscore'] = len([stock for stock in stocks if stock.latest_fscore >= 3])
        stat['mean_expected_rate'] = mean_or_zero([stock.expected_rate for stock in stocks])
        stat['mean_expected_rate_by_low_pbr'] = mean_or_zero([stock.expected_rate_by_low_pbr for stock in stocks])
        stat['mean_future_roe'] = mean_or_zero([stock.future_roe for stock in stocks])
        
        qROE_numbers = [stock.QROEs[0][1] for stock in stocks if len(stock.QROEs) > 0]
        qROE_numbers = [float(roe_number) for roe_number in qROE_numbers if roe_number]
        stat['mean_qROEs'] = mean_or_zero(qROE_numbers)
        stat['qROEs_count'] = len(qROE_numbers)

    return render_template('stocks.html', stocks=stocks, order_by=order_by, ordering=ordering, status=status,
        available_filter_options=db.available_filter_options, filters=filters,
        current_filter=current_filter, stat=stat)
예제 #4
0
파일: app.py 프로젝트: jangxyz/snowball
def stocks_fill_snowball_stats():
    [s.fill_snowball_stat() for s in db.all_stocks()]
    return redirect(url_for('stocks'))