【发布时间】:2015-07-29 11:05:00
【问题描述】:
我对编程有点陌生,在运行和让它从列表中获取输入参数时遇到问题。这是我当前的代码:
import pandas as pd
import numpy as np
from pandas.io.data import DataReader
from datetime import datetime
def pairfinder(ticker1, ticker2):
symbols = [ticker1, ticker2]
stock_data = DataReader(symbols, "yahoo", datetime(2011,1,1), datetime(2011,12,31))
price = stock_data['Adj Close']
returns = np.log(price / price.shift(1))
diff = (returns[ticker1] - returns[ticker2])**2
mindif = ((1/(returns[ticker1].count()))*diff.sum())
corr = (returns[ticker1].corr(returns[ticker2]))
print(ticker1, ticker2, mindif, corr)
tickers = ['AKSO.OL', 'BWLPG.OL', 'DETNOR.OL', 'DNB.OL', 'DNO.OL', 'FOE.OL', 'FRO.OL']
该函数从 yahoo Finance 下载股票数据,并将调整后的收盘价放在一个数据框中,然后计算收益,并取它们之间的平方差并将其相加。最后,它会显示两个股票代码、平方和差的结果以及两只股票之间的相关性。
现在的问题是我想让这个函数在代码列表中运行,我希望它获取第一个代码 AKSO.OL 并在它和所有其余代码上运行该函数,然后继续下一个并做同样的事情。我试图构建一个 for 循环来做到这一点,但我并没有那么稳定地使用 for 循环并将它与函数结合起来。
最后,我想将结果放入另一个数据框并将其保存为 csv 文件或类似文件,但我想如果有人能指出我的正确之处,我可以自己解决这个问题问题第一部分的方向。
【问题讨论】:
-
嗯,你能告诉我你是怎么调用你的函数的吗?
pairfinder(tickers[0], tickers[1])? -
我没有调用该函数,因为我正在考虑在循环中的某个地方执行此操作,但我不知道该怎么做。