zacks

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2023 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HOMEPAGE_URL       string = `https://zacks.com`
	LOGIN_URL          string = `https://www.zacks.com/logout.php`
	STOCK_SCREENER_URL string = `https://www.zacks.com/screening/stock-screener`
)

Variables

This section is empty.

Functions

func Download

func Download() (fileData []byte, outputFilename string, err error)

Download authenticates with the zacks webpage and downloads the results of the stock screen it returns the downloaded bytes, filename, and any errors that occur

func SaveToDB

func SaveToDB(records []*ZacksRecord) error

func SaveToParquet

func SaveToParquet(records []*ZacksRecord, fn string) error

Types

type Ticker

type Ticker struct {
	CompanyName   string `db:"name"`
	Ticker        string `db:"ticker"`
	CompositeFigi string `db:"composite_figi"`
}

type ZacksRecord

type ZacksRecord struct {
	CompanyName                               string    `` /* 130-byte string literal not displayed */
	Ticker                                    string    `` /* 134-byte string literal not displayed */
	CompositeFigi                             string    `` /* 153-byte string literal not displayed */
	Exchange                                  string    `csv:"Exchange" json:"exchange" parquet:"name=exchange, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`
	EventDateStr                              string    `csv:"-" json:"event_date" parquet:"name=event_date, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`
	EventDate                                 time.Time `csv:"-" json:"-"`
	InSp500                                   bool      `csv:"S&P 500 - ETF" json:"in_sp500" parquet:"name=in_sp500, type=BOOLEAN" db:"in_sp500"`
	LastClose                                 float64   `csv:"Last Close" json:"last_close" parquet:"name=last_close, type=DOUBLE"`
	MonthOfFiscalYrEnd                        int       `` /* 146-byte string literal not displayed */
	Optionable                                bool      `csv:"Optionable" json:"optionable" parquet:"name=optionable, type=BOOLEAN" db:"optionable"`
	Sector                                    string    `` /* 134-byte string literal not displayed */
	Industry                                  string    `` /* 142-byte string literal not displayed */
	SharesOutstandingMil                      float64   `` /* 149-byte string literal not displayed */
	MarketCapMil                              float64   `csv:"Market Cap (mil)" json:"market_cap_mil" parquet:"name=market_cap_mil, type=DOUBLE" db:"market_cap_mil,omitempty"`
	AvgVolume                                 int64     `csv:"Avg Volume" json:"avg_volume" parquet:"name=avg_volume, type=INT64" db:"avg_volume,omitempty"`
	WkHigh52                                  float64   `csv:"52 Week High" json:"wk_high_52" parquet:"name=wk_high_52, type=DOUBLE" db:"wk_high_52,omitempty"`
	WkLow52                                   float64   `csv:"52 Week Low" json:"wk_low_52" parquet:"name=wk_low_52, type=DOUBLE" db:"wk_low_52,omitempty"`
	PriceAsPercentOf52wkHighLow               float32   `` /* 170-byte string literal not displayed */
	Beta                                      float32   `csv:"Beta" json:"beta" parquet:"name=beta, type=FLOAT" db:"beta,omitempty"`
	PercentPriceChange1Wk                     float32   `` /* 153-byte string literal not displayed */
	PercentPriceChange4Wk                     float32   `` /* 154-byte string literal not displayed */
	PercentPriceChange12Wk                    float32   `` /* 158-byte string literal not displayed */
	PercentPriceChangeYtd                     float32   `` /* 150-byte string literal not displayed */
	RelativePriceChange                       float32   `` /* 142-byte string literal not displayed */
	ZacksRank                                 int       `csv:"Zacks Rank" json:"zacks_rank" parquet:"name=zacks_rank, type=INT32" db:"zacks_rank,omitempty"`
	ZacksRankChangeIndicator                  int       `` /* 166-byte string literal not displayed */
	ZacksIndustryRank                         int       `` /* 134-byte string literal not displayed */
	ValueScore                                string    `` /* 154-byte string literal not displayed */
	GrowthScore                               string    `` /* 158-byte string literal not displayed */
	MomentumScore                             string    `` /* 166-byte string literal not displayed */
	VgmScore                                  string    `` /* 146-byte string literal not displayed */
	CurrentAvgBrokerRec                       float32   `` /* 146-byte string literal not displayed */
	NumBrokersInRating                        int       `` /* 143-byte string literal not displayed */
	NumRatingStrongBuyOrBuy                   int       `` /* 168-byte string literal not displayed */
	PercentRatingStrongBuyOrBuy               float32   `` /* 180-byte string literal not displayed */
	NumRatingHold                             int       `csv:"# Rating Hold" json:"num_rating_hold" parquet:"name=num_rating_hold, type=INT32" db:"num_rating_hold,omitempty"`
	NumRatingStrongSellOrSell                 int       `` /* 176-byte string literal not displayed */
	PercentRatingStrongSellOrSell             float32   `` /* 188-byte string literal not displayed */
	PercentRatingChange4Wk                    float32   `` /* 158-byte string literal not displayed */
	IndustryRankOfAbr                         int       `` /* 140-byte string literal not displayed */
	RankInIndustryOfAbr                       int       `` /* 152-byte string literal not displayed */
	ChangeInAvgRec                            float32   `` /* 127-byte string literal not displayed */
	NumberRatingUpgrades                      int       `` /* 141-byte string literal not displayed */
	NumberRatingDowngrades                    int       `` /* 150-byte string literal not displayed */
	PercentRatingHold                         float32   `` /* 128-byte string literal not displayed */
	PercentRatingUpgrades                     float32   `` /* 145-byte string literal not displayed */
	PercentRatingDowngrades                   float32   `` /* 153-byte string literal not displayed */
	AverageTargetPrice                        float64   `` /* 139-byte string literal not displayed */
	EarningsEsp                               float32   `csv:"Earnings ESP" json:"earnings_esp" parquet:"name=earnings_esp, type=FLOAT" db:"earnings_esp,omitempty"`
	LastEpsSurprisePercent                    float32   `` /* 154-byte string literal not displayed */
	PreviousEpsSurprisePercent                float32   `` /* 170-byte string literal not displayed */
	AvgEpsSurpriseLast4Qtrs                   float32   `` /* 172-byte string literal not displayed */
	ActualEpsUsedInSurpriseDollarsPerShare    float32   `` /* 227-byte string literal not displayed */
	LastQtrEps                                float32   `csv:"Last Qtr EPS" json:"last_qtr_eps" parquet:"name=last_qtr_eps, type=FLOAT" db:"last_qtr_eps,omitempty"`
	LastReportedQtrDateStr                    string    `` /* 164-byte string literal not displayed */
	LastReportedQtrDate                       time.Time `csv:"-" json:"-" db:"last_reported_qtr_date,omitempty"`
	LastYrEpsF0BeforeNri                      float32   `` /* 162-byte string literal not displayed */
	TwelveMoTrailingEps                       float32   `` /* 142-byte string literal not displayed */
	LastReportedFiscalYrStr                   string    `` /* 173-byte string literal not displayed */
	LastReportedFiscalYr                      time.Time `csv:"-" json:"-" db:"last_reported_fiscal_yr,omitempty"`
	LastEpsReportDateStr                      string    `` /* 165-byte string literal not displayed */
	LastEpsReportDate                         time.Time `csv:"-" json:"-" db:"last_eps_report_date,omitempty"`
	NextEpsReportDateStr                      string    `` /* 166-byte string literal not displayed */
	NextEpsReportDate                         time.Time `csv:"-" json:"-" db:"next_eps_report_date,omitempty"`
	PercentChangeQ0Est                        float32   `` /* 147-byte string literal not displayed */
	PercentChangeQ2Est                        float32   `` /* 147-byte string literal not displayed */
	PercentChangeF1Est                        float32   `` /* 147-byte string literal not displayed */
	PercentChangeQ1Est                        float32   `` /* 147-byte string literal not displayed */
	PercentChangeF2Est                        float32   `` /* 147-byte string literal not displayed */
	PercentChangeLtGrowthEst                  float32   `` /* 175-byte string literal not displayed */
	Q0ConsensusEstLastCompletedFiscalQtr      float32   `` /* 229-byte string literal not displayed */
	NumberOfAnalystsInQ0Consensus             int       `` /* 189-byte string literal not displayed */
	Q1ConsensusEst                            float32   `csv:"Q1 Consensus Est. " json:"q1_consensus_est" parquet:"name=q1_consensus_est, type=FLOAT" db:"q1_consensus_est,omitempty"`
	NumberOfAnalystsInQ1Consensus             int       `` /* 189-byte string literal not displayed */
	StdevQ1Q1ConsensusRatio                   float32   `` /* 165-byte string literal not displayed */
	Q2ConsensusEstNextFiscalQtr               float32   `` /* 189-byte string literal not displayed */
	NumberOfAnalystsInQ2Consensus             int       `` /* 189-byte string literal not displayed */
	StdevQ2Q2ConsensusRatio                   float32   `` /* 165-byte string literal not displayed */
	F0ConsensusEst                            float32   `csv:"F0 Consensus Est." json:"f0_consensus_est" parquet:"name=f0_consensus_est, type=FLOAT" db:"f0_consensus_est,omitempty"`
	NumberOfAnalystsInF0Consensus             float32   `` /* 189-byte string literal not displayed */
	F1ConsensusEst                            float32   `csv:"F1 Consensus Est." json:"f1_consensus_est" parquet:"name=f1_consensus_est, type=FLOAT" db:"f1_consensus_est,omitempty"`
	NumberOfAnalystsInF1Consensus             int       `` /* 189-byte string literal not displayed */
	StdevF1F1ConsensusRatio                   float32   `` /* 165-byte string literal not displayed */
	F2ConsensusEst                            float32   `csv:"F2 Consensus Est." json:"f2_consensus_est" parquet:"name=f2_consensus_est, type=FLOAT" db:"f2_consensus_est,omitempty"`
	NumberOfAnalystsInF2Consensus             int       `` /* 189-byte string literal not displayed */
	FiveYrHistEpsGrowth                       float32   `` /* 149-byte string literal not displayed */
	LongTermGrowthConsensusEst                float32   `` /* 179-byte string literal not displayed */
	PercentChangeEps                          float32   `` /* 138-byte string literal not displayed */
	LastYrsGrowth                             float32   `` /* 134-byte string literal not displayed */
	ThisYrsEstGrowth                          float32   `` /* 149-byte string literal not displayed */
	PercentRatioOfQ1Q0                        float32   `` /* 140-byte string literal not displayed */
	PercentRatioOfQ1PriorYrQ1ActualQ          float32   `` /* 216-byte string literal not displayed */
	SalesGrowth                               float32   `csv:"Sales Growth F(0)/F(-1)" json:"sales_growth" parquet:"name=sales_growth, type=FLOAT" db:"sales_growth,omitempty"`
	FiveYrHistoricalSalesGrowth               float32   `` /* 179-byte string literal not displayed */
	Q1ConsensusSalesEstMil                    float32   `` /* 168-byte string literal not displayed */
	F1ConsensusSalesEstMil                    float32   `` /* 168-byte string literal not displayed */
	PeTrailing12Months                        float32   `` /* 145-byte string literal not displayed */
	PeF1                                      float32   `csv:"P/E (F1)" json:"pe_f1" parquet:"name=pe_f1, type=FLOAT" db:"pe_f1,omitempty"`
	PeF2                                      float32   `csv:"P/E (F2)" json:"pe_f2" parquet:"name=pe_f2, type=FLOAT" db:"pe_f2,omitempty"`
	PegRatio                                  float32   `csv:"PEG Ratio" json:"peg_ratio" parquet:"name=peg_ratio, type=FLOAT" db:"peg_ratio,omitempty"`
	PriceToCashFlow                           float32   `` /* 127-byte string literal not displayed */
	PriceToSales                              float32   `csv:"Price/Sales" json:"price_to_sales" parquet:"name=price_to_sales, type=FLOAT" db:"price_to_sales,omitempty"`
	PriceToBook                               float32   `csv:"Price/Book" json:"price_to_book" parquet:"name=price_to_book, type=FLOAT" db:"price_to_book,omitempty"`
	CurrentRoeTtm                             float32   `csv:"Current ROE (TTM)" json:"current_roe_ttm" parquet:"name=current_roe_ttm, type=FLOAT" db:"current_roe_ttm,omitempty"`
	CurrentRoiTtm                             float32   `csv:"Current ROI (TTM)" json:"current_roi_ttm" parquet:"name=current_roi_ttm, type=FLOAT" db:"current_roi_ttm,omitempty"`
	Roi5YrAvg                                 float32   `csv:"ROI (5 Yr Avg)" json:"roi_5_yr_avg" parquet:"name=roi_5_yr_avg, type=FLOAT" db:"roi_5_yr_avg,omitempty"`
	CurrentRoaTtm                             float32   `csv:"Current ROA (TTM)" json:"current_roa_ttm" parquet:"name=current_roa_ttm, type=FLOAT" db:"current_roa_ttm,omitempty"`
	Roa5YrAvg                                 float32   `csv:"ROA (5 Yr Avg)" json:"roa_5_yr_avg" parquet:"name=roa_5_yr_avg, type=FLOAT" db:"roa_5_yr_avg,omitempty"`
	MarketValueToNumberAnalysts               float32   `` /* 174-byte string literal not displayed */
	AnnualSalesMil                            float32   `csv:"Annual Sales ($mil)" json:"annual_sales_mil" parquet:"name=annual_sales_mil, type=FLOAT" db:"annual_sales_mil,omitempty"`
	CostOfGoodsSoldMil                        float32   `` /* 149-byte string literal not displayed */
	EbitdaMil                                 float32   `csv:"EBITDA ($mil)" json:"ebitda_mil" parquet:"name=ebitda_mil, type=FLOAT" db:"ebitda_mil,omitempty"`
	EbitMil                                   float32   `csv:"EBIT ($mil)" json:"ebit_mil" parquet:"name=ebit_mil, type=FLOAT" db:"ebit_mil,omitempty"`
	PretaxIncomeMil                           float32   `` /* 129-byte string literal not displayed */
	NetIncomeMil                              float32   `csv:"Net Income  ($mil)" json:"net_income_mil" parquet:"name=net_income_mil, type=FLOAT" db:"net_income_mil,omitempty"`
	CashFlowMil                               float32   `csv:"Cash Flow ($mil)" json:"cash_flow_mil" parquet:"name=cash_flow_mil, type=FLOAT" db:"cash_flow_mil,omitempty"`
	NetIncomeGrowthF0FNeg1                    float32   `` /* 167-byte string literal not displayed */
	TwelveMoNetIncomeCurrentToLastPercent     float32   `` /* 222-byte string literal not displayed */
	TwelveMoNetIncomeCurrent1qToLast1qPercent float32   `` /* 246-byte string literal not displayed */
	DivYieldPercent                           float32   `csv:"Div. Yield %" json:"div_yield_percent" parquet:"name=div_yield_percent, type=FLOAT" db:"div_yield_percent,omitempty"`
	FiveYrDivYieldPercent                     float32   `` /* 150-byte string literal not displayed */
	FiveYrHistDivGrowthPercent                float32   `` /* 175-byte string literal not displayed */
	Dividend                                  float32   `csv:"Dividend " json:"dividend" parquet:"name=dividend, type=FLOAT" db:"dividend,omitempty"`
	NetMarginPercent                          float32   `csv:"Net Margin %" json:"net_margin_percent" parquet:"name=net_margin_percent, type=FLOAT" db:"net_margin_percent,omitempty"`
	Turnover                                  float32   `csv:"Turnover" json:"turnover" parquet:"name=turnover, type=FLOAT" db:"turnover,omitempty"`
	OperatingMargin12MoPercent                float32   `` /* 172-byte string literal not displayed */
	InventoryTurnover                         float32   `` /* 130-byte string literal not displayed */
	AssetUtilization                          float32   `` /* 126-byte string literal not displayed */
	ReceivablesMil                            float32   `csv:"Receivables ($mil)" json:"receivables_mil" parquet:"name=receivables_mil, type=FLOAT" db:"receivables_mil,omitempty"`
	IntangiblesMil                            float32   `csv:"Intangibles ($mil)" json:"intangibles_mil" parquet:"name=intangibles_mil, type=FLOAT" db:"intangibles_mil,omitempty"`
	InventoryMil                              float32   `csv:"Inventory ($mil)" json:"inventory_mil" parquet:"name=inventory_mil, type=FLOAT" db:"inventory_mil,omitempty"`
	CurrentAssetsMil                          float32   `` /* 134-byte string literal not displayed */
	CurrentLiabilitiesMil                     float32   `` /* 153-byte string literal not displayed */
	LongTermDebtMil                           float32   `` /* 133-byte string literal not displayed */
	PreferredEquityMil                        float32   `` /* 141-byte string literal not displayed */
	CommonEquityMil                           float32   `` /* 129-byte string literal not displayed */
	BookValue                                 float32   `csv:"Book Value" json:"book_value" parquet:"name=book_value, type=FLOAT" db:"book_value,omitempty"`
	DebtToTotalCapital                        float32   `` /* 139-byte string literal not displayed */
	DebtToEquityRatio                         float32   `` /* 135-byte string literal not displayed */
	CurrentRatio                              float32   `csv:"Current Ratio" json:"current_ratio" parquet:"name=current_ratio, type=FLOAT" db:"current_ratio,omitempty"`
	QuickRatio                                float32   `csv:"Quick Ratio" json:"quick_ratio" parquet:"name=quick_ratio, type=FLOAT" db:"quick_ratio,omitempty"`
	CashRatio                                 float32   `csv:"Cash Ratio" json:"cash_ratio" parquet:"name=cash_ratio, type=FLOAT" db:"cash_ratio,omitempty"`
}

func EnrichWithFigi

func EnrichWithFigi(records []*ZacksRecord) []*ZacksRecord

func LoadRatings

func LoadRatings(ratingsData []byte, dateStr string, limit int) []*ZacksRecord

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL