iT邦幫忙

0

python 股價累積報酬

a = np.random.randn(100)*0.02
-a 為 報酬率
Ex A = a[0],(1+a[0])*(1+a[1])-1,.....
要求累積報酬率的話,是需要用迴圈嗎
不知道該如何表示

ccutmis iT邦高手 9 級 ‧ 2019-11-30 19:43:58 檢舉
你問的是這個嗎?
http://www.tej.com.tw/twsite/tejweb/tw/product/summary/A0102.htm
2
froce
iT邦大師 3 級 ‧ 2019-11-30 20:22:01
最佳解答

稍微進階的python開發者這時候不會想要遞迴,會想yield。

import numpy as np

a = np.random.randn(100)*0.02
            
def compound(n, arr):
    if n <= 0 or n > len(a):
        return None

    tmp = arr[0] + 1
    
    for i in range(0, n):
        if i == 0:
            yield arr[0]
        else:
            tmp *= arr[i] + 1
            yield tmp - 1

print(list(compound(10, a)))

https://pyfiddle.io/fiddle/86943b25-0db7-4fb5-b13f-987c1006fbd2/?i=true

1
小魚
iT邦大師 1 級 ‧ 2019-11-30 08:02:12

複利嗎?
不知道Python能不能跑遞迴?

froce iT邦大師 3 級 ‧ 2019-11-30 19:46:56 檢舉

當然可以,不過最好是不要,遞迴會有層數問題。

dragonH iT邦大師 1 級 ‧ 2019-11-30 20:27:07 檢舉

遞迴不是什麼專有語法阿

絕大多數的語言應該都可以

1
echochio
iT邦研究生 2 級 ‧ 2019-11-30 08:32:20

找 Python 費氏數列 就要要的答案
有迴圈寫法與自己呼叫自己函數寫法

0
huahualiu
iT邦新手 5 級 ‧ 2019-12-16 00:58:20

你可以去讀f.fn()這個套件的文件
基本上金融各種計算公式他都有寫好函式可以直接用

我要發表回答

立即登入回答