一个牛逼因子,40多行Python代码选出一个翻倍的股票!

本文介绍了如何使用Python进行股票数据分析,包括爬取数据、清洗、财务指标分析(如净利润同比增长率)以及与股票涨跌幅结合构建因子来筛选低估股票。作者通过实例展示了如何通过Python实现股票投资策略,强调了Python在量化投资中的实用价值。

这篇文章讲的是Python量化的系列内容,相关内容还包括如何准备爬取数据,拿到数据如何清洗,如何回测,如何用策略去开仓平仓,如何可视化等等。

今天又挖掘出一个不错的因子,看了一下效果不错,竟然一个月涨了56% ,2月份到现在已经翻倍了,太神奇了。

我们还是以创业板为例子来挖掘股票(其他板块类似),这次的因子是涨跌幅和财务指标的因子。简单说就是财务数据很好,但是股票价格严重低估的,我们用Python来把这样的股票筛选出来,然后进行因子排名,择机入场。

1.什么是财务数据

财务数据,就是我们在股票软件或者股票网站上经常看到的F10. 主要是反应在一定时期内的财务状况、经营成果和现金流量的各项数值记录。这些数据通常通过财务报表来体现,主要包括资产负债表、利润表和现金流量表等。通过分析这些财务数据,投资者和分析师可以评估公司的财务健康状况、盈利能力、成长潜力和风险水平。

我们打开同花顺软件,随便找一个股票看一下:

在这里插入图片描述

这个里面有很多指标,我们挑几个拿出来讲一下:

1).市盈率(P/E Ratio):市盈率是衡量股票价格与每股收益(EPS)之比的指标,用来评估股票的估值水平。高市盈率可能意味着股票相对于其盈利被高估,而低市盈率可能表示股票被低估。

2).市净率(P/B Ratio):市净率是公司市值与其账面价值之比,用于评估股票价格与公司净资产的关系。一般而言,市净率低于1可能表明股票被低估。

3).净资产收益率(ROE):净资产收益率是衡量公司盈利能力的指标,表示公司净利润与股东权益的比率。高ROE值通常意味着公司管理层在使用股东资本方面效率较高。

4).资产负债率(Debt-to-Asset Ratio):资产负债率显示了公司总负债与总资产的比例,用以评估公司的财务杠杆水平和偿债能力。较低的资产负债率表示较低的财务风险。

5).营业收入增长率:这一指标显示了公司营业收入的增长速度,反映了公司销售和业务扩展的能力。持续的收入增长是公司成长性的重要标志。

6).现金流量:包括经营活动产生的现金流量、投资活动产生的现金流量和融资活动产生的现金流量。稳定的正现金流量表示公司能够自我维持和扩展业务,而负现金流量则可能表明财务压力。

7).分红率(Dividend Yield):分红率是公司分红总额与股票价格的比例,反映了投资者持有股票的现金回报率。对于寻求稳定现金流的投资者来说,分红率是一个重要的考量指标。

这些指标都是非常重要的财务指标,每一个都是一个因子,今天我们选出起的一个“净利润同比增长率”,这个因子来进行分析。

2.如何获取数据

我们还是用ak这个库来获取股票数据(ak这个库的使用,历史文章里面,我们的量化小册里面也详细介绍了),看一下下面的代码:

在这里插入图片描述

我提取了前3次的财务指标里面的 ‘净利润同比增长率’ ,这里面有2个层次可以挖掘,第一就是增长率的大小,第二就是3个季度的增长率的走向,很明显这个股票是很健康的走势,我们就单拿一个30.43% 来挖掘,我们看一下对不对,可以打开股票软件,看一下:

在这里插入图片描述

数据对的,总营收同比 21.05% ,净利润同比30.43%。

3.构造因子,筛选股票

我们通过上面的操作可以获取股票的财务指标 里面的净利润增长率,然后我们跟股票的涨跌幅进行组合,来构造一个因子,如果股票的净利润增长率很高,而股票又是跌了很多的,那么就意味着 股票是低估的,价格是围绕价值波动,那么股票后面会上涨的概率会很大。

基于这个思想,我们进行排序,我们对创业板1366家股票,进行排序:

在这里插入图片描述

我们看到排名在前面的2家是“飞荣达” 和 “罗博特科” ,这2家的净利润增长率非常高,我看一下这股票的最近1个月的收益

从2月份的12块左右,涨到现在的15块,还是非常可观的,有近30%的涨幅,我们接着看看第二名罗博特科的收益:

在这里插入图片描述

从2月份的51.96 一路涨到现在的124块左右,已经翻倍了,这个收益已经非常牛逼了!

好了,限于篇幅其他的财务因子我就不挖掘了,大部分的选股策略都是通过各种因子进行排序来构建自己的股票池,如果财务数据再配合我们的k线来判断进出场时间点,是非常有戏的。**所以学点Python还是很有用的,对量化有兴趣的同学,小编也给大家分享一份Python学习资料和公开课,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂。

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。

