Animation de la jauge de l’indice de peur et de cupidité du CNN
Animation de la jauge de l’indice de peur et de cupidité du CNN
par Shenghui Yang
L’indice de peur et de cupidité est un indicateur de sentiment populaire qui mesure les émotions à l’origine des marchés financiers. Ce notebook montre comment visualiser l’indice à l’aide de pour la valeur actuelle et de pour les tendances historiques.
Acquisition des données
Acquisition des données
Dans ce cas, une requête HTTP de base suffit pour accéder aux données. Cependant, il peut être nécessaire d’inclure un en-tête agent-utilisateur dans votre requête. Vous pouvez généralement trouver la chaîne agent-utilisateur de votre navigateur en consultant les outils de développement lorsque vous effectuez une requête en ligne.
In[]:=
req=HTTPRequest["https://production.dataviz.cnn.io/index/fearandgreed/graphdata",<|"UserAgent"->"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0"|>]
Out[]=
HTTPRequest
Vérifiez si la requête a réussi. Un code d’état de 200 indique une connexion réussie et un transfert complet des données :
In[]:=
resp=URLRead[req]
Out[]=
HTTPResponse
Convertissez les données récupérées en :
In[]:=
data=ImportString[resp["Body"],"RawJSON"];
Trouvez les champs disponibles dans les données ci-dessus :
In[]:=
Keys[data]
Out[]=
{fear_and_greed,fear_and_greed_historical,market_momentum_sp500,market_momentum_sp125,stock_price_strength,stock_price_breadth,put_call_options,market_volatility_vix,market_volatility_vix_50,junk_bond_demand,safe_haven_demand}
Créez un qui ne stocke que l’historique (utilisez pour empêcher que le code ne s’exécute plusieurs fois).
In[]:=
tab=OnceWith{tab=ToTabular[data["fear_and_greed_historical"]["data"]]},ConstructColumnstab,"Date"->FunctionDateObjectFromUnixTime@,"Day","FGIdx"->Function[Ceiling@#y],"Rating"->Function[#rating]//Most
Floor[#x]
1000
Out[]=
Tabular
Effacez les données intermédiaires stockées :
In[]:=
data=.
Conception de jauge
Conception de jauge
Utilisez le code ci-dessous pour créer une jauge similaire à celle présentée sur la page web du CNN :
Construisez un effet de pont de pierre encerclant la jauge en utilisant la fonction . Spécifiez à la fois les rayons intérieur et extérieur :
In[]:=
ri=3;ro=4.6;
Indiquez la plage angulaire correspondant à chaque segment de l’anneau partiel :
In[]:=
segmentAnnulus={{135.5,180},{99.5,134.5},{81.5,98.5},{45.5,80.5},{0,44.5}};
Concevez une jauge sous la forme d’un demi-disque :
In[]:=
Clear[g]
In[]:=
g[t_]:=AngularGauge[t,{0,100},ScaleOrigin->{π,0},GaugeStyle->StandardOrange,ImageSize->100];
Mettez en évidence le segment de l’anneau qui s’aligne sur la direction indiquée par l’aiguille de la jauge :
In[]:=
styledAnnulus[v1_,v2_,input_]:=With[{s=Annulus[{0,0},{ri,ro},{v1Degree,v2Degree}]},If[Floor@v1<input<Ceiling@v2,{EdgeForm[{Thick,StandardBlue}],StandardOrange,s},{Cyan,s}]]
La fonction place les mots dans les positions correctes avec l’orientation appropriée :
In[]:=
PlaceWord[txt_String,r_,θ_]:=Rotate[Text[Style[txt,10,FontFamily->"Helvetica",Black,Bold],r*{Cos[θ],Sin[θ]}],θ-π/2]
Générez un graphique de l’indice de peur et de cupidité du CNN, y compris un tracé de série temporelle des valeurs de l’indice :
ManipulateWith{idx=tab[k,"FGIdx"],date=tab[k,"Date"]},ColumnGraphicsstyledAnnulus#11,#12,(100-idx)180&/@segmentAnnulus,Inset[g[idx],{0,0},{0,0},Scaled[0.86`]],PlaceWord["EXTREME\nFEAR",ro-0.5`,157.75`°],PlaceWord["FEAR",ro-0.35`,117°],PlaceWord["NEUTRAL",ro-0.35`,90°],PlaceWord["GREED",ro-0.35`,63°],PlaceWord["EXTREME\nGREED",ro-0.5`,22.25`°],Text[date,{0,5.`}],ImagePadding{{2,2},{20,1}},ImageSize420,DateListPlot,{k,1,Length[tab],1},SaveDefinitionsTrue
1
100
Out[]=
CITER CE NOTEBOOK
CITER CE NOTEBOOK