Documentation
¶
Index ¶
- func StringSliceToJSON(slice []string) (string, error)
- type HTML
- type Portfolio
- func (p *Portfolio) AssetReturnsChart(height, width uint) (HTML, error)
- func (p *Portfolio) Free()
- func (p *Portfolio) OptimizationChart(height, width uint) (HTML, error)
- func (p *Portfolio) OptimizationResults() (map[string]any, error)
- func (p *Portfolio) PerformanceChart(height, width uint) (HTML, error)
- func (t *Portfolio) PerformanceStats() (dataframe.DataFrame, error)
- func (p *Portfolio) Report(reportType string) (HTML, error)
- func (p *Portfolio) ReturnsMatrix(height, width uint) (HTML, error)
- type PortfolioBuilder
- func (b *PortfolioBuilder) AssetConstraints(assetConstraints string) *PortfolioBuilder
- func (b *PortfolioBuilder) BenchmarkData(benchmarkData *dataframe.DataFrame) *PortfolioBuilder
- func (b *PortfolioBuilder) BenchmarkSymbol(benchmarkSymbol string) *PortfolioBuilder
- func (b *PortfolioBuilder) Build() (*Portfolio, error)
- func (b *PortfolioBuilder) CategoricalConstraints(categoricalConstraints string) *PortfolioBuilder
- func (b *PortfolioBuilder) ConfidenceLevel(confidenceLevel float64) *PortfolioBuilder
- func (b *PortfolioBuilder) EndDate(endDate string) *PortfolioBuilder
- func (b *PortfolioBuilder) Interval(interval string) *PortfolioBuilder
- func (b *PortfolioBuilder) ObjectiveFunction(objectiveFunction string) *PortfolioBuilder
- func (b *PortfolioBuilder) RiskFreeRate(riskFreeRate float64) *PortfolioBuilder
- func (b *PortfolioBuilder) StartDate(startDate string) *PortfolioBuilder
- func (b *PortfolioBuilder) TickerSymbols(tickerSymbols []string) *PortfolioBuilder
- func (b *PortfolioBuilder) TickersData(tickersData []dataframe.DataFrame) *PortfolioBuilder
- func (b *PortfolioBuilder) Weights(weights string) *PortfolioBuilder
- type Screener
- type Ticker
- func (t *Ticker) CandlestickChart(height, width uint) (HTML, error)
- func (t *Ticker) Free()
- func (t *Ticker) GetBalanceSheet(frequency string, formatted bool) (dataframe.DataFrame, error)
- func (t *Ticker) GetCashflowStatement(frequency string, formatted bool) (dataframe.DataFrame, error)
- func (t *Ticker) GetFinancialRatios(frequency string) (dataframe.DataFrame, error)
- func (t *Ticker) GetIncomeStatement(frequency string, formatted bool) (dataframe.DataFrame, error)
- func (t *Ticker) GetNews() (dataframe.DataFrame, error)
- func (t *Ticker) GetOptionsChain() (dataframe.DataFrame, error)
- func (t *Ticker) GetPriceHistory() (dataframe.DataFrame, error)
- func (t *Ticker) GetQuote() (map[string]any, error)
- func (t *Ticker) GetSummaryStats() (dataframe.DataFrame, error)
- func (t *Ticker) NewsSentimentChart(height, width uint) (HTML, error)
- func (t *Ticker) OptionsChart(chartType string, height, width uint) (HTML, error)
- func (t *Ticker) PerformanceChart(height, width uint) (HTML, error)
- func (t *Ticker) PerformanceStats() (map[string]any, error)
- func (t *Ticker) Report(reportType string) (HTML, error)
- func (t *Ticker) VolatilitySurface() (dataframe.DataFrame, error)
- type TickerBuilder
- func (b *TickerBuilder) BenchmarkData(benchmarkData *dataframe.DataFrame) *TickerBuilder
- func (b *TickerBuilder) BenchmarkSymbol(benchmarkSymbol string) *TickerBuilder
- func (b *TickerBuilder) Build() (*Ticker, error)
- func (b *TickerBuilder) ConfidenceLevel(confidenceLevel float64) *TickerBuilder
- func (b *TickerBuilder) EndDate(endDate string) *TickerBuilder
- func (b *TickerBuilder) Interval(interval string) *TickerBuilder
- func (b *TickerBuilder) RiskFreeRate(riskFreeRate float64) *TickerBuilder
- func (b *TickerBuilder) StartDate(startDate string) *TickerBuilder
- func (b *TickerBuilder) Symbol(symbol string) *TickerBuilder
- func (b *TickerBuilder) TickerData(tickerData *dataframe.DataFrame) *TickerBuilder
- type Tickers
- func (t *Tickers) Free()
- func (t *Tickers) GetBalanceSheet(frequency string, formatted bool) (dataframe.DataFrame, error)
- func (t *Tickers) GetCashflowStatement(frequency string, formatted bool) (dataframe.DataFrame, error)
- func (t *Tickers) GetFinancialRatios(frequency string) (dataframe.DataFrame, error)
- func (t *Tickers) GetIncomeStatement(frequency string, formatted bool) (dataframe.DataFrame, error)
- func (t *Tickers) GetNews() (dataframe.DataFrame, error)
- func (t *Tickers) GetOptionsChain() (dataframe.DataFrame, error)
- func (t *Tickers) GetPriceHistory() (dataframe.DataFrame, error)
- func (t *Tickers) GetSummaryStats() (dataframe.DataFrame, error)
- func (t *Tickers) GetTicker(symbol string) (*Ticker, error)
- func (t *Tickers) Optimize(objectiveFunction, assetConstraints, categoricalConstraints, weights string) (*Portfolio, error)
- func (t *Tickers) PerformanceStats() (dataframe.DataFrame, error)
- func (t *Tickers) Report(reportType string) (HTML, error)
- func (t *Tickers) Returns() (dataframe.DataFrame, error)
- func (t *Tickers) ReturnsChart(height, width uint) (HTML, error)
- func (t *Tickers) ReturnsMatrix(height, width uint) (HTML, error)
- type TickersBuilder
- func (b *TickersBuilder) BenchmarkData(benchmarkData *dataframe.DataFrame) *TickersBuilder
- func (b *TickersBuilder) BenchmarkSymbol(benchmarkSymbol string) *TickersBuilder
- func (b *TickersBuilder) Build() (*Tickers, error)
- func (b *TickersBuilder) ConfidenceLevel(confidenceLevel float64) *TickersBuilder
- func (b *TickersBuilder) EndDate(endDate string) *TickersBuilder
- func (b *TickersBuilder) Interval(interval string) *TickersBuilder
- func (b *TickersBuilder) RiskFreeRate(riskFreeRate float64) *TickersBuilder
- func (b *TickersBuilder) StartDate(startDate string) *TickersBuilder
- func (b *TickersBuilder) Symbols(symbols []string) *TickersBuilder
- func (b *TickersBuilder) TickersData(tickersData []dataframe.DataFrame) *TickersBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StringSliceToJSON ¶
StringSliceToJSON converts a []string to a JSON string array.
Types ¶
type HTML ¶
type HTML struct {
Content string
}
HTML stores the HTML string for a chart, table or report.
type Portfolio ¶
type Portfolio struct {
// contains filtered or unexported fields
}
Portfolio represents a portfolio of assets with methods for retrieving optimization results and analytics. It encapsulates a handle to the underlying C library for interacting with portfolio data.
func (*Portfolio) AssetReturnsChart ¶
AssetReturnsChart retrieves the asset returns chart for the portfolio as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the asset returns chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
assetChart, err := portfolio.AssetReturnsChart(0, 0)
if err != nil {
fmt.Printf("Failed to get asset returns chart: %v\n", err)
return
}
assetChart.Show()
}
func (*Portfolio) Free ¶
func (p *Portfolio) Free()
Free releases the resources associated with the Portfolio. It should be called when the Portfolio is no longer needed to prevent memory leaks.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
portfolio.Free()
fmt.Println("Portfolio resources freed successfully")
}
func (*Portfolio) OptimizationChart ¶
OptimizationChart retrieves the portfolio optimization chart as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the optimization chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
optChart, err := portfolio.OptimizationChart(0, 0)
if err != nil {
fmt.Printf("Failed to get optimization chart: %v\n", err)
return
}
optChart.Show()
}
func (*Portfolio) OptimizationResults ¶
OptimizationResults retrieves portfolio optimization results.
Returns:
- map[string]any: A map containing the optimization results (e.g., weights, expected return, volatility).
- error: An error if the optimization results retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
results, err := portfolio.OptimizationResults()
if err != nil {
fmt.Printf("Failed to get optimization results: %v\n", err)
return
}
fmt.Printf("Optimization Results: %v\n", results)
}
func (*Portfolio) PerformanceChart ¶
PerformanceChart retrieves the portfolio performance chart as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the performance chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
perfChart, err := portfolio.PerformanceChart(0, 0)
if err != nil {
fmt.Printf("Failed to get performance chart: %v\n", err)
return
}
perfChart.Show()
}
func (*Portfolio) PerformanceStats ¶ added in v0.1.1
PerformanceStats retrieves performance statistics for the portfolio.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated performance statistics for the portfolio (e.g., returns, volatility, Sharpe ratio).
- error: An error if the performance statistics retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
perfStats, err := portfolio.PerformanceStats()
if err != nil {
fmt.Printf("Failed to get performance stats: %v\n", err)
return
}
fmt.Printf("Performance Stats:\n%v\n", perfStats)
}
func (*Portfolio) Report ¶
Report retrieves a comprehensive report for the portfolio as an HTML object.
Parameters:
- reportType: The type of report to display (e.g., "performance").
Returns:
- HTML: An HTML object containing the report.
- error: An error if the report retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
report, err := portfolio.Report("performance")
if err != nil {
fmt.Printf("Failed to get report: %v\n", err)
return
}
report.Show()
}
func (*Portfolio) ReturnsMatrix ¶
ReturnsMatrix retrieves the returns correlation matrix for the portfolio as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the returns correlation matrix.
- error: An error if the matrix retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
retMatrix, err := portfolio.ReturnsMatrix(0, 0)
if err != nil {
fmt.Printf("Failed to get returns matrix: %v\n", err)
return
}
retMatrix.Show()
}
type PortfolioBuilder ¶
type PortfolioBuilder struct {
// contains filtered or unexported fields
}
PortfolioBuilder is used to construct a Portfolio instance using the builder pattern. It allows for fluent configuration of the Portfolio's parameters before creation.
func NewPortfolioBuilder ¶
func NewPortfolioBuilder() *PortfolioBuilder
NewPortfolioBuilder initializes a new PortfolioBuilder with default values. Defaults:
- tickerSymbols: nil
- benchmarkSymbol: ""
- startDate: ""
- endDate: ""
- interval: "1d"
- confidenceLevel: 0.95
- riskFreeRate: 0.02
- objectiveFunction: "max_sharpe"
- assetConstraints: "{}"
- categoricalConstraints: "{}"
- weights: "{}"
- tickersData: nil
- benchmarkData: nil
Returns:
- *PortfolioBuilder: A pointer to the initialized PortfolioBuilder.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
builder := finalytics.NewPortfolioBuilder()
fmt.Println("PortfolioBuilder initialized")
}
func (*PortfolioBuilder) AssetConstraints ¶
func (b *PortfolioBuilder) AssetConstraints(assetConstraints string) *PortfolioBuilder
AssetConstraints sets the asset-level constraints for optimization.
Parameters:
- assetConstraints: JSON string defining asset-level constraints (e.g., `[[0,1],[0,1]]` for min/max weights).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().AssetConstraints(`[[0,1],[0,1]]`)
func (*PortfolioBuilder) BenchmarkData ¶
func (b *PortfolioBuilder) BenchmarkData(benchmarkData *dataframe.DataFrame) *PortfolioBuilder
BenchmarkData sets custom benchmark data for the Portfolio.
Parameters:
- benchmarkData: A DataFrame containing custom benchmark data (pass nil if not using custom data).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().BenchmarkData(nil)
func (*PortfolioBuilder) BenchmarkSymbol ¶
func (b *PortfolioBuilder) BenchmarkSymbol(benchmarkSymbol string) *PortfolioBuilder
BenchmarkSymbol sets the benchmark symbol for the Portfolio.
Parameters:
- benchmarkSymbol: The ticker symbol of the benchmark (e.g., "^GSPC").
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().BenchmarkSymbol("^GSPC")
func (*PortfolioBuilder) Build ¶
func (b *PortfolioBuilder) Build() (*Portfolio, error)
Build constructs the Portfolio instance with the configured parameters. The tickerSymbols parameter is required; other parameters are optional and use defaults if not set.
Returns:
- *Portfolio: A pointer to the initialized Portfolio object.
- error: An error if the Portfolio creation fails or tickerSymbols is missing/empty.
Example:
package main
import (
"encoding/json"
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
// Sample asset constraints: min/max weights for each asset
assetConstraints, err := json.Marshal([][2]float64{{0.1, 0.5}, {0.1, 0.5}, {0.1, 0.5}, {0.1, 0.5}})
if err != nil {
fmt.Printf("Failed to marshal assetConstraints: %v\n", err)
return
}
// Sample categorical constraints: limit EQUITY to 80% and CRYPTO to 20%
categoricalConstraints, err := json.Marshal([]map[string]interface{}{
{
"name": "AssetClass",
"category_per_symbol": []string{"EQUITY", "EQUITY", "EQUITY", "EQUITY", "CRYPTO"},
"weight_per_category": [][]interface{}{
{"EQUITY", 0.0, 0.8},
{"CRYPTO", 0.0, 0.2},
},
},
})
if err != nil {
fmt.Printf("Error marshaling categoricalConstraints: %v\n", err)
return
}
portfolio, err := finalytics.NewPortfolioBuilder().
TickerSymbols([]string{"AAPL", "MSFT", "NVDA", "BTC-USD"}).
BenchmarkSymbol("^GSPC").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
ObjectiveFunction("max_sharpe").
AssetConstraints(string(assetConstraints)).
CategoricalConstraints(string(categoricalConstraints)).
weights("{}").
Build()
if err != nil {
fmt.Printf("Failed to create Portfolio: %v\n", err)
return
}
defer portfolio.Free()
fmt.Println("Portfolio created successfully for AAPL, MSFT, NVDA, and BTC-USD")
}
func (*PortfolioBuilder) CategoricalConstraints ¶
func (b *PortfolioBuilder) CategoricalConstraints(categoricalConstraints string) *PortfolioBuilder
CategoricalConstraints sets the categorical constraints for optimization.
Parameters:
- categoricalConstraints: JSON string defining categorical constraints (e.g., constraints on asset classes).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().CategoricalConstraints(`[{"Name":"AssetClass","Categories":["EQUITY","EQUITY"],"Constraints":[["EQUITY",0.0,0.8]]}]`)
func (*PortfolioBuilder) ConfidenceLevel ¶
func (b *PortfolioBuilder) ConfidenceLevel(confidenceLevel float64) *PortfolioBuilder
ConfidenceLevel sets the confidence level for VaR and ES calculations.
Parameters:
- confidenceLevel: The confidence level (e.g., 0.95 for 95% confidence).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().ConfidenceLevel(0.99)
func (*PortfolioBuilder) EndDate ¶
func (b *PortfolioBuilder) EndDate(endDate string) *PortfolioBuilder
EndDate sets the end date for the Portfolio's data period.
Parameters:
- endDate: The end date in the format YYYY-MM-DD.
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().EndDate("2023-12-31")
func (*PortfolioBuilder) Interval ¶
func (b *PortfolioBuilder) Interval(interval string) *PortfolioBuilder
Interval sets the data interval for the Portfolio.
Parameters:
- interval: The data interval (e.g., "2m", "5m", "15m", "30m", "1h", "1d", "1wk", "1mo", "3mo").
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().Interval("1d")
func (*PortfolioBuilder) ObjectiveFunction ¶
func (b *PortfolioBuilder) ObjectiveFunction(objectiveFunction string) *PortfolioBuilder
ObjectiveFunction sets the objective function for optimization.
Parameters:
- objectiveFunction: The objective function (e.g., "max_sharpe", "max_sortino", "max_return", "min_vol", "min_var", "min_cvar", "min_drawdown").
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().ObjectiveFunction("max_sharpe")
func (*PortfolioBuilder) RiskFreeRate ¶
func (b *PortfolioBuilder) RiskFreeRate(riskFreeRate float64) *PortfolioBuilder
RiskFreeRate sets the risk-free rate for calculations.
Parameters:
- riskFreeRate: The risk-free rate (e.g., 0.02 for 2%).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().RiskFreeRate(0.03)
func (*PortfolioBuilder) StartDate ¶
func (b *PortfolioBuilder) StartDate(startDate string) *PortfolioBuilder
StartDate sets the start date for the Portfolio's data period.
Parameters:
- startDate: The start date in the format YYYY-MM-DD.
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().StartDate("2023-01-01")
func (*PortfolioBuilder) TickerSymbols ¶
func (b *PortfolioBuilder) TickerSymbols(tickerSymbols []string) *PortfolioBuilder
TickerSymbols sets the ticker symbols for the Portfolio.
Parameters:
- tickerSymbols: A string slice of ticker symbols (e.g., []string{"AAPL", "MSFT"}).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().TickerSymbols([]string{"AAPL", "MSFT"})
func (*PortfolioBuilder) TickersData ¶
func (b *PortfolioBuilder) TickersData(tickersData []dataframe.DataFrame) *PortfolioBuilder
TickersData sets custom ticker data for the Portfolio.
Parameters:
- tickersData: A slice of DataFrames containing custom ticker data for each symbol (pass nil or empty slice if not using custom data).
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().TickersData(nil)
func (*PortfolioBuilder) Weights ¶
func (b *PortfolioBuilder) Weights(weights string) *PortfolioBuilder
weights sets the portfolio-level constraints for optimization.
Parameters:
- weights: JSON string defining portfolio-level constraints (e.g., "{}").
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().weights("{}")
type Screener ¶
type Screener struct {
// contains filtered or unexported fields
}
Screener represents a stock screener for filtering financial instruments based on specified criteria. It encapsulates a handle to the underlying C library for interacting with screener data.
func NewScreener ¶
func NewScreener(quoteType string, filters []string, sortField string, sortDescending bool, offset, size uint) (*Screener, error)
NewScreener creates a new Screener instance with the given parameters.
Parameters:
- quoteType: The type of financial instrument to screen (e.g., "EQUITY", "MUTUALFUND", "ETF", "INDEX", "FUTURE", "CRYPTO").
- filters: A string slice, where each element is a JSON object representing a filter criterion. Each filter should have the format: { "operator": "<op>", "operands": ["<metric>", <value>[, <value2>]] } Supported operators are "eq" (equal), "gte" (greater than or equal), "lte" (less than or equal), "gt" (greater than), "lt" (less than), or "btwn" (between, requiring two values). The `<metric>` must be a valid screener metric for the quote type (e.g., "intradaymarketcap" for EQUITY). A full list of metrics is available at: https://github.com/Nnamdi-sys/finalytics/tree/main/rust/src/data/yahoo/screeners/screeners.json.
- sortField: The metric to sort by (e.g., "intradaymarketcap" for EQUITY). If empty, no sorting is applied.
- sortDescending: Whether to sort in descending order (true) or ascending order (false).
- offset: The starting index of results to return (e.g., 0 to start from the beginning).
- size: The maximum number of results to return (e.g., 10 for the top 10 results).
Returns:
- *Screener: A pointer to the initialized Screener object.
- error: An error if the Screener creation fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
// Sample filters: select equities on the NMS exchange with market cap >= 10B
filters := []string{
`{"operator":"eq","operands":["exchange","NMS"]}`,
`{"operator":"gte","operands":["intradaymarketcap",10000000000]}`
}
screener, err := finalytics.NewScreener("EQUITY", filters, "intradaymarketcap", true, 0, 10)
if err != nil {
fmt.Printf("Failed to create Screener: %v\n", err)
return
}
defer screener.Free()
fmt.Println("Screener created successfully for EQUITY on NMS with market cap >= 10B")
}
func (*Screener) Free ¶
func (s *Screener) Free()
Free releases the resources associated with the Screener. It should be called when the Screener is no longer needed to prevent memory leaks.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
screener, err := finalytics.NewScreener("EQUITY", `[{"operator": "eq", "operands": ["exchange", "NMS"]}]`, "intradaymarketcap", true, 0, 10)
if err != nil {
fmt.Printf("Failed to create Screener: %v\n", err)
return
}
screener.Free()
fmt.Println("Screener resources freed successfully")
}
func (*Screener) Metrics ¶
Metrics retrieves detailed metrics for the screened instruments.
Returns:
- dataframe.DataFrame: A DataFrame containing detailed metrics for the screened instruments.
- error: An error if the metrics retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
screener, err := finalytics.NewScreener("EQUITY", `[{"operator": "eq", "operands": ["exchange", "NMS"]}]`, "intradaymarketcap", true, 0, 10)
if err != nil {
fmt.Printf("Failed to create Screener: %v\n", err)
return
}
defer screener.Free()
metrics, err := screener.Metrics()
if err != nil {
fmt.Printf("Failed to get metrics: %v\n", err)
return
}
fmt.Printf("Metrics:\n%v\n", metrics)
}
func (*Screener) Overview ¶
Overview retrieves overview data for the screened instruments.
Returns:
- dataframe.DataFrame: A DataFrame containing overview data for the screened instruments.
- error: An error if the overview retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
screener, err := finalytics.NewScreener("EQUITY", `[{"operator": "eq", "operands": ["exchange", "NMS"]}]`, "intradaymarketcap", true, 0, 10)
if err != nil {
fmt.Printf("Failed to create Screener: %v\n", err)
return
}
defer screener.Free()
overview, err := screener.Overview()
if err != nil {
fmt.Printf("Failed to get overview: %v\n", err)
return
}
fmt.Printf("Overview:\n%v\n", overview)
}
func (*Screener) Symbols ¶
Symbols retrieves the list of ticker symbols matching the screener criteria.
Returns:
- []string: A slice of ticker symbols (e.g., ["AAPL", "MSFT", "GOOGL"]).
- error: An error if the symbols retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
screener, err := finalytics.NewScreener("EQUITY", `[{"operator": "eq", "operands": ["exchange", "NMS"]}]`, "intradaymarketcap", true, 0, 10)
if err != nil {
fmt.Printf("Failed to create Screener: %v\n", err)
return
}
defer screener.Free()
symbols, err := screener.Symbols()
if err != nil {
fmt.Printf("Failed to get symbols: %v\n", err)
return
}
fmt.Printf("Symbols: %v\n", symbols)
}
type Ticker ¶
type Ticker struct {
// contains filtered or unexported fields
}
Ticker represents a financial ticker with methods for retrieving financial data and analytics. It encapsulates a handle to the underlying C library for interacting with financial data.
func (*Ticker) CandlestickChart ¶
CandlestickChart retrieves the candlestick chart for the ticker as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the candlestick chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
candleChart, err := ticker.CandlestickChart(0, 0)
if err != nil {
fmt.Printf("Failed to get candlestick chart: %v\n", err)
return
}
candleChart.Show()
}
func (*Ticker) Free ¶
func (t *Ticker) Free()
Free releases the resources associated with the Ticker. It should be called when the Ticker is no longer needed to prevent memory leaks.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
ticker.Free()
fmt.Println("Ticker resources freed successfully")
}
func (*Ticker) GetBalanceSheet ¶
GetBalanceSheet retrieves the balance sheet for the ticker.
Parameters:
- frequency: The frequency of the statement ("annual" or "quarterly").
- formatted: Whether to return the statement in a formatted manner.
Returns:
- dataframe.DataFrame: A DataFrame containing the balance sheet data.
- error: An error if the balance sheet retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
balance, err := ticker.GetBalanceSheet("quarterly", true)
if err != nil {
fmt.Printf("Failed to get balance sheet: %v\n", err)
return
}
fmt.Printf("Balance Sheet:\n%v\n", balance)
}
func (*Ticker) GetCashflowStatement ¶
func (t *Ticker) GetCashflowStatement(frequency string, formatted bool) (dataframe.DataFrame, error)
GetCashflowStatement retrieves the cash flow statement for the ticker.
Parameters:
- frequency: The frequency of the statement ("annual" or "quarterly").
- formatted: Whether to return the statement in a formatted manner.
Returns:
- dataframe.DataFrame: A DataFrame containing the cash flow statement data.
- error: An error if the cash flow statement retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
cashflow, err := ticker.GetCashflowStatement("quarterly", true)
if err != nil {
fmt.Printf("Failed to get cash flow statement: %v\n", err)
return
}
fmt.Printf("Cash Flow Statement:\n%v\n", cashflow)
}
func (*Ticker) GetFinancialRatios ¶
GetFinancialRatios retrieves financial ratios for the ticker.
Parameters:
- frequency: The frequency of the ratios ("annual" or "quarterly").
Returns:
- dataframe.DataFrame: A DataFrame containing financial ratios.
- error: An error if the financial ratios retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
ratios, err := ticker.GetFinancialRatios("quarterly")
if err != nil {
fmt.Printf("Failed to get financial ratios: %v\n", err)
return
}
fmt.Printf("Financial Ratios:\n%v\n", ratios)
}
func (*Ticker) GetIncomeStatement ¶
GetIncomeStatement retrieves the income statement for the ticker.
Parameters:
- frequency: The frequency of the statement ("annual" or "quarterly").
- formatted: Whether to return the statement in a formatted manner.
Returns:
- dataframe.DataFrame: A DataFrame containing the income statement data.
- error: An error if the income statement retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
income, err := ticker.GetIncomeStatement("quarterly", true)
if err != nil {
fmt.Printf("Failed to get income statement: %v\n", err)
return
}
fmt.Printf("Income Statement:\n%v\n", income)
}
func (*Ticker) GetNews ¶
GetNews retrieves the latest news headlines for the ticker.
Returns:
- dataframe.DataFrame: A DataFrame containing news data.
- error: An error if the news retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
news, err := ticker.GetNews()
if err != nil {
fmt.Printf("Failed to get news: %v\n", err)
return
}
fmt.Printf("News:\n%v\n", news)
}
func (*Ticker) GetOptionsChain ¶
GetOptionsChain retrieves the options chain for the ticker.
Returns:
- dataframe.DataFrame: A DataFrame containing the options chain data.
- error: An error if the options chain retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
options, err := ticker.GetOptionsChain()
if err != nil {
fmt.Printf("Failed to get options chain: %v\n", err)
return
}
fmt.Printf("Options Chain:\n%v\n", options)
}
func (*Ticker) GetPriceHistory ¶
GetPriceHistory retrieves the OHLCV (Open, High, Low, Close, Volume) price history for the ticker.
Returns:
- dataframe.DataFrame: A DataFrame containing the price history data.
- error: An error if the price history retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
history, err := ticker.GetPriceHistory()
if err != nil {
fmt.Printf("Failed to get price history: %v\n", err)
return
}
fmt.Printf("Price History:\n%v\n", history)
}
func (*Ticker) GetQuote ¶
GetQuote retrieves the current quote for the ticker.
Returns:
- map[string]any: A map containing the current quote data (e.g., symbol, price, volume).
- error: An error if the quote retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
quote, err := ticker.GetQuote()
if err != nil {
fmt.Printf("Failed to get quote: %v\n", err)
return
}
fmt.Printf("Quote: %v\n", quote)
}
func (*Ticker) GetSummaryStats ¶
GetSummaryStats retrieves summary technical and fundamental statistics for the ticker.
Returns:
- dataframe.DataFrame: A DataFrame containing summary statistics.
- error: An error if the statistics retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
summary, err := ticker.GetSummaryStats()
if err != nil {
fmt.Printf("Failed to get summary stats: %v\n", err)
return
}
fmt.Printf("Summary Stats:\n%v\n", summary)
}
func (*Ticker) NewsSentimentChart ¶
NewsSentimentChart retrieves the news sentiment chart for the ticker as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the news sentiment chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
newsChart, err := ticker.NewsSentimentChart(0, 0)
if err != nil {
fmt.Printf("Failed to get news sentiment chart: %v\n", err)
return
}
newsChart.Show()
}
func (*Ticker) OptionsChart ¶
OptionsChart retrieves the options chart (e.g., volatility surface, smile, or term structure) for the ticker as an HTML object.
Parameters:
- chartType: The type of chart to display ("surface", "smile", or "term_structure").
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the options chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
optChart, err := ticker.OptionsChart("surface", 0, 0)
if err != nil {
fmt.Printf("Failed to get options chart: %v\n", err)
return
}
optChart.Show()
}
func (*Ticker) PerformanceChart ¶
PerformanceChart retrieves the performance chart for the ticker as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the performance chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
perfChart, err := ticker.PerformanceChart(0, 0)
if err != nil {
fmt.Printf("Failed to get performance chart: %v\n", err)
return
}
perfChart.Show()
}
func (*Ticker) PerformanceStats ¶
PerformanceStats retrieves performance statistics for the ticker.
Returns:
- map[string]any: A map containing performance statistics (e.g., returns, volatility, Sharpe ratio).
- error: An error if the performance statistics retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
perfStats, err := ticker.PerformanceStats()
if err != nil {
fmt.Printf("Failed to get performance stats: %v\n", err)
return
}
fmt.Printf("Performance Stats: %v\n", perfStats)
}
func (*Ticker) Report ¶
Report retrieves a comprehensive analytics report for the ticker as an HTML object.
Parameters:
- reportType: The type of report to display (e.g., "performance", "financials", "options", "news").
Returns:
- HTML: An HTML object containing the report.
- error: An error if the report retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
report, err := ticker.Report("performance")
if err != nil {
fmt.Printf("Failed to get report: %v\n", err)
return
}
report.Show()
}
func (*Ticker) VolatilitySurface ¶
VolatilitySurface retrieves the implied volatility surface for the ticker's options chain.
Returns:
- dataframe.DataFrame: A DataFrame containing the volatility surface data.
- error: An error if the volatility surface retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
volSurface, err := ticker.VolatilitySurface()
if err != nil {
fmt.Printf("Failed to get volatility surface: %v\n", err)
return
}
fmt.Printf("Volatility Surface:\n%v\n", volSurface)
}
type TickerBuilder ¶
type TickerBuilder struct {
// contains filtered or unexported fields
}
TickerBuilder is used to construct a Ticker instance using the builder pattern. It allows for fluent configuration of the Ticker's parameters before creation.
func NewTickerBuilder ¶
func NewTickerBuilder() *TickerBuilder
NewTickerBuilder initializes a new TickerBuilder with default values. Defaults:
- confidenceLevel: 0.95
- riskFreeRate: 0.02
- interval: "1d"
- startDate: ""
- endDate: ""
- benchmarkSymbol: ""
- tickerData: nil
- benchmarkData: nil
Returns:
- *TickerBuilder: A pointer to the initialized TickerBuilder.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
builder := finalytics.NewTickerBuilder()
fmt.Println("TickerBuilder initialized")
}
func (*TickerBuilder) BenchmarkData ¶
func (b *TickerBuilder) BenchmarkData(benchmarkData *dataframe.DataFrame) *TickerBuilder
BenchmarkData sets custom benchmark data for the Ticker.
Parameters:
- benchmarkData: A DataFrame containing custom benchmark data (pass nil if not using custom data).
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().BenchmarkData(nil)
func (*TickerBuilder) BenchmarkSymbol ¶
func (b *TickerBuilder) BenchmarkSymbol(benchmarkSymbol string) *TickerBuilder
BenchmarkSymbol sets the benchmark symbol for the Ticker.
Parameters:
- benchmarkSymbol: The ticker symbol of the benchmark (e.g., "^GSPC").
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().BenchmarkSymbol("^GSPC")
func (*TickerBuilder) Build ¶
func (b *TickerBuilder) Build() (*Ticker, error)
Build constructs the Ticker instance with the configured parameters. The symbol parameter is required; other parameters are optional and use defaults if not set.
Returns:
- *Ticker: A pointer to the initialized Ticker object.
- error: An error if the Ticker creation fails or the symbol is missing.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
ticker, err := finalytics.NewTickerBuilder().
Symbol("AAPL").
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
Build()
if err != nil {
fmt.Printf("Failed to create Ticker: %v\n", err)
return
}
defer ticker.Free()
fmt.Println("Ticker created successfully for AAPL")
}
func (*TickerBuilder) ConfidenceLevel ¶
func (b *TickerBuilder) ConfidenceLevel(confidenceLevel float64) *TickerBuilder
ConfidenceLevel sets the confidence level for VaR and ES calculations.
Parameters:
- confidenceLevel: The confidence level (e.g., 0.95 for 95% confidence).
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().ConfidenceLevel(0.99)
func (*TickerBuilder) EndDate ¶
func (b *TickerBuilder) EndDate(endDate string) *TickerBuilder
EndDate sets the end date for the Ticker's data period.
Parameters:
- endDate: The end date in the format YYYY-MM-DD.
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().EndDate("2023-12-31")
func (*TickerBuilder) Interval ¶
func (b *TickerBuilder) Interval(interval string) *TickerBuilder
Interval sets the data interval for the Ticker.
Parameters:
- interval: The data interval (e.g., "2m", "5m", "15m", "30m", "1h", "1d", "1wk", "1mo", "3mo").
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().Interval("1d")
func (*TickerBuilder) RiskFreeRate ¶
func (b *TickerBuilder) RiskFreeRate(riskFreeRate float64) *TickerBuilder
RiskFreeRate sets the risk-free rate for calculations.
Parameters:
- riskFreeRate: The risk-free rate (e.g., 0.02 for 2%).
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().RiskFreeRate(0.03)
func (*TickerBuilder) StartDate ¶
func (b *TickerBuilder) StartDate(startDate string) *TickerBuilder
StartDate sets the start date for the Ticker's data period.
Parameters:
- startDate: The start date in the format YYYY-MM-DD.
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().StartDate("2023-01-01")
func (*TickerBuilder) Symbol ¶
func (b *TickerBuilder) Symbol(symbol string) *TickerBuilder
Symbol sets the ticker symbol for the Ticker.
Parameters:
- symbol: The ticker symbol of the asset (e.g., "AAPL").
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().Symbol("AAPL")
func (*TickerBuilder) TickerData ¶
func (b *TickerBuilder) TickerData(tickerData *dataframe.DataFrame) *TickerBuilder
TickerData sets custom ticker data for the Ticker.
Parameters:
- tickerData: A DataFrame containing custom ticker data (pass nil if not using custom data).
Returns:
- *TickerBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickerBuilder().TickerData(nil)
type Tickers ¶
type Tickers struct {
// contains filtered or unexported fields
}
Tickers represents a collection of financial tickers with methods for retrieving aggregated data and analytics. It encapsulates a handle to the underlying C library for interacting with multiple tickers.
func (*Tickers) Free ¶
func (t *Tickers) Free()
Free releases the resources associated with the Tickers. It should be called when the Tickers is no longer needed to prevent memory leaks.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
tickers.Free()
fmt.Println("Tickers resources freed successfully")
}
func (*Tickers) GetBalanceSheet ¶
GetBalanceSheet retrieves the balance sheets for the tickers.
Parameters:
- frequency: The frequency of the statement ("annual" or "quarterly").
- formatted: Whether to return the statement in a formatted manner.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated balance sheet data for all tickers.
- error: An error if the balance sheet retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
balance, err := tickers.GetBalanceSheet("quarterly", true)
if err != nil {
fmt.Printf("Failed to get balance sheet: %v\n", err)
return
}
fmt.Printf("Balance Sheet:\n%v\n", balance)
}
func (*Tickers) GetCashflowStatement ¶
func (t *Tickers) GetCashflowStatement(frequency string, formatted bool) (dataframe.DataFrame, error)
GetCashflowStatement retrieves the cash flow statements for the tickers.
Parameters:
- frequency: The frequency of the statement ("annual" or "quarterly").
- formatted: Whether to return the statement in a formatted manner.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated cash flow statement data for all tickers.
- error: An error if the cash flow statement retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
cashflow, err := tickers.GetCashflowStatement("quarterly", true)
if err != nil {
fmt.Printf("Failed to get cash flow statement: %v\n", err)
return
}
fmt.Printf("Cash Flow Statement:\n%v\n", cashflow)
}
func (*Tickers) GetFinancialRatios ¶
GetFinancialRatios retrieves financial ratios for the tickers.
Parameters:
- frequency: The frequency of the ratios ("annual" or "quarterly").
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated financial ratios for all tickers.
- error: An error if the financial ratios retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
ratios, err := tickers.GetFinancialRatios("quarterly")
if err != nil {
fmt.Printf("Failed to get financial ratios: %v\n", err)
return
}
fmt.Printf("Financial Ratios:\n%v\n", ratios)
}
func (*Tickers) GetIncomeStatement ¶
GetIncomeStatement retrieves the income statements for the tickers.
Parameters:
- frequency: The frequency of the statement ("annual" or "quarterly").
- formatted: Whether to return the statement in a formatted manner.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated income statement data for all tickers.
- error: An error if the income statement retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
income, err := tickers.GetIncomeStatement("quarterly", true)
if err != nil {
fmt.Printf("Failed to get income statement: %v\n", err)
return
}
fmt.Printf("Income Statement:\n%v\n", income)
}
func (*Tickers) GetNews ¶
GetNews retrieves the latest news headlines for the tickers.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated news data for all tickers.
- error: An error if the news retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
news, err := tickers.GetNews()
if err != nil {
fmt.Printf("Failed to get news: %v\n", err)
return
}
fmt.Printf("News:\n%v\n", news)
}
func (*Tickers) GetOptionsChain ¶
GetOptionsChain retrieves the options chain for the tickers.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated options chain data for all tickers.
- error: An error if the options chain retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
options, err := tickers.GetOptionsChain()
if err != nil {
fmt.Printf("Failed to get options chain: %v\n", err)
return
}
fmt.Printf("Options Chain:\n%v\n", options)
}
func (*Tickers) GetPriceHistory ¶
GetPriceHistory retrieves the OHLCV (Open, High, Low, Close, Volume) price history for the tickers.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated price history data for all tickers.
- error: An error if the price history retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
history, err := tickers.GetPriceHistory()
if err != nil {
fmt.Printf("Failed to get price history: %v\n", err)
return
}
fmt.Printf("Price History:\n%v\n", history)
}
func (*Tickers) GetSummaryStats ¶
GetSummaryStats retrieves summary technical and fundamental statistics for the tickers.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated summary statistics for all tickers.
- error: An error if the statistics retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
summary, err := tickers.GetSummaryStats()
if err != nil {
fmt.Printf("Failed to get summary stats: %v\n", err)
return
}
fmt.Printf("Summary Stats:\n%v\n", summary)
}
func (*Tickers) GetTicker ¶
GetTicker retrieves a Ticker instance for a specific symbol from the Tickers collection.
Parameters:
- symbol: The ticker symbol to retrieve (e.g., "AAPL").
Returns:
- *Ticker: A pointer to the Ticker object for the specified symbol.
- error: An error if the Ticker retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
ticker, err := tickers.GetTicker("AAPL")
if err != nil {
fmt.Printf("Failed to get Ticker: %v\n", err)
return
}
defer ticker.Free()
fmt.Println("Successfully retrieved Ticker for AAPL")
}
func (*Tickers) Optimize ¶
func (t *Tickers) Optimize(objectiveFunction, assetConstraints, categoricalConstraints, weights string) (*Portfolio, error)
Optimize optimizes the portfolio of tickers based on the specified objective and constraints.
Parameters:
- objectiveFunction: The objective function for optimization (e.g., "max_sharpe").
- assetConstraints: JSON string defining asset-level constraints (e.g., "{}").
- categoricalConstraints: JSON string defining categorical constraints (e.g., "{}").
- weights: JSON string defining portfolio-level constraints (e.g., "{}").
Returns:
- *Portfolio: A pointer to the optimized Portfolio object.
- error: An error if the portfolio optimization fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
portfolio, err := tickers.Optimize("max_sharpe", "{}", "{}", "{}")
if err != nil {
fmt.Printf("Failed to optimize portfolio: %v\n", err)
return
}
defer portfolio.Free()
fmt.Println("Successfully optimized portfolio")
}
func (*Tickers) PerformanceStats ¶
PerformanceStats retrieves performance statistics for the tickers.
Returns:
- dataframe.DataFrame: A DataFrame containing aggregated performance statistics for all tickers (e.g., returns, volatility, Sharpe ratio).
- error: An error if the performance statistics retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
perfStats, err := tickers.PerformanceStats()
if err != nil {
fmt.Printf("Failed to get performance stats: %v\n", err)
return
}
fmt.Printf("Performance Stats:\n%v\n", perfStats)
}
func (*Tickers) Report ¶
Report retrieves a comprehensive analytics report for the tickers as an HTML object.
Parameters:
- reportType: The type of report to display (e.g., "performance", "financials", "options", "news").
Returns:
- HTML: An HTML object containing the report.
- error: An error if the report retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
report, err := tickers.Report("performance")
if err != nil {
fmt.Printf("Failed to get report: %v\n", err)
return
}
report.Show()
}
func (*Tickers) Returns ¶
Returns retrieves returns data for the tickers.
Returns:
- dataframe.DataFrame: A DataFrame containing returns data for all tickers.
- error: An error if the returns retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
"github.com/go-gota/gota/dataframe"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
returns, err := tickers.Returns()
if err != nil {
fmt.Printf("Failed to get returns: %v\n", err)
return
}
fmt.Printf("Returns:\n%v\n", returns)
}
func (*Tickers) ReturnsChart ¶
ReturnsChart retrieves the returns chart for the tickers as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the returns chart.
- error: An error if the chart retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
retChart, err := tickers.ReturnsChart(0, 0)
if err != nil {
fmt.Printf("Failed to get returns chart: %v\n", err)
return
}
retChart.Show()
}
func (*Tickers) ReturnsMatrix ¶
ReturnsMatrix retrieves the returns correlation matrix for the tickers as an HTML object.
Parameters:
- height: The height of the chart (0 for default).
- width: The width of the chart (0 for default).
Returns:
- HTML: An HTML object containing the returns correlation matrix.
- error: An error if the matrix retrieval fails.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
retMatrix, err := tickers.ReturnsMatrix(0, 0)
if err != nil {
fmt.Printf("Failed to get returns matrix: %v\n", err)
return
}
retMatrix.Show()
}
type TickersBuilder ¶
type TickersBuilder struct {
// contains filtered or unexported fields
}
TickersBuilder is used to construct a Tickers instance using the builder pattern. It allows for fluent configuration of the Tickers' parameters before creation.
func NewTickersBuilder ¶
func NewTickersBuilder() *TickersBuilder
NewTickersBuilder initializes a new TickersBuilder with default values. Defaults:
- symbols: nil
- startDate: ""
- endDate: ""
- interval: "1d"
- benchmarkSymbol: ""
- confidenceLevel: 0.95
- riskFreeRate: 0.02
- tickersData: nil
- benchmarkData: nil
Returns:
- *TickersBuilder: A pointer to the initialized TickersBuilder.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
builder := finalytics.NewTickersBuilder()
fmt.Println("TickersBuilder initialized")
}
func (*TickersBuilder) BenchmarkData ¶
func (b *TickersBuilder) BenchmarkData(benchmarkData *dataframe.DataFrame) *TickersBuilder
BenchmarkData sets custom benchmark data for the Tickers.
Parameters:
- benchmarkData: A DataFrame containing custom benchmark data (pass nil if not using custom data).
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().BenchmarkData(nil)
func (*TickersBuilder) BenchmarkSymbol ¶
func (b *TickersBuilder) BenchmarkSymbol(benchmarkSymbol string) *TickersBuilder
BenchmarkSymbol sets the benchmark symbol for the Tickers.
Parameters:
- benchmarkSymbol: The ticker symbol of the benchmark (e.g., "^GSPC").
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().BenchmarkSymbol("^GSPC")
func (*TickersBuilder) Build ¶
func (b *TickersBuilder) Build() (*Tickers, error)
Build constructs the Tickers instance with the configured parameters. The symbols parameter is required; other parameters are optional and use defaults if not set.
Returns:
- *Tickers: A pointer to the initialized Tickers object.
- error: An error if the Tickers creation fails or symbols is missing/empty.
Example:
package main
import (
"fmt"
"github.com/Nnamdi-sys/finalytics/go/finalytics"
)
func main() {
tickers, err := finalytics.NewTickersBuilder().
Symbols([]string{"AAPL", "MSFT"}).
StartDate("2023-01-01").
EndDate("2023-12-31").
Interval("1d").
BenchmarkSymbol("^GSPC").
ConfidenceLevel(0.95).
RiskFreeRate(0.02).
Build()
if err != nil {
fmt.Printf("Failed to create Tickers: %v\n", err)
return
}
defer tickers.Free()
fmt.Println("Tickers created successfully for AAPL and MSFT")
}
func (*TickersBuilder) ConfidenceLevel ¶
func (b *TickersBuilder) ConfidenceLevel(confidenceLevel float64) *TickersBuilder
ConfidenceLevel sets the confidence level for VaR and ES calculations.
Parameters:
- confidenceLevel: The confidence level (e.g., 0.95 for 95% confidence).
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().ConfidenceLevel(0.99)
func (*TickersBuilder) EndDate ¶
func (b *TickersBuilder) EndDate(endDate string) *TickersBuilder
EndDate sets the end date for the Tickers' data period.
Parameters:
- endDate: The end date in the format YYYY-MM-DD.
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().EndDate("2023-12-31")
func (*TickersBuilder) Interval ¶
func (b *TickersBuilder) Interval(interval string) *TickersBuilder
Interval sets the data interval for the Tickers.
Parameters:
- interval: The data interval (e.g., "2m", "5m", "15m", "30m", "1h", "1d", "1wk", "1mo", "3mo").
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().Interval("1d")
func (*TickersBuilder) RiskFreeRate ¶
func (b *TickersBuilder) RiskFreeRate(riskFreeRate float64) *TickersBuilder
RiskFreeRate sets the risk-free rate for calculations.
Parameters:
- riskFreeRate: The risk-free rate (e.g., 0.02 for 2%).
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().RiskFreeRate(0.03)
func (*TickersBuilder) StartDate ¶
func (b *TickersBuilder) StartDate(startDate string) *TickersBuilder
StartDate sets the start date for the Tickers' data period.
Parameters:
- startDate: The start date in the format YYYY-MM-DD.
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().StartDate("2023-01-01")
func (*TickersBuilder) Symbols ¶
func (b *TickersBuilder) Symbols(symbols []string) *TickersBuilder
Symbols sets the ticker symbols for the Tickers.
Parameters:
- symbols: A string slice of ticker symbols (e.g., []string{"AAPL", "MSFT"}).
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().Symbols([]string{"AAPL", "MSFT"})
func (*TickersBuilder) TickersData ¶
func (b *TickersBuilder) TickersData(tickersData []dataframe.DataFrame) *TickersBuilder
TickersData sets custom ticker data for the Tickers.
Parameters:
- tickersData: A slice of DataFrames containing custom ticker data for each symbol (pass nil or empty slice if not using custom data).
Returns:
- *TickersBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewTickersBuilder().TickersData(nil)