单个股票的基本面因子获得
library(quantmod)
# 定义要抓的基本面因子
fundamentals <- yahooQF(c(
"P/E Ratio",
"Price/Book",
"Price/Sales",
"PEG Ratio",
"Earnings/Share",
"Dividend Yield",
"Return on Equity",
"Return on Assets",
"Beta",
"Total Debt/Equity",
"Profit Margin",
"Operating Margin"
))
# 抓取 AAPL 的数据
aapl_factors <- getQuote("AAPL", what = fundamentals)
print(aapl_factors)
多个股票的基本面因子获得
library(quantmod)
library(dplyr)
# 1. 定义常见基本面因子
fundamentals <- yahooQF(c(
"P/E Ratio",
"Price/Book",
"Price/Sales",
"PEG Ratio",
"Earnings/Share",
"Dividend Yield",
"Return on Equity",
"Return on Assets",
"Beta",
"Total Debt/Equity",
"Profit Margin",
"Operating Margin"
))
# 2. 定义函数:输入股票代码向量,返回基本面因子表格
get_factors <- function(stocks) {
results <- lapply(stocks, function(sym) {
tryCatch({
df <- getQuote(sym, what = fundamentals)
df$Symbol <- sym
return(df)
}, error = function(e) {
message(paste("Error fetching:", sym))
return(NULL)
})
})
# 合并结果
result_df <- do.call(rbind, results)
# 整理列顺序
result_df <- result_df %>%
relocate(Symbol, .before = 1)
return(result_df)
}
# 3. 测试:一次抓取多个股票
stocks <- c("AAPL", "MSFT", "AMZN", "GOOG")
factor_table <- get_factors(stocks)
print(factor_table)