如何解决如何在scipy/python中生成一个函数来优化另一个函数
背景
我正在抵押加密货币,我的加密货币根据波动但假设的恒定利率 (apy) 为我赚取奖励。每当我在余额中领取奖励时,都会收取汽油费。
# p is period since i last claimed rewards in years
# the longer i didnt claim the more expensive the fee
gas_table = [(7,1.5),(30.4167,3),(365/2,5),(365,17)]
gas_max = 30
def gas(p):
x = p * 365
for (c,v) in gas_table:
if x < c:
return v
return gas_max
我正在尝试制定一个策略,决定何时将我的兴趣复利以最大化回报。 目前我正在考虑整个投资过程中的一个恒定周期
在 mathematics stack exchange 的帮助下,我使用了这个:
def compound(P,r,p,t,add_fee = 0):
x = gas(p) + add_fee
pr = p * r
return (P - x/pr) * (1 + pr)**(t/p) + (x/pr)
一切顺利,我通过这样做来优化我的功能
from scipy.optimize import minimize_scalar
f = lambda x : -compound(init,apy,x,t)
res = minimize_scalar(f,bounds=(0,t),method='bounded')
我注意到,基本上,当我由于费用而原则较少时,我会减少复合,但这并不意味着我应该始终坚持相同的费率。当我有更多的原则时,我应该执行更多的复合,因为费用与我获得的收益相比可以忽略不计。我希望我的策略包含这种直觉,所以我想出了一个递归算法来计算利息,以迎合参数周期
# notice p is now a function
def f(P,add_fee = 0):
if t == 0 or p == 0:
return P
pv = min(p(P),t)
x = gas(pv) + add_fee
return f(P + P * r * pv - x,t - pv,add_fee=add_fee)
因此我可以通过生成函数 f_
p
f_ = lambda p : f(P,t)
问题
我如何生成一个纯函数 p
,当它作为函数 f_
的参数给出时,可以最大化/最小化它
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。