50行代码实现股票回测
1 引言
之前,尝试做股票工具一直想做的大而全,试图抓取长期的各个维度数据,然后统计或者训练模型。想把每个细节做到完美,结果却陷入了细节之中,最后烂尾了。
最近,听到大家分享了一些关于深度学习、时序模型、强化学习在股票预测方面的新论文。但是觉得这些理论与我们的实际操作还有很大的距离。目前好像更需要的是一些具体而实用的辅助工具。
这次,尝试用 50 行代码完成一个简单的股票回测工具。输入的数据是 A
股的股票代码和时间,通过工具抓取股票数据。然后编写了策略,并使用回测工具来展示策略在数据上的具体操作和盈亏。
具体使用场景如下:当我们想采用某种策略来操作某支股票时,可以选择想要购买的股票,或者选择与之类似的股票;然后,选择一个与当前大趋势相似的时段,用历史数据来验证这个策略是否可行,以及其可能带来的盈利效果。
你不会编写策略也没关系。这里使用的 backtrader 库自 2015
年就已经开源,相关资料丰富。一般的交易策略代码,编程机器人(如 gpt4,
copilot)都能根据文字描述直接编写,只需要稍作修改即可。
2 工具介绍
这里采用了两种工具,一是用于抓取 A 股股票数据的
a ...
开源工具_Aider_重塑编程体验
项目地址:https://github.com/paul-gauthier/aider
编程语言:主要使用 Python
Star:8.9K+
功能:在终端中直接与 GPT-3.5/GPT-4 交互,编写或修改代码
主要优点:增加了代码生成的可控性,一次可以修改多个文件
1 编程工具
以前我们使用的辅助编辑工具多数是嵌入在 IDE
里的插件,主要提供代码段和建议。或者与 Agent
结合,实现复杂项目。相对来说比较细碎且不可控,还是主要以人为主。
另外,编程时使用大模型和问答场景一样,也存在数据问题,例如如何精准地提问、如何在有限的上下文限制下传达重要信息、如何判断哪些信息最相关,以及如何在解决问题时节约
token 等。
与问答不同之处在于,编程返回内容有更高要求,生成的程序需要可执行,并且在修改代码的场景中最好能看到代码对比效果。同时,我们还有一些工具可以辅助生成数据,例如语法检查工具,在运行的错误信息传给大模型继续修改。通过
Agent 之间的配合可以实现多步组合效果。
目前这些功能基本由本地端的编程工具控制,最好能让程序员更为可控,比如批量调用;再如简化工作流程:查
-&g ...
Agent具体实现
1 适用场景
需要多步组合、选择路径的复杂问题。
该问题可以被拆分成多个子模块,每个子模块都能清晰地定义输入、输出和功能,并能判断是否达成目标。
可能感觉有解决的方法,但不能确定具体的每一步方法。
可能存在多种组合方式,而不仅限于单一的方法,并且我们无法确定最优的解决方案。
对于单个模块而言,只需将接口描述清楚,无需过多考虑它与其他模块之间的调用关系。
2 原理
Thought->Action->Observation (Repeated many times)。
代理根据用户输入及当前状态选择一个动作,执行该动作并观察结果,然后继续下一个动作。
有了代理,就不需要手动编写 if/else
逻辑了,只需将选项提供给模型,让其进行判断。
|500
(图片来自网络)
3 langchain agent
Langchain 本身提供一些工具,例如 Google 搜索、GitHub 和 Python
等。如果需要自己实现工具,则需要继承 BaseTool 类,并实现 run
方法。模型根据工具的描述调用相应的方法,并观察其返回结果。
3.1.1 类别
计划代理:通过 l ...
ffmpeg常用命令
1 取视频中的音频
1$ ffmpeg -i xxx.mp4 -vn -acodec libmp3lame -ar 44100 -ac 2 -ab 192k xxx.mp4
2 加字幕
1$ ffmpeg -i xxx.mp4 -vf "subtitles=xxx.srt:force_style='FontName=SimSun,Bold=-1,Fontsize=8,outline=1,Shadow=0,OutlineColour=&H555555&'" -c:a copy -f mp4 xxx_out.mp4
3 换声音
1$ ffmpeg -i xx.mp4 -i xx.mp3 -c:v copy -map 0:v:0 -map 1:a:0 xxx.mp4
4 参考
ffmpeg
使用方法
ffmpeg
字幕设置
推荐一个Obsidian皮肤
大道至简——皮肤的最高境界是你感觉不到它的存在。
自从开始使用 OB 以来,我几乎没有更换过皮肤,一直用 Blue
topaz。在使用了两年半后,我终于决定换成了新的皮肤 Border,它是今年
Obsidian 官方大奖 Gems of The Year 的最佳主题。
小伙伴问我为啥,我认真想了想:并不是因为它好看,而只是因为它可以减轻我的阅读负担,让阅读和写作不那么辛苦。我有一点轻微的阅读障碍,在面对大段文字时总是当然地排斥。所以更倾向于使用工具来改善情况,觉得没有必要非得通过锻炼自己来解决问题,毕竟我也练不出来。
Blue Topaz
细致细腻,这种透明的质感女生都很喜欢。
经过多次更新,当前版本更朴素了。
实际上只使用了主色 (蓝)
和灰两种颜色,比较清新,但这也限制了它的表达能力。
主色深蓝和浅蓝之间的区别并不明显,不对比常常看不出标题层级。
Border
标题没使用彩色,标题前用不同颜色区分层级,细细一条又不突兀。
标题从大到小分别是:红橙黄绿蓝紫,符合色谱基本认知。
白底有 Word
某个版本的风格,有种久违的熟悉感,暗底不完全黑比较柔和。
使用强刺激的颜色:粗 ...
Obsidian_多文档管理插件Longform
1 使用场景
Longform 插件是 Obsidian
的一个功能强大的插件,用于帮助用户更好地管理复杂文档。它适用于写小说、长篇文档或管理复杂项目笔记等场景。
当文档很长时,一般将复杂内容都放在一个 markdown
文件中进行维护。我们常常将每个主题拆分为小文章,并在文章中相互链接。如果需要与他人分享这些文档,就比较麻烦。
在没有 Longform
插件之前,我们如何处理呢?首先,无法一次导出多个文档,只能手动合并后再导出;在维护项目时,可能需要生成索引文件,然后手动编辑这个文件以添加新文档,这也相当痛苦;文档之间的先后关系通过命名顺序(0_xx、1_xx)来调整,但如果改变顺序,则需要修改多个文件名。
2 原理
树型结构和网状结构都是比较松散的结构。无论笔记的重要性、大小还是时间顺序,对用户来说都是一样的。
而 Longform
可以看作是在树状结构和网状结构之外加入了一个“项目”的结构。每个项目包含多个文档,Longform
用以更好地组织这些文档,并提供视图、编辑、统计和导出功能。让我们能够专注于当前进行的项目,并快速切换到该项目,并管理文档之间的层次关系和先后关系。
具 ...
开机自动启动autossh
1 功能
我有一个本地服务器,想通过网络服务器端口映射的方式供其他主机连接。具体使用
SSH 端口映射的方式,并且希望在重新启动后,登录之前也能正常连接。
2 原理
定期检查 SSH 连接是否仍然正常,并在发现连接中断或不稳定时重新启动 SSH
进程。
它会创建一个额外的 " 监控端口 "(通常由 -M
选项指定),通过这个端口发送和接收数据包。如果发现数据包不能通过这个监控端口到达远程服务器,就认为连接已断开。如果不设置
-M 端口,autossh 会依赖于 SSH 本身的心跳(通过
ServerAliveInterval 等参数)来进行监控。
3 操作
3.1 配置服务
123456789101112131415161718$ vi /etc/systemd/system/autossh.service编辑如下:[Unit]Description=Autossh tunnelWants=network-online.targetAfter=network-online.target [Service]Type=simpleUser=xieyanExecStart=autossh - ...
开源AI程序员SWE-Agent的实现方法
1 引子
前几天,AI 编程机器人 Devin
引起了热议。传言称:程序员的饭碗就要丢了。这两天,一个类似功能的产品
SWE-Agent 开源,在 SWE-Bench 上实现了与 Devin
类似的效果。下面让我们来看看 AI 程序员的具体实现方法。
2 信息
地址:https://github.com/princeton-nlp/SWE-agent
功能:修复 Github 库 Issue 中的问题。
3 原理
作者提出了:Agent-Computer Interface (ACI) 代理计算机接口。优化了
Agent 与计算机之间的衔接,使LLM
能够访问、查看、编辑和执行代码文件。
贡献如下:
添加了编辑时运行命令的
Linter,如果语法不正确,则不允许编辑命令通过。
为 Agent 提供了文件查看器,在每个回合只显示 100
行时,查看器效果最佳。作者构建的查看器支持上下文滚动,并且可以在文件中进行搜索。
为 Agent
提供了专门构建全目录字符串搜索命令,并发现以简洁的方式列出匹配项很重要。因为每次向模型展示每个匹配项反而会给模型带来更大混乱。
当命令的输出为空时, ...
android开发环境_Android_Studio
1 下载
https://developer.android.com/studio?hl=zh-cn
2 安装
123$ tar xvzf android-studio-2023.2.1.23-linux.tar.gz$ cd android-studio/bin/$ ./studio.sh
本机在:/exports/download/src/android-studio/bin
按提示安装。
3 使用
3.1 新建项目
新建一个最简单的项目
3.2 编译
左下锤子图标 build(按提示下载编译工具)
3.3 运行
3.3.1 创建模拟器
第一次运行时,如果不连接硬件设置,需要建立模拟器环境
Device Manager(右上),打开时默认有一个设备;也可点 +
号,创建一个新模拟器
Running Devices,点 + 号,启动一个设备
在左下或者菜单中点击 Run,即可在模拟器中调试
修改后:
第一次运行时,如果没有连接硬件设置,需要建立模拟器环境。
在 Device Manager(右上方),默认已经有一个设备;也可以点击
+,创建一个新的模拟器。
在 Runn ...
通过LENS看人类行为
1234567英文名称: Human behaviour through a LENS中文名称: 语言与决策_通过LENS看人类行为链接: http://arxiv.org/abs/2403.15293v1作者: Valerio Capraro机构: 米兰-比科卡大学日期: 2024-03-22
1 读后感
最近看了一些 AI
反哺认知科学的论文,它们探讨了记忆、联想和梦境建模,但没有找到对情绪的分析。我一直很好奇:像自怜、嫉妒这些情绪进化出来究竟有什么作用。
然后我看到了这篇文章,觉得其中的想法很有趣。核心内容是:语言框架导致行为上的显著变化,语言框架又可以被各方利用来谋取利益。研究重点是:语言框架如何影响人们的决策。作者提出了
LENS 框架,如图 -1
所示,他认为语言可以通过情绪和规范两个方面来产生影响,并最终影响决策结果。在某种程度上,他提出了一种对人类决策进行建模的方法。这里的“规范“主要指道德和价值观,想想确实很重要。
对于语言,在使用大型模型时我们也经常遇到这种问题:改变表述方式会得到完全不同的解决方案,然后有人使用
p-tuning
等方法来提高模型对于同一问题不同描 ...