原创文章第465篇,专注“AI量化投资、个人成长与财富自由”。
本周星球大致的计划如下:
1、quantlab策略上平台可配。
2、前端传参数可回测策略。
3、策略结果呈现。
4、Django-allauth邮件登录,原有用户导入。
5、deep alpha stock data代码解读。
django后台通过model直接生成管理代码,还是非常强大的:
具体实现代码如下:
class StrategyInfo(models.Model):
def __str__(self):
return self.name
class Meta:
verbose_name = '策略'
verbose_name_plural = verbose_name
name = models.CharField(max_length=50, verbose_name='策略名称')
desc = models.TextField(verbose_name='策略描述', null=True, blank=True)
PERIOD_CHOICES = (
('RunDaily', '每天'),
('RunWeekly', '每周'),
('RunMonthly', '每月'),
('RunQuarterly', '每季'),
('RunYearly', '每年'),
)
run_period = models.CharField(max_length=20, choices=PERIOD_CHOICES, verbose_name='调仓周期')
WEIGHT_CHOICES = (
('WeightEqually', '等权分配'),
('WeightFixed', '固定权重'),
('WeightERC', '分险平价'),
)
weight_algo = models.CharField(max_length=20, choices=WEIGHT_CHOICES, verbose_name='仓位权重')
benchmark = models.ForeignKey(FundInfo, on_delete=models.CASCADE, related_name='benchmark', verbose_name='基准',
null=True)
funds = models.ManyToManyField(FundInfo, verbose_name='候选池列表', null=True)
一个基本的策略就配置起来了,当然复杂的策略,比如涉及的“买入”,“卖出”信号的,需要扩展字段,比如在json里实现,然后在后台可以直接编辑。
通过api上传配置信息,使用django-ninjia,与fastap类似:
这里使用django,mysql存储基础信息,然后mongo存储json配置文件:
@api.post('/strategy/add')
def insert_or_update(request, payload: StrategyIn):
print(payload)
s = StrategyInfo.objects.filter(pk=payload.id).first()
if not s:
s = StrategyInfo(name=payload.name, desc=payload.desc)
s.save()
else:
s.name = payload.name
s.save()
doc = payload.dict()
doc['_id'] = s.pk
mongo_utils.get_db()['strategies'].update_one({'_id': s.pk}, {'$set': doc}, upsert=True)
return {"message": "OK"}
api接口基本写好,而且可以通过api直接调取数据进行回测。
明天构建前端页面,对策略进行配置,并保存到后台,同时可以查看回测结果。
吾日三省吾身
半个成品胜过一个半成品。 重来
完成的重要性,完成产品化的交付,才能建立商业化闭环的正反馈。
这一点非常重要。
年轻时做过不少个人项目,从安全产品,到爬虫和舆情系统,自动化发布系统,然后是量化投资系统等。
或为炫技,或为纯粹的技术兴趣。
但用户关心的事情是解决问题。
因此,把确定的东西先变成确定的,可以解决用户问题的产品,这个很关键。
结合最近的反思,一是躬身入局做生产者,二是强调交付确定性(产品完成度)。
近期文章: