关于投资,要到大道至简,很轻松愉悦。
要么精细,高频、深度学习。
我不太建议,尤其是新同学,所谓的自动化的主动策略,然后看似自动化的实盘。
交易本身就是要么赚,要么亏。(50%)。你觉得自己时而行,进而不行,长期看,大概率不行。
大类资产,风险平价是入门首选。
要么整高科技,高频,深度学习。
我这段时间做的是前者,我认为对大家更有帮助。
01 量化策略在服务器的存储
量化策略的表达,是一个字典或json,当然它包含嵌套的数据结构。如果要通过关系数据库如mysql去存储。至少得设计好几个关联表。
但我们其实就是存储一个数据结构,nosql就非常合适。
from quantlab.engine.engine import Task
import uuid
from dataclasses import asdict
from quanttask.utils import mongo_utils
def task_portfolio():
task = Task()
task._id = '5a3907af-7852-11ee-aeb4-c858c0412ade' task.name = '大类资产配置' task.desc = '沪深300指数与创业板指数,等权的配置' task.symbols = ['510300.SH', '159915.SZ'] task.template = '大类资产配置' task.weights = 'WeightEqually' task.period = 'RunMonthly' task.benchmark = '510300.SH' print(asdict(task)) return task if __name__ == '__main__': import pandas as pd tasks = [task_portfolio()] df = pd.DataFrame(tasks) mongo_utils.write_df('tasks', df )
同样,回测结果直接保存回mongo供调用:
02 策略在网页上的呈现
mongo也是支持跨表联合查询的:
def strategies(request): nav_flag = 888 #items = list(mongo_utils.get_db()['tasks_performance'].find({})) items = mongo_utils.get_db()['tasks_performance'].aggregate( [ { '$lookup': { "from": "tasks", # 需要联合查询的另一张表B "localField": "_id", # 表A的字段 "foreignField": "_id", # 表B的字段 "as": "task_docs" # 根据A、B联合生成的新字段名 }, }, { '$project': # 联合查询后需要显示哪些字段,1:显示 { 'task_docs.name': 1, 'task_docs.desc': 1, 'task_docs.author': 1, 'CAGR':1, '最大回撤':1, 'benchmark':1, '_id': 0, }, }, { '$match': # 根据哪些条件进行查询 { } } ] ) items = list(items) print(items) tasks = [] for item in items: task = item.copy() task['bechmark_CARG'] = task['benchmark'][0]['CAGR'] task['author'] = task['task_docs'][0]['author'] task['name'] = task['task_docs'][0]['name'] task['desc'] = task['task_docs'][0]['desc'] tasks.append(task) items = tasks return render(request, 'quant/mall.html', {**locals()})
最终呈现如下的样子如下:
后续可以继续美化和优化。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103733
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!