首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Quandl代码标记向熊猫下载Quandl数据

使用Quandl代码标记向熊猫下载Quandl数据
EN

Stack Overflow用户
提问于 2015-02-04 07:37:26
回答 1查看 2.7K关注 0票数 0

我想特别使用Quandl的Google数据库下载股票价格,以测试策略。原因是,与Quandl的WIKI和Yahoo数据库相比,谷歌金融的数据是干净的,包括股票经拆分调整后的数据等等。如图所示,最后一个链接将显示调整后的股票分拆:

https://www.quandl.com/WIKI/AAPL-Apple-Inc-AAPL

https://www.quandl.com/YAHOO/AAPL-AAPL-Apple-Inc

AAPL-Apple-Inc-AAPL

然而,Quandl的google数据库标记以GOOG/NYSE_IBM或GOOG/NASDAQ_AAPL的形式出现,与WIKI/IBM、YAHOO/IBM等标记不同。

由于手工添加在这些交易所上市的股票数量的纽约证交所或纳斯达克标签是不可行的,是否有一种有效的方法从Quandl下载股票数据,列出csv或熊猫的股票列表?

这是我的代码FWIW:

代码语言:javascript
复制
nyseList = pd.read_csv('dowjonesIA.csv')  # read csv
masterList = pd.DataFrame(nyseList.Ticker)  # save symbols only into another df

 for index, rows in masterList.iterrows():
     ticker = masterList.loc[index]  # this will not work for passing element
     stock = Quandl.get(ticker, trim_start="2000-01-01", trim_end="2015-01-01")
#stock = Quandl.get("GOOG/NASDAQ_AAPL", trim_start="2000-01-01", trim_end="2015-01-01")  #this is the actual format that works

 # lags data for signal
 stock['diff'] = (stock.Open - stock.Close.shift(1))/stock.Close.shift(1)

 lowerBound = -0.08
 upperBound = 0.08

#generate signal based on 8% rule
stock['signal'] = np.where(stock['diff'] >= upperBound, 1.0, np.where (stock['diff'] <= lowerBound, -1.0, 0.0))

initialCapital = 100000.0
accountLimit = 0.05

#calculate size based on account risk and price
stock['position'] = (stock.signal*initialCapital*accountLimit)/stock.Open

#shows if there is a position open
stock['open trade'] = np.where(stock['position'] > 0, 1.0, np.where(stock['position'] < 0, -1.0, 0.0))

#determine profit/loss
stock['pnl'] = (stock.position*stock.Close) - (stock.position*stock.Open)

#sums up results to starting acct capital
stock['equity curve'] = initialCapital + stock.pnl.cumsum()

print(stock.head(20))  # is dataframe

# plots test results
stock['equity curve'].plot()
plt.show()

我尝试过使用内置于远程数据访问中的熊猫,当将字符串作为args的股票符号传递时也会出现问题。此外,任何以向量化方式执行循环的建议都是值得赞赏的,而不是以迭代的方式执行,并且适用于一般的逻辑流。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-05 02:30:13

没关系,我只是将标记作为字符串附加到股票符号字符串中。这种格式将适用于:

代码语言:javascript
复制
masterList = pd.Dataframe('GOOG/NYSE_' + nyseList['Ticker'].astype(str))

归功于这个线程:Append string to the start of each value in a said column of a pandas dataframe (elegantly)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28315916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档