春秋金经

可以调素琴,阅金经

引言

在基金投资领域,如何挑选出能够持续创造超额收益的基金一直是投资者关注的核心问题。传统的人工选基方式依赖基金经理的历史业绩、评级机构排名或简单的大小盘风格判断,但这些方法往往存在滞后性,难以捕捉市场的动态变化。

本文将介绍一种基于AI量化选基的策略,通过历史数据回测筛选出兼具高收益与高风险调整后收益的基金,构建一个有望获取超额收益的基金组合。

策略核心逻辑

该策略的核心思想是:在海量基金中,筛选出夏普比率收益率均排名靠前的基金。

为什么选择这两个指标?

夏普比率(Sharpe Ratio) 衡量的是每承担一单位风险所获得的超额收益,计算公式为:

$$夏普比率 = \frac{基金收益率 - 无风险收益率}{基金收益率标准差}$$

夏普比率越高,说明基金在承担相同风险的情况下获得的收益越高,风险调整后表现越好。

收益率直接反映基金的盈利能力和市场适应性。

通过同时筛选这两个指标靠前的基金,我们可以找到既能涨、抗跌能力又强的优质基金。

策略实现细节

1. 调仓频率

策略设定为每3个月调仓一次,这个频率兼顾了:

  • 避免过度交易产生的摩擦成本
  • 及时跟踪市场风格变化
  • 让基金有足够时间体现其投资能力

2. 选基范围

策略主要筛选股票型基金混合型基金,这两类基金具有较强的主动管理能力,更有可能创造超额收益。

具体筛选时,基金类型编码对应如下:

  • 402001:股票型基金
  • 402004:混合型基金

3. 筛选标准

策略的筛选流程如下:

  1. 获取所有符合条件的公募基金
  2. 计算每只基金最近1年的夏普比率和收益率
  3. 按基金类型分组,在每类基金中筛选:
    • 夏普比率排名前10%
    • 收益率也排名前10%
  4. 对筛选后的基金按综合得分排序,取前5只

这种分组筛选的方式确保了组合在不同基金类型上的均衡配置,避免了单一风格的过度暴露。

4. 组合构建

最终构建5只基金的等权组合,并预留5%现金以应对赎回需求。

代码实现

以下是该策略在JoinQuant平台的核心实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# 导入函数库
from jqdata import *
from jqdata import finance
import pandas as pd
import numpy as np
import datetime

# 初始化函数,设定基准等等
def initialize(context):
# 设定沪深300作为基准
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 避免未来数据模式
set_option('avoid_future_data', True)

# 场外基金账户设置
set_subportfolios([SubPortfolioConfig(context.portfolio.cash, 'open_fund')])
set_redeem_latency(day=3, type='open_fund')

g.holding_funds = []
g.select_count = 5
g.last_rebalance_date = None
g.rebalance_months = 3

run_monthly(market_open, 1, time='open')

def select_funds(context):
"""筛选基金:夏普和收益双前10%"""
current_date = context.current_dt.date()
one_year_ago = current_date - datetime.timedelta(days=365)

# 获取基金主体信息
q = query(finance.FUND_MAIN_INFO).filter(
finance.FUND_MAIN_INFO.operate_mode_id.in_([401001, 401005, 401006])
).limit(4000)
fund_info_df = finance.run_query(q)

# 筛选股票型和混合型基金
target_type_ids = [402001, 402004]
fund_info_df = fund_info_df[fund_info_df['underlying_asset_type_id'].isin(target_type_ids)]

fund_metrics = []

for idx, row in fund_info_df.iterrows():
fund_code = row['main_code']

# 获取基金净值数据
q = query(finance.FUND_NET_VALUE).filter(
finance.FUND_NET_VALUE.code == fund_code,
finance.FUND_NET_VALUE.day >= one_year_ago,
finance.FUND_NET_VALUE.day <= current_date
).order_by(finance.FUND_NET_VALUE.day.desc()).limit(4000)

nav_df = finance.run_query(q)