点击免费领取《优快云大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取

<think>我们正在编写一个吸引初学者的Python示例代码。考虑到引用[1]中提到可以创建一个简单的“皮卡丘”程序(比如显示ASCII艺术或简单交互),以及引用[2]中提到的趣味小游戏,我们可以设计一个简单的ASCII皮卡丘动画,并加入一些交互元素。 设计思路: 1. 使用ASCII艺术展示皮卡丘 2. 加入颜色(使用ANSI转义序列)使输出更生动 3. 实现简单的交互(例如,用户输入名字,皮卡丘打招呼) 4. 加入一个简单的动画效果(如皮卡丘眨眼) 注意:为了确保初学者容易理解,代码将保持简单并添加注释。 但是,由于ANSI转义序列在部分环境(如Windows旧版终端)可能不支持,我们也可以考虑使用第三方库如`colorama`来跨平台支持。但为了简化,我们这里先使用ANSI序列,并给出提示。 另外,我们可以让皮卡丘说一句欢迎语,并眨眼几次,形成简单动画。 步骤: 1. 定义皮卡丘的ASCII艺术(多行字符串) 2. 使用颜色代码给皮卡丘上色(黄色身体,红色脸颊等) 3. 使用循环实现眨眼动画(通过替换眼睛部分实现) 我们将编写一个函数来打印皮卡丘,然后实现眨眼效果(通过短暂清屏和重新绘制不同眼睛状态)。 考虑到初学者,我们尽量使用基础语法,避免复杂依赖。 注意:在部分终端中,清屏可能使用`os.system('cls')`或`os.system('clear')`,但这样会整个清屏,可能不够平滑。我们可以尝试使用打印多个空行来模拟清屏,或者使用转义序列将光标移到开头覆盖。 这里我们使用移动光标的转义序列:`\033[H`(将光标移动到左上角)然后重新绘制,这样就不会有闪烁感。但为了简单,我们也可以使用打印多个空行然后重新绘制(会有滚动,但简单)。 另一种方法是使用`\r`和`\033[K`来逐行移动,但这样复杂。我们选择打印多个空行来模拟清屏,然后重绘。 由于是初学者示例,我们采用简单方法:打印50个空行来清屏(模拟清屏,实际是滚动出屏幕),然后重绘。这样虽然不完美,但容易理解。 或者,我们可以只改变眼睛部分,通过将光标移动到眼睛位置重新绘制眼睛。但这样需要计算位置,对初学者可能稍复杂。因此,我们选择重绘整个皮卡丘,但使用清屏命令(跨平台问题,我们使用os模块判断系统)。 为了更好的体验,我们使用`os.name`来判断系统,然后选择清屏命令。 但是,为了保持简单,我们也可以不做清屏,而是让动画次数少一点,每次打印多个换行然后重绘,这样在大多数终端都能工作。 我们选择:打印50个换行(这样旧内容会被推出屏幕),然后绘制新的皮卡丘。 代码结构: 1. 导入time模块(用于延时) 2. 定义皮卡丘的ASCII艺术(两个版本:睁眼和闭眼) 3. 定义颜色代码 4. 打印欢迎信息,获取用户名字 5. 循环几次,交替打印睁眼和闭眼的皮卡丘,形成眨眼效果 颜色代码: 黄色:\033[33m 红色:\033[31m 重置:\033[0m 注意:我们也可以使用其他颜色,比如脸颊用红色,身体用黄色。 由于ASCII艺术有多行,我们分别定义睁眼和闭眼的两幅图。 但是,为了减少重复,我们可以只定义一次身体,然后替换眼睛部分。但为了简单,我们直接定义两个完整的字符串。 示例皮卡丘ASCII艺术(睁眼): 我们可以画一个简单的皮卡丘,例如: 睁眼版本: ( 这里用两个点作为睁开的眼睛 ) 闭眼版本: ( 用横线表示闭上的眼睛 ) 我们设计一个简单的皮卡丘: 睁眼: \033[33m*******\033[0m \033[33m*\033[0m \033[33m*\033[0m \033[33m*\033[0m o o \033[33m*\033[0m \033[33m*\033[0m ^ \033[33m*\033[0m \033[33m*\033[0m \\_/ \033[33m*\033[0m \033[33m*******\033[0m 但是这样太简单,我们画一个更可爱的(参考网络上的ASCII皮卡丘,但简单化),并上色。 注意:脸颊部分用红色。 我们设计如下: 睁眼: \033[33m ,~~ ~~ \033[0m \033[33m{ \033[31m0 0\033[33m } \033[0m \033[33m ( ^Y^ ) \033[0m \033[33m >- -< \033[0m \033[33m || | | \033[0m \033[33m / / \ \ \033[0m 闭眼:把眼睛换成减号(表示闭眼): \033[33m ,~~ ~~ \033[0m \033[33m{ \033[31m- -\033[33m } \033[0m # 闭眼时,眼睛部分变成横线 ... 其余部分相同 但是,为了简单,我们直接定义两个字符串。 另外,我们可以在皮卡丘上方显示一句问候语,包含用户输入的名字。 步骤: 1. 询问用户名字 2. 打印50个换行(模拟清屏) 3. 打印问候语(例如:f"Hello, {name}! I'm Pikachu!") 4. 打印睁眼的皮卡丘 5. 等待0.5秒 6. 打印50个换行(模拟清屏) 7. 打印同样的问候语 8. 打印闭眼的皮卡丘 9. 等待0.2秒 10. 重复步骤4-9几次(比如3次) 最后保持睁眼状态。 代码实现如下:</think>下面是一个专为初学者设计的Python示例代码,结合了ASCII艺术、简单交互和趣味性,能直观展示Python编程的魅力: ```python import time import random # 定义皮卡丘的ASCII艺术 PIKACHU = r"""    /l、  (゚、 。 7   l ~ヽ   じしf_,)ノ """ # 定义皮卡丘的对话 DIALOGUES = [ "皮卡皮卡!(你好呀~)", "皮卡丘!(我们一起学Python吧)", "皮卡皮!(编程超有趣的)", "皮卡!(试试输入数字1-3)", "皮卡丘!(输入0可以退出哦)" ] # 定义皮卡丘的技能 SKILLS = { 1: "十万伏特⚡️", 2: "电光一闪✨", 3: "铁尾💥" } def main(): print("欢迎来到Python皮卡丘世界!") name = input("请给你的皮卡丘起个名字: ") # 显示皮卡丘 print(f"\n这是你的皮卡丘 {name}:") print(PIKACHU) time.sleep(1) print(f"{name}: {random.choice(DIALOGUES)}") # 交互循环 while True: print("\n选择行动:") print("1: 展示技能") print("2: 听皮卡丘说话") print("3: 喂食") print("0: 退出") choice = input("请输入选项: ") if choice == "0": print(f"\n再见!{name}会想念你的~") break elif choice == "1": # 展示技能 print("\n选择技能:") for num, skill in SKILLS.items(): print(f"{num}: {skill}") skill_choice = input("> ") if skill_choice in ["1", "2", "3"]: skill = SKILLS[int(skill_choice)] print(f"\n{name}使用了{skill}!") # 简单的动画效果 for _ in range(3): print("✨" * 10) time.sleep(0.3) else: print(f"{name}: 皮卡?(这个技能我不会呀)") elif choice == "2": # 随机对话 print(f"\n{name}: {random.choice(DIALOGUES)}") elif choice == "3": # 喂食 print(f"\n你喂了{name}一颗树果") print("(>^ω^<) 皮卡皮!(好吃~)") # 爱心动画 for _ in range(3): print("❤️", end=" ", flush=True) time.sleep(0.5) print() else: print(f"{name}: 皮卡?(我不明白呀)") if __name__ == "__main__": main() ``` ### 代码特点(适合初学者): 1. **直观有趣**:使用ASCII艺术展示皮卡丘形象,视觉吸引力强 2. **简单交互**:通过数字选择实现基本交互,无需复杂输入 3. **即时反馈**:每个操作都有对应的视觉或文字反馈 4. **涵盖基础概念**: - 变量定义 (`PIKACHU`, `DIALOGUES`) - 条件判断 (`if/elif/else`) - 循环结构 (`while`, `for`) - 字典使用 (`SKILLS`) - 函数定义 (`main()`) - 随机选择 (`random.choice()`) 5. **动态效果**:使用`time.sleep()`创建简单动画 6. **错误处理**:对无效输入有友好提示 ### 运行效果示例: ``` 欢迎来到Python皮卡丘世界! 请给你的皮卡丘起个名字: 闪电 这是你的皮卡丘 闪电:    /l、  (゚、 。 7   l ~ヽ   じしf_,)ノ 闪电: 皮卡丘!(输入0可以退出哦) 选择行动: 1: 展示技能 2: 听皮卡丘说话 3: 喂食 0: 退出 请输入选项: 3 你喂了闪电一颗树果 (>^ω^<) 皮卡皮!(好吃~) ❤️ ❤️ ❤️ ``` ### 学习价值: 1. **理解程序结构**:清晰的`main()`函数入口 2. **数据类型实践**:字符串、列表、字典的使用 3. **控制流掌握**:条件判断和循环的应用 4. **交互设计基础**:用户输入与程序反馈的对应关系 5. **错误处理入门**:对无效输入的友好处理 这个程序通过游戏化的方式,让初学者在趣味中学习Python基础语法,同时体验编程的即时反馈乐趣[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值