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())
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)
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)
def stocks_fill_snowball_stats(): [s.fill_snowball_stat() for s in db.all_stocks()] return redirect(url_for('stocks'))