分享

AI量化表达式编辑器——不需要再手动写代码开发策略

 AI量化实验室 2023-10-12 发布于北京

原创文章第287篇,专注“个人成长与财富自由、世界运作的逻辑与投资"。

今天实现了因子编辑器,这是咱们AI量化系统最重要的部分,很多同学就是不知道因子如何计算,以致于不理解策略怎么写。

这里我做了一个表达式编辑器,基本流程走通了,——还没有完全串起来。

这里代码如下(代码已经更新至星球,大家可以前往下载):

from gui.panels.dlg_editor import DlgEditor
import wx
from engine.config import IMAGE_DIR

class EditorUtils:
def __init__(self):
self.dlg = DlgEditor(None)

self.image_list = wx.ImageList(16, 16)
self.image_list = wx.ImageList(16, 16)
lab = IMAGE_DIR.joinpath('root.png').resolve()
folder = IMAGE_DIR.joinpath('folder.png').resolve()
ind = IMAGE_DIR.joinpath('ind.png').resolve()
self.root_icon = self.image_list.Add(wx.Image(str(lab),
wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap())
self.folder_icon =self.image_list.Add(wx.Image(str(folder),
wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap())
self.ind_icon =self.image_list.Add(wx.Image(str(ind),
wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap())
self.dlg.tree_rules.SetImageList(self.image_list)

self._init_tree_inds()

self.dlg.tree_rules.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_sel_changed)
self.dlg.tree_rules.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.on_double_clicked)


def show_model(self):
return self.dlg.ShowModal()

def on_double_clicked(self, e):
item = e.GetItem()
data = self.dlg.tree_rules.GetItemData(item)
if data:
if 'expr' in data.keys():
self.dlg.text_rules.SetInsertionPoint(0)

self.dlg.text_rules.AppendText(data['expr'])
#self.dlg.label_tips.SetLabelText(data['help_text'])

def on_sel_changed(self, e):
item = e.GetItem()
data = self.dlg.tree_rules.GetItemData(item)
if data:
if 'help_text' in data.keys():
self.dlg.label_tips.SetLabelText(data['help_text'])


def _init_tree_inds(self):
data = {
'价量指标': {'open': {'help_text': '开盘价','expr':'open'},
'high': {}, 'low': {}, 'close': {}, 'volume': {}
},
'时间序列函数': {'shift': {}, 'rsrs': {'help_text': '光大RSRS指标','expr':'rsrs(high,low,18)'}, 'roc': {}, 'slope': {}}
}

tree = self.dlg.tree_rules
root = tree.AddRoot("指标与函数集合")
self.dlg.tree_rules.SetItemImage(root, self.root_icon, wx.TreeItemIcon_Normal)
for text, category_data in data.items():
category_item = tree.AppendItem(root, text)
self.dlg.tree_rules.SetItemImage(category_item, self.folder_icon, wx.TreeItemIcon_Normal)
for ind, item_data in category_data.items():
node_item = tree.AppendItem(category_item, ind)
self.dlg.tree_rules.SetItemImage(node_item, self.ind_icon, wx.TreeItemIcon_Normal)

tree.SetItemData(node_item, item_data)
tree.ExpandAll()

吾日三省吾身

人无远虑,必有近忧。

近期总有忧心一些有的没有,非常小概率,几乎不可能发生的事情。

遇到问题都要解决,但不是所以想到的事情都即时有解,恐惧变焦虑,徒增精神内耗,浪费心智带宽。

遇事解决之道,可以找人聊,但这个效率低,现在大家都有各自的事情,而且并非所有人都有兴趣,也意愿,有能力与你探讨。找书本是最好的途径,以前是一个人跑到书店,一待一上午,顺手翻翻也长见识,现在连门都可以不出了,手机里就是好几座图书馆——阅读是最好的“避难所”,有一本好书在旁,便不觉得等待是在浪费时间了。

读了一些书,发现焦虑高敏感人群还挺普遍,尤其是当下这个快节奏的生活。杞人忧天,灾难性思维者众——无它,唯有自渡。

把能想到的问题恐惧程度分级是一个有意思的做法。比如80-100,就是特别严重,比如重疾,像蔡磊渐冻症这样的不治之症,或者人生安全。60-80是重大的财务损失。其余的事情,应该都在60往下。99%的事情,即不会发生,且就算发生,也在0-20之间,就是完全可以轻松应对。

人生在世,体验而已,允许一切发生。

超越底线思维,向上求,提升自己应对不确定性的能力才是王道。

远虑,就是看未来的趋势与机会。

经济换档,技术革命还有人口减少。

技术革命是我们能够参与的,技术会颠覆很多东西,尤其是金融业,所以我们做AI量化,这个风口一定会来。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多