金融科技选股机器人-基本面因子

单个股票的基本面因子获得

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)