if nav_df is None or len(nav_df) < 100:
continue

nav_df = nav_df.sort_values('day')
nav_df['refactor_net_value'] = nav_df['refactor_net_value'].astype(float)
nav_df['daily_return'] = nav_df['refactor_net_value'].pct_change()

# 计算年化指标
one_year_return = (nav_df['refactor_net_value'].iloc[-1] / nav_df['refactor_net_value'].iloc[0] - 1) * 100
one_year_volatility = nav_df['daily_return'].std() * np.sqrt(252) * 100
one_year_sharpe = one_year_return / one_year_volatility if one_year_volatility > 0 else 0

fund_metrics.append({
'code': fund_code,
'name': row['name'],
'type': row['underlying_asset_type'],
'one_year_return': one_year_return,
'one_year_sharpe': one_year_sharpe
})

if len(fund_metrics) == 0:
return []

metrics_df = pd.DataFrame(fund_metrics)
selected_funds = []

# 按类型分组筛选
for fund_type in metrics_df['type'].unique():
type_df = metrics_df[metrics_df['type'] == fund_type].copy()

if len(type_df) < 10:
continue

# 计算排名百分位
type_df['sharpe_rank'] = type_df['one_year_sharpe'].rank(pct=True)
type_df['return_rank'] = type_df['one_year_return'].rank(pct=True)

# 双前10%筛选
filtered = type_df[
(type_df['sharpe_rank'] >= 0.9) &
(type_df['return_rank'] >= 0.9)
]

# 综合得分排序
filtered['composite_score'] = (filtered['sharpe_rank'] + filtered['return_rank']) / 2
filtered = filtered.sort_values('composite_score', ascending=False)

selected_funds.extend(filtered['code'].tolist())

return selected_funds[:g.select_count]

策略优势

  1. 数据驱动:完全基于历史业绩数据客观筛选,避免主观情绪干扰
  2. 风险收益兼顾:同时考虑收益和风险,避免”赌徒式”选基
  3. 动态调整:每季度调仓,跟踪市场风格变化
  4. 分散化:多基金配置,降低单基金踩雷风险

风险提示

  1. 历史业绩不代表未来:策略基于历史数据筛选,未来市场风格突变可能导致失效
  2. 流动性风险:部分小规模基金可能出现大额赎回受限
  3. 数据延迟:基金净值披露存在一定滞后
  4. 交易成本:频繁调仓会产生申购赎回费用

总结

AI量化选基策略通过科学的方法从数千只基金中筛选出优质标的,为投资者提供了一种系统化的基金投资思路。然而,任何策略都不是万能的,投资者应根据自身风险承受能力合理配置,并持续关注策略表现进行动态调整。

以充满力量感的空灵女声为核心,主歌平缓细腻,副歌攀升爆发,传递灵魂挣脱束缚的舒展感;配器以明亮的电吉他riff为骨架,搭配轻快的鼓点与空灵合成器垫音,间奏加入昂扬的弦乐层加强情绪。BPM120的中快板,律动松弛又带着坚定,旋律线条开阔舒展,整体氛围自由又治愈。

以轻快民谣风格为基调,BPM100的中速节奏,木吉他扫弦为核心配器,点缀手鼓与口琴旋律,增添清新松弛的氛围感。人声是明亮的少年音,带些许随性的气声,主歌平缓舒展,副歌上扬,传递在风里肆意舒展的自在感,副歌加入轻和声,让层次更饱满。

BPM70的舒缓抒情风格,以轻柔钢琴分解和弦为基底,搭配暖色调合成器垫音,添加低沉轻柔的贝斯线条。人声温柔治愈,咬字松弛,主歌旋律平缓舒展,副歌带轻微上扬弧度,包裹着雨后暖意。鼓点用轻柔沙锤与慢速军鼓轻击,混响营造出室内松弛氛围感,整体温暖治愈,驱散湿冷。

