feat: support multiple manager when outputing high-score-fund
parent
381073fc19
commit
72450f19dd
@ -0,0 +1,43 @@
|
|||||||
|
'''
|
||||||
|
Desc:
|
||||||
|
File: /query.py
|
||||||
|
Project: crud
|
||||||
|
File Created: Wednesday, 21st September 2022 10:54:27 pm
|
||||||
|
Author: luxuemin2108@gmail.com
|
||||||
|
-----
|
||||||
|
Copyright (c) 2022 Camel Lu
|
||||||
|
'''
|
||||||
|
|
||||||
|
import sys
|
||||||
|
sys.path.append('./src')
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from sqlalchemy import and_
|
||||||
|
from models.fund import FundBase, FundQuarter
|
||||||
|
from models.manager import ManagerAssoc
|
||||||
|
from models.var import engine
|
||||||
|
|
||||||
|
session = Session(engine)
|
||||||
|
|
||||||
|
def query_high_score_funds(quarter_index):
|
||||||
|
words = ['%指数%', '%C', '%E', '%H%']
|
||||||
|
rule = and_(*[FundBase.fund_name.notlike(w) for w in words])
|
||||||
|
res = session.query(FundQuarter,ManagerAssoc,FundBase).where(FundQuarter.fund_code == ManagerAssoc.fund_code).where(FundQuarter.fund_code == FundBase.fund_code).filter(FundQuarter.quarter_index == quarter_index, \
|
||||||
|
FundQuarter.morning_star_rating_5 >= 3, # 5年评级大于等于3
|
||||||
|
FundQuarter.morning_star_rating_3 == 5, # 3年评级等于5
|
||||||
|
FundQuarter.stock_position_total >= 50, # 股票仓位大于50
|
||||||
|
FundQuarter.stock_position_ten <= 60, # 十大股票仓位小于60
|
||||||
|
FundQuarter.risk_assessment_sharpby > 1, # 夏普比例大于1
|
||||||
|
FundQuarter.risk_rating_2 > 1, # 2年风险评级大于1
|
||||||
|
FundQuarter.risk_rating_3 > 1, # 3年风险评级大于1
|
||||||
|
FundQuarter.risk_rating_5 > 1, # 5年风险评级大于1
|
||||||
|
# ManagerAssoc.manager_start_date < last_year_date, # 至少任职该基金一年
|
||||||
|
FundQuarter.total_asset < 100, # 总规模资金小于100亿
|
||||||
|
).filter(rule).all()
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
quarter_index = '2022-Q2'
|
||||||
|
fund_list = query_high_score_funds(quarter_index)
|
||||||
|
# print("fund_list",fund_list)
|
||||||
|
|
Loading…
Reference in New Issue