Animando o indicador do índice de medo e ganância da CNN
Animando o indicador do índice de medo e ganância da CNN
por Shenghui Yang
O Índice de Medo e Ganância (Fear and Greed Index) é um indicador popular de sentimento que mede as emoções que impulsionam os mercados financeiros. Este notebook mostra como visualizar o índice usando para o valor atual e para as tendências históricas.
Aquisição de Dados
Aquisição de Dados
Neste caso, uma requisição HTTP básica é suficiente para acessar os dados. No entanto, pode ser necessário incluir um cabeçalho user-agent na requisição. Normalmente, é possível encontrar a string de user-agent do navegador nas ferramentas de desenvolvedor ao realizar uma requisição online.
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
Verifique se a requisição foi bem-sucedida: um código de status 200 indica uma conexão bem-sucedida e transferência completa dos dados:
In[]:=
resp=URLRead[req]
Out[]=
HTTPResponse
Converta os dados obtidos para uma :
In[]:=
data=ImportString[resp["Body"],"RawJSON"];
Identifique os campos disponíveis nos dados acima:
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}
Crie uma tabela - - que armazene apenas o histórico (use para evitar múltiplas execuções do código)
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
Limpe os dados intermediários armazenados:
In[]:=
data=.
Design do Indicador
Design do Indicador
Utilize o código abaixo para criar um indicador semelhante ao exibido na página da CNN:
Construa um efeito de ponte de pedra ao redor do indicador usando a função , especificando os raios interno e externo:
In[]:=
ri=3;ro=4.6;
Liste o intervalo angular correspondente a cada segmento do anel parcial:
In[]:=
segmentAnnulus={{135.5,180},{99.5,134.5},{81.5,98.5},{45.5,80.5},{0,44.5}};
Projete um indicador no formato de um semidisco:
In[]:=
Clear[g]
In[]:=
g[t_]:=AngularGauge[t,{0,100},ScaleOrigin->{π,0},GaugeStyle->StandardOrange,ImageSize->100];
Destaque o segmento do anel que corresponde à direção indicada pelo ponteiro do indicador:
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}]]
A função posiciona as palavras nas posições corretas com a orientação apropriada:
In[]:=
PlaceWord[txt_String,r_,θ_]:=Rotate[Text[Style[txt,10,FontFamily->"Helvetica",Black,Bold],r*{Cos[θ],Sin[θ]}],θ-π/2]
Gere um gráfico do Índice de Medo e Ganância da CNN, incluindo uma série temporal dos valores do índice:
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[]=
CITE ESTE NOTEBOOK
CITE ESTE NOTEBOOK
Animate the CNN fear and greed index gauge
by Shenghui Yang
Wolfram Community, STAFF PICKS, April 18, 2026
https://community.wolfram.com/groups/-/m/t/3694627
by Shenghui Yang
Wolfram Community, STAFF PICKS, April 18, 2026
https://community.wolfram.com/groups/-/m/t/3694627