python lambda 的使用

本文详细解析了量化投资中依赖因子的计算方法,通过具体案例展示了如何使用过去五个月的数据,计算日收益率的依赖因子。从截取历史数据,到建立数学模型,再到计算分子与分母的具体步骤,为读者提供了深入理解量化投资策略的基础。
参数 T=5,F1=依赖因子(1),F2=依赖因子(2)
1 截取过去T个月的数据
2 对第t个月的日收益率做  F2_t=a+b*F1_t+sigma(t),t=1,…T
3 计算 分子=sum{ [ (sigma(t)  +simgma(t-1)  +simgma(t-3)  ]^2 ,t=3,…,T}
4 计算 分母=sum{   (sigma(t)^2+simgma(t-1)^2+simgma(t-3)^2  ,t=3,…,T}
5 因子计算公式为 分子/分母

假设现在的sigma列表为

sigma= [13.713393005548433, -17.09159674304776, 3.986902527863278, 7.566984305377153, -8.175683095741116]

思路:

1,simga=[e1,e2,e3,e4,e5] .t=3, 对应 sigma(3)=e3=3.986902527863278开始计算 , 分子= (e3+e2+e1)^2+(e4+e3+e2)^2+(e5+e4+e3)^2

2,sum{ [ (sigma(t) +simgma(t-1) +simgma(t-3) ]^2 ,t=3,…,T}=(e3+e2+e1)^2+(e4+e3+e2)^2+(e5+e4+e3)^2

3,sigma只有5项,最多到 sigma(5)=e5

4,分母=(e3^2+e2^2+e1^2)+(e4^2+e3^2+e2^2)+(e5^2+e4^2+e3^2)

5, 分子是最近三项加起来后的平方,然后累计 。 分母是最近三项平方后相加,然后累计

 

sigma= [13.713393005548433, -17.09159674304776, 3.986902527863278, 7.566984305377153, -8.175683095741116]

INPUT=[sigma[x-2:x+1] for x in range(len(sigma)) if x>=2]

numerator=sum(list(map(lambda x:sum(x)**2,INPUT)))

denomerator=sum(list(map(lambda x:x[0]**2+x[1]**2+x[2]**2,INPUT)))

numerator/denomerator

 

 

 

 

Python 中,`lambda` 是一种创建**匿名函数**的方式,它只能包含一个表达式,但可以接受任意数量的参数。`lambda` 函数常用于需要简单函数作为参数传递的场景,例如在 `map()`、`filter()`、`sorted()` 等函数中。 --- ### ✅ 1. 基本语法 ```python lambda arguments: expression ``` - `arguments`:函数参数,可以是多个。 - `expression`:一个表达式,其结果自动作为返回值。 --- ### ✅ 2. 示例代码 #### 示例 1:基本用法 ```python add = lambda x, y: x + y print(add(5, 3)) # 输出: 8 ``` #### 示例 2:在 `map()` 中使用 ```python numbers = [1, 2, 3, 4] squared = list(map(lambda x: x ** 2, numbers)) print(squared) # 输出: [1, 4, 9, 16] ``` #### 示例 3:在 `filter()` 中使用 ```python even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # 输出: [2, 4] ``` #### 示例 4:在 `sorted()` 中使用 ```python points = [(1, 2), (3, 1), (5, 0)] sorted_points = sorted(points, key=lambda x: x[1]) print(sorted_points) # 输出: [(5, 0), (3, 1), (1, 2)] ``` #### 示例 5:嵌套使用 lambda(不推荐复杂场景) ```python mul = lambda x: lambda y: x * y double = mul(2) print(double(5)) # 输出: 10 ``` --- ### ✅ 3. 与普通函数的区别 | 特性 | lambda 函数 | 普通函数(def) | |----------------|--------------------------|-----------------------------| | 是否命名 | 否(匿名) | 是 | | 表达式数量 | 只能一个表达式 | 可以多行代码 | | 返回值 | 自动返回表达式结果 | 需要显式使用 `return` | | 调试 | 不易调试(无函数名) | 易于调试 | --- ### ✅ 4. 注意事项 - `lambda` 应用于简单逻辑,复杂逻辑应使用 `def`。 - `lambda` 不支持类型注解(Python 3.8+ 有部分支持)。 - `lambda` 在闭包中容易引起变量捕获问题,需小心使用。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值