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) PortfolioValueChart(height, width uint) (HTML, error)
- func (p *Portfolio) Report(reportType string) (HTML, error)
- func (p *Portfolio) ReturnsMatrix(height, width uint) (HTML, error)
- func (p *Portfolio) TransactionHistory() (dataframe.DataFrame, error)
- func (p *Portfolio) UpdateDates(startDate, endDate string) 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) RebalanceStrategy(rebalanceStrategy string) *PortfolioBuilder
- func (b *PortfolioBuilder) RiskFreeRate(riskFreeRate float64) *PortfolioBuilder
- func (b *PortfolioBuilder) ScheduledCashFlows(scheduledCashFlows string) *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) Transactions(transactions string) *PortfolioBuilder
- func (b *PortfolioBuilder) Weights(weights string) *PortfolioBuilder
- type Screener
- type ScreenerBuilder
- func (b *ScreenerBuilder) AddFilter(filter string) *ScreenerBuilder
- func (b *ScreenerBuilder) Build() (*Screener, error)
- func (b *ScreenerBuilder) Offset(offset uint) *ScreenerBuilder
- func (b *ScreenerBuilder) QuoteType(quoteType string) *ScreenerBuilder
- func (b *ScreenerBuilder) Size(size uint) *ScreenerBuilder
- func (b *ScreenerBuilder) SortDescending(descending bool) *ScreenerBuilder
- func (b *ScreenerBuilder) SortField(sortField string) *ScreenerBuilder
- 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) PortfolioValueChart ¶ added in v0.2.0
PortfolioValueChart retrieves the portfolio value over time 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 portfolio value chart.
- error: An error if the chart retrieval fails.
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()
}
func (*Portfolio) TransactionHistory ¶ added in v0.2.0
TransactionHistory retrieves the transaction history table for the portfolio.
Returns a table of all transaction events during the simulation, including rebalances, cash flows, and combined events. Each row includes portfolio value before/after, per-asset values, trade amounts, turnover, cumulative TWR and MWR.
Returns:
- dataframe.DataFrame: A DataFrame containing the transaction history.
- error: An error if the retrieval fails.
func (*Portfolio) UpdateDates ¶ added in v0.2.0
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()
}
UpdateDates updates the portfolio's date range and re-fetches data for out-of-sample evaluation.
This method is for portfolios built from Yahoo Finance data (not custom data). It rebuilds all underlying ticker and benchmark data for the new date range. The optimization result (weights) is preserved so they can be evaluated out-of-sample on the new period.
After calling this method, call PerformanceStats() to evaluate the optimized weights on the new data (it recomputes automatically).
Parameters:
- startDate: New start date (e.g., "2024-01-01").
- endDate: New end date (e.g., "2024-12-31").
Returns:
- error: An error if the update fails.
Example:
portfolio.UpdateDates("2024-01-01", "2024-12-31")
stats, _ := portfolio.PerformanceStats()
fmt.Println(stats)
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. Supported values: "max_sharpe", "max_sortino", "max_return", "min_vol", "min_var", "min_cvar", "min_drawdown", "risk_parity", "max_diversification", "hierarchical_risk_parity"
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
Example:
builder := finalytics.NewPortfolioBuilder().ObjectiveFunction("max_sharpe")
func (*PortfolioBuilder) RebalanceStrategy ¶ added in v0.2.0
func (b *PortfolioBuilder) RebalanceStrategy(rebalanceStrategy string) *PortfolioBuilder
RebalanceStrategy sets the rebalancing strategy for the portfolio simulation.
Parameters:
- rebalanceStrategy: JSON string defining the strategy. Formats: `{"type":"calendar","frequency":"monthly"}` — rebalance on a fixed calendar schedule `{"type":"threshold","threshold":0.05}` — rebalance when any weight drifts > threshold `{"type":"calendar_or_threshold","frequency":"quarterly","threshold":0.05}` — either trigger Frequency values: "monthly", "quarterly", "semi_annually", "annually"
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
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) ScheduledCashFlows ¶ added in v0.2.0
func (b *PortfolioBuilder) ScheduledCashFlows(scheduledCashFlows string) *PortfolioBuilder
ScheduledCashFlows sets recurring cash flow schedules for the portfolio simulation.
Parameters:
- scheduledCashFlows: JSON string defining the schedules. Format: `[{"amount":2000,"frequency":"monthly","start_date":null,"end_date":null,"allocation":"pro_rata"}]` Amount: positive = addition, negative = withdrawal. Allocation: "pro_rata", "rebalance", or {"custom":[0.4,0.3,0.2,0.1]}
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
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) Transactions ¶ added in v0.2.0
func (b *PortfolioBuilder) Transactions(transactions string) *PortfolioBuilder
Transactions sets ad-hoc per-asset transactions (additions / withdrawals).
Parameters:
- transactions: JSON string defining transactions. Format: `[{"date":"2024-01-15","ticker":"AAPL","amount":5000},{"date":"2024-06-01","ticker":"MSFT","amount":-2000}]` Positive amounts are additions, negative are withdrawals.
Returns:
- *PortfolioBuilder: The builder instance for method chaining.
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) Display ¶ added in v0.2.0
Display renders the screener overview and metrics as an HTML report and opens it in the default browser.
Returns:
- error: An error if the display retrieval or browser launch fails.
Example:
screener, err := finalytics.NewScreenerBuilder().
QuoteType("EQUITY").
AddFilter(`{"operator":"eq","operands":["exchange","NMS"]}`).
SortField("intradaymarketcap").
Size(10).
Build()
if err != nil {
panic(err)
}
defer screener.Free()
screener.Display()
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 ScreenerBuilder ¶ added in v0.2.0
type ScreenerBuilder struct {
// contains filtered or unexported fields
}
ScreenerBuilder provides a fluent builder interface for constructing a Screener. Use NewScreenerBuilder() to create a new builder, then chain methods to configure it, and call Build() to create the Screener.
Defaults:
- quoteType: "EQUITY"
- filters: [] (empty)
- sortField: "" (no sorting)
- sortDescending: true
- offset: 0
- size: 250
func NewScreenerBuilder ¶ added in v0.2.0
func NewScreenerBuilder() *ScreenerBuilder
NewScreenerBuilder initializes a new ScreenerBuilder with default values.
Returns:
- *ScreenerBuilder: A pointer to the initialized ScreenerBuilder.
Example:
screener, err := finalytics.NewScreenerBuilder().
QuoteType("EQUITY").
AddFilter(`{"operator":"eq","operands":["exchange","NMS"]}`).
SortField("intradaymarketcap").
SortDescending(true).
Size(10).
Build()
func (*ScreenerBuilder) AddFilter ¶ added in v0.2.0
func (b *ScreenerBuilder) AddFilter(filter string) *ScreenerBuilder
AddFilter appends a filter condition to the screener. Each filter should be a JSON string with the format:
{"operator": "<op>", "operands": ["<metric>", <value>]}
Supported operators: "eq", "gte", "lte", "gt", "lt", "btwn".
Parameters:
- filter: A JSON string representing a single filter condition.
Returns:
- *ScreenerBuilder: The builder instance for method chaining.
Example:
builder.AddFilter(`{"operator":"eq","operands":["exchange","NMS"]}`)
builder.AddFilter(`{"operator":"gte","operands":["intradaymarketcap",10000000000]}`)
func (*ScreenerBuilder) Build ¶ added in v0.2.0
func (b *ScreenerBuilder) Build() (*Screener, error)
Build constructs a Screener with the configured parameters by calling the underlying FFI.
Returns:
- *Screener: A pointer to the initialized Screener object.
- error: An error if the Screener creation fails.
Example:
screener, err := finalytics.NewScreenerBuilder().
QuoteType("EQUITY").
AddFilter(`{"operator":"eq","operands":["exchange","NMS"]}`).
AddFilter(`{"operator":"eq","operands":["sector","Technology"]}`).
AddFilter(`{"operator":"gte","operands":["intradaymarketcap",10000000000]}`).
AddFilter(`{"operator":"gte","operands":["returnonequity.lasttwelvemonths",0.15]}`).
SortField("intradaymarketcap").
SortDescending(true).
Offset(0).
Size(10).
Build()
if err != nil {
panic(err)
}
defer screener.Free()
func (*ScreenerBuilder) Offset ¶ added in v0.2.0
func (b *ScreenerBuilder) Offset(offset uint) *ScreenerBuilder
Offset sets the starting index for pagination.
Parameters:
- offset: The starting index (e.g., 0 for the first page).
Returns:
- *ScreenerBuilder: The builder instance for method chaining.
func (*ScreenerBuilder) QuoteType ¶ added in v0.2.0
func (b *ScreenerBuilder) QuoteType(quoteType string) *ScreenerBuilder
QuoteType sets the type of financial instrument to screen.
Parameters:
- quoteType: The quote type (e.g., "EQUITY", "MUTUALFUND", "ETF", "INDEX", "FUTURE", "CRYPTO").
Returns:
- *ScreenerBuilder: The builder instance for method chaining.
func (*ScreenerBuilder) Size ¶ added in v0.2.0
func (b *ScreenerBuilder) Size(size uint) *ScreenerBuilder
Size sets the maximum number of results to return.
Parameters:
- size: The maximum number of results (e.g., 10 for top 10).
Returns:
- *ScreenerBuilder: The builder instance for method chaining.
func (*ScreenerBuilder) SortDescending ¶ added in v0.2.0
func (b *ScreenerBuilder) SortDescending(descending bool) *ScreenerBuilder
SortDescending sets whether to sort in descending order.
Parameters:
- descending: true for descending order, false for ascending order.
Returns:
- *ScreenerBuilder: The builder instance for method chaining.
func (*ScreenerBuilder) SortField ¶ added in v0.2.0
func (b *ScreenerBuilder) SortField(sortField string) *ScreenerBuilder
SortField sets the metric to sort results by.
Parameters:
- sortField: The metric name to sort by (e.g., "intradaymarketcap"). Use "" for no sorting.
Returns:
- *ScreenerBuilder: The builder instance for method chaining.
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)