Obtenez le cours de l'action + α de Financial Modeling Prep
def get_df_stock_screener(exchange):
requests_cache.install_cache("stock-screener")
url = f"https://financialmodelingprep.com/api/v3/stock-screener?marketCapMoreThan=100000&volumeMoreThan=100÷ndLowerThan=10&betaLowerThan=10&betaMoreThan=-10&exchange={exchange}&apikey={apikey}"
response = requests.get(url)
content = response.content.decode()
json_content = json.load(StringIO(content))
return pd.DataFrame(json_content).set_index("symbol")
requests_cache Enregistrer dans le cache en utilisant Comment accéder avec le cache lors de la lecture_json avec pandas
Stock Screener Utilisez stock-screener
[
{
"symbol" : "AAPL",
"companyName" : "Apple Inc.",
"marketCap" : 1382174560000,
"sector" : "Technology",
"beta" : 1.2284990000000000076596506914938800036907196044921875,
"price" : 318.8899999999999863575794734060764312744140625,
"lastAnnualDividend" : 3.0800000000000000710542735760100185871124267578125,
"volume" : 51500795,
"exchange" : "Nasdaq Global Select",
"exchangeShortName" : "NASDAQ"
},
{
"symbol" : "AMZN",
"companyName" : "Amazon.com Inc.",
"marketCap" : 1215457260000,
"sector" : "Technology",
"beta" : 1.5168630000000000723758830645238049328327178955078125,
"price" : 2436.8800000000001091393642127513885498046875,
"lastAnnualDividend" : 0,
"volume" : 6105985,
"exchange" : "Nasdaq Global Select",
"exchangeShortName" : "NASDAQ"
}
]
Sera retourné sous la forme de
$ r_a $ est le retour de l'action $ r_b $ est le retour du marché (par exemple S & P 500) $ \ beta $ est un facteur de rendement du marché Si $ \ beta = 2 $, une augmentation de 3% des rendements du marché augmentera les rendements des actions de 6%. $ \ Alpha $ est le retour d'actions non pertinentes de rendements de marché
lastAnnualDividend Dividende par action pour la dernière année
df_stock_screener_nasdaq = get_df_stock_screener("nasdaq")
df_stock_screener_nyse = get_df_stock_screener("nyse")
df_stock_screener = pd.concat([df_stock_screener_nasdaq, df_stock_screener_nyse])
df_stock_screener["sector"].replace("", np.nan, inplace=True)
df_stock_screener.dropna(subset=["sector"], inplace=True)
df_stock_screener_target = df_stock_screener[["price","beta","lastAnnualDividend","volume"]]
le secteur peut être vide ETF semble être vide Il est plus facile d'interpréter si l'ETF est supprimé de la cible, alors supprimez-le dropna ne supprime pas les caractères vides, remplacez donc les caractères vides par nan
describe Vous pouvez obtenir des statistiques récapitulatives avec describe
df_stock_screener_target.describe()
price beta lastAnnualDividend volume
count 6153.000000 6153.000000 6153.000000 6.153000e+03
mean 130.651825 0.940899 0.589505 1.701368e+06
std 5257.505324 0.874763 1.033488 5.608641e+06
min 0.010000 -8.439448 0.000000 1.000000e+02
25% 5.730000 0.301854 0.000000 8.373300e+04
50% 13.770000 0.881456 0.000000 3.761930e+05
75% 34.160000 1.392074 0.840000 1.274612e+06
max 291621.000000 8.949109 9.680000 1.566431e+08
price La moyenne est de 130 USD, l'écart type est de 5257 USD, le maximum est de 291621 USD En raison de la présence de valeurs aberrantes, les statistiques n'ont guère de sens La taille du prix de l'action n'a pas de sens car le fractionnement d'actions peut être effectué arbitrairement.
beta La moyenne est de 0,94, l'écart type est de 0,87, le minimum est -8,43, le maximum est 8,94 La version bêta semble correcte en ce sens que la moyenne proche de 1 de sa méthode de dérivation correspond au marché
Tant que le nombre d'actions est arbitraire, la comparaison de leurs valeurs absolues n'a pas beaucoup de sens.
Recommended Posts