以略带沙哑的抒情嗓音演唱,传递带着眷恋的惋惜感。配器以柔缓钢琴为基底,添入细碎的小提琴拨弦,副歌加入轻柔鼓点与低沉贝斯加强氛围感。BPM70的慢板节奏,旋律主歌舒缓铺陈,副歌带着细微的转调拉扯感,将爱里的遗憾与偏爱揉进曲调中。

以温暖松弛的都市抒情风格为基底,BPM75的中慢板节奏。轻柔分解和弦钢琴铺底,搭配低缓的原声吉他扫弦,添入轻柔的弦乐线条勾勒氛围,鼓点采用轻柔的沙锤与低音鼓点缀。人声温柔缱绻,带着慵懒的气声,主歌旋律平缓舒展,副歌带着细腻的起伏,传递出暮色相拥时的松弛暖意,混响轻柔,整体氛围柔软治愈。

以温柔治愈的日系抒情风格为基底,BPM70的中慢板节奏,鼓点轻柔朦胧。清澈木吉他分解和弦铺底,点缀风铃般的合成器音色,轻柔弦乐顺着旋律缓缓铺展。人声用细腻柔美的少女音,咬字轻柔松弛,主歌平缓倾诉,副歌带着淡淡怅惘的舒展感,将樱花树下的朦胧氛围感拉满。

阅读全文 »

我想写一篇关于”xxxx”的文章,目标读者是职场新人,字数 800 字左右。请帮我:

  1. 确定文章结构
  2. 列出每个部分的要点
  3. 建议一个吸引人的标题

我要写一个「xxxx」系列,共 5 篇文章。
帮我:

  1. 创建 文章/xxxx系列/ 目录
  2. 创建 大纲.md(系列规划、每篇定位、发布顺序)
  3. 为每篇创建空文件(01-xxx.md 格式)
    系列规划:
  • 第 1 篇:为什么你的沟通总是无效
  • 第 2 篇:向上沟通的 3 个技巧
  • 第 3 篇:跨部门沟通的核心原则
  • 第 4 篇:高难度对话怎么开口
  • 第 5 篇:用沟通建立个人品牌

为xxxx生成 10 个标题,要求:

  1. 使用数字(如”3 个理由”)
  2. 制造好奇(如”原来…”)
  3. 痛点切入(如”还在被噪音困扰?”)
  4. 结果导向(如”效率提升 50%”)
    每种类型至少 2-3 个
阅读全文 »

我每天都要做这些重复工作:

  1. 把下载目录里的发票 PDF 移动到 财务/发票/ 目录
  2. 按月份创建子目录(如 2025-01/)
  3. 重命名为「发票_日期_金额.pdf」格式
    请先做两件事:
    A) 把规则写清楚(日期来源、金额来源、冲突如何处理)
    B) 给一个“先预览、后执行”的方案

根据刚才的规则,帮我创建一个脚本 scripts/organize_invoices.py:

  1. 扫描源目录找 PDF
  2. 解析日期/金额(如果解析不到也要给策略)
  3. 生成目标目录结构
  4. 输出详细日志(每个文件怎么处理)
    要求:
  • 把“预览模式(dry-run)”和“执行模式”都做出来
  • 给我一条最小可运行命令
阅读全文 »

即使你四不会(不会作词,不会作曲,不会编曲,不会演唱),你也可以利用ai生成音乐,并入驻音乐平台获取收益。

第一分钟

用电脑打开抖音音乐创作实验室
点击左侧“ai作曲”,在灵感创作输入框输入“写一首2026年最火最劲爆的正能量快节奏励志歌曲”,其他都默认不用修改。
(更多提示词,关注公众号“春秋金经”,回复“提示词”,即可获取)
最后点击【生成歌曲】最大最绿最长的按钮,然后等待1分钟左右。

第二分钟

生成歌曲后,会生成出来两首歌。把两首歌快速听一遍,选一首你喜欢的。
把歌词复制出来找个地方存一下,然后点右下角“去AI编辑器”

阅读全文 »

一、官方正统

推荐用nodejs的方式安装,因为在ai时代,绝大部分ai工具都是nodejs写的,所以第一步是安装nodejs

步骤一:安装 Node.js

打开Nodejs官网下载页面 https://nodejs.org/zh-cn/download ,点击Windows安装程序(msi) 下载并安装。

步骤二:安装 openclaw

npm i -g openclaw 然后回车即可安装好openclaw。

阅读全文 »

小龙虾的命名几经调整:起初定名为 clawdbot,没多久被claude的公司要求改名,改名为为 moltbot 时隔不足一日,就再次更名为 openclaw。
当时它的宣传铺天盖地,我也是抱着将信将疑的态度安装试用了一下。安装倒还算简单,在安装好nodejs的情况下,一条命令就搞定了。我在我的云服务器和家里的”all in boom”的NAS机器上各安装了一个。
安装简单但是配置复杂,尤其是刚开始的时候由于小龙虾的频繁更名,导致有的命令是clawdbot,有的命令是moltbot,有的命令是openclaw,安装的东西也占据了好几个路径。我现在服务器上的用户目录就存留着四个文件夹:clawd、moltbot、.clawdbot、.openclaw,作为一名专业的程序员都有点分不清了。我只好祭出opencode,把官方仓库最新代码丢给它,让opencode去帮我修改配置。
后来接入qq机器人,通过qq来控制了,效果并不怎么好。也许和qq的严格内容检查也有关系,openclaw回复的内容带链接就会被屏蔽,也经常讲着讲着就没下文了。

阅读全文 »

策略背景

永久组合由哈利·布朗提出,旨在通过简单的资产配置应对复杂的经济周期。本方案基于中国市场特性进行本土化改良,在保留“稳健防御”内核的基础上,优化了资产标的与调仓逻辑,使其更适合大资金长期持有。

国内市场版永久组合策略实战方案

一、 核心资产配置(本土化映射)

策略将资金平均分配至四类相关性较低的资产,以应对不同经济环境:

二、 调仓机制设计

采用“月度监测、阈值触发”的模式,避免过度交易与磨损。

监测频率

每月首个交易日开盘时进行检查。

执行代码逻辑:run_monthly(check_and_rebalance, monthday=1, time=’open’)

动态再平衡逻辑

触发条件:当某类资产的实际权重偏离目标权重(25%)超过 ±10% 时触发再平衡。

容忍区间:实际权重处于 15% - 35% 区间内视为正常波动,不进行操作。

参数控制:REBALANCE_THRESHOLD = 0.10

现金管理优化

将红利ETF作为资金调节的主要缓冲池,用于平衡现金目标比例。

设置 2% 的现金偏差容忍度,防止因微小的现金比例波动导致频繁微调,有效降低交易摩擦成本。

三、 策略特性与优势

低频低扰:合理的偏差容忍度设计使得策略极为“懒惰”,实测显示可能数年无需调仓,极大降低了维护成本与交易滑点。

回撤可控:四类资产互为对冲,有效平滑了单一资产的风险暴露,历史回测显示出极佳的下行风险控制能力。

大资金友好:标的选择均为流动性极佳的ETF,且低换手率特性非常适合大资金的资产配置需求。

基于以上几点,该策略非常适合大资产的懒人。

阅读全文 »

何为双拼输入

双拼,顾名思义是每个音都可以用两个按键打出的拼音方式,用一个字母表示声母,一个字母表示韵母。例如”双“的拼音是”shuang”,用u代表sh,用d代表uang,就可以用ud两个字母拼出shuang,比全拼6个字母节省了4次击键。而2字母的拼音和全拼相同,例如”你“还是用ni来拼。

全拼的原理是26×26字母的排列组合>声母数量×韵母数量的排列组合,用两个字母即可表示出所有的拼音。

阅读全文 »

倘若我不到6块钱买一个随身wifi,再刷机刷成debian,然后再使用上cloudflare的argo tunnel技术绑一个免费域名,阁下又该如何应对?

阅读全文 »
0%