Skip to main content
Our algorithm transforms employee insights into portfolio weights by balancing insider bullishness with peer network admiration, resulting in a robust ranking that’s resistant to manipulation.
This page provides a comprehensive overview of the mathematical foundation of our PageRank-inspired algorithm that determines company weights in the Backerville system.

🎯 Core Objective

Algorithm Overview
Our algorithm aims to produce a ranking score SiS_i for each company CiC_i in the sector. This score becomes the target weight for that company in the village portfolio. The algorithm balances two critical signals:

Insider Bullishness

How confident employees are in their own company’s future

Peer Admiration

Which other companies are most respected by members of the village

📈 Calculating Bullishness Scores

For each company CiC_i, we compute a bullishness score BiB_i based on employee ratings: Bi=eEiω(e)beieEiω(e)B_i = \frac{\sum_{e \in E_i} \omega(e) \cdot b_{e \to i}}{\sum_{e \in E_i} \omega(e)}
Bullishness Score Formula
Where:
  • EiE_i is the set of eligible employees at company ii
  • ω(e)\omega(e) is the weight of employee ee (based on tenure and seniority)
  • beib_{e \to i} is the 1-100 bullishness rating provided by employee ee
  • The numerator sums the weighted ratings across all eligible employees
  • The denominator normalizes by the sum of employee weights
This weighted average ensures that more senior employees or those with longer tenure have greater influence on the bullishness score.

🔗 Building the Admiration Graph

  • Graph Construction
  • Example Graph Visualization
  • Mathematical Definition
1

Define Nodes

Each company CiC_i in the sector becomes a node in the graph
2

Create Directed Edges

Add directed edges from company CjC_j to company CiC_i when employees at CjC_j admire CiC_i
3

Calculate Edge Weights

Set edge weights wjiw_{ji} based on the strength of admiration from CjC_j to CiC_i
4

Normalize Outgoing Edges

Ensure outgoing edges from each company sum to 1: iwji=1\sum_i w_{ji} = 1 for all jj

🔄 The Iterative Algorithm

Iterative Algorithm Flowchart
We begin by assigning equal scores to all companies:Si(0)=1nfor each company i=1,2,,nS_i^{(0)} = \frac{1}{n} \quad \text{for each company } i = 1, 2, \ldots, nThis gives each company an equal starting point, regardless of size or reputation.
On each iteration tt+1t \to t+1, we update each company’s score:Si(t+1)=(1δ)Bi100+δj=1n(Sj(t)wji)S_i^{(t+1)} = (1 - \delta) \cdot \frac{B_i}{100} + \delta \sum_{j=1}^n \left( S_j^{(t)} \cdot w_{ji} \right)Where:
  • δ[0,1]\delta \in [0,1] is the damping factor (typically 0.85)
  • Bi/100B_i/100 normalizes the bullishness score to [0,1]
  • wjiw_{ji} is the admiration weight from company jj to company ii
After each iteration, we normalize scores to sum to 1:Si(t+1)Si(t+1)k=1nSk(t+1)S_i^{(t+1)} \leftarrow \frac{S_i^{(t+1)}}{\sum_{k=1}^n S_k^{(t+1)}}This ensures that the scores represent proportions that can be directly used as portfolio weights.
We repeat steps 2-3 until convergence:maxiSi(t+1)Si(t)<ϵ\max_i |S_i^{(t+1)} - S_i^{(t)}| < \epsilonWhere ϵ\epsilon is a small threshold (typically 0.0001). This ensures the algorithm runs until the scores stabilize.

⚖️ Interpreting the Damping Factor

The damping factor (delta) balances the two main inputs:
  • At delta = 0: Only bullishness scores matter (100% bullishness, 0% network)
  • At delta = 0.5: Equal weight to both factors (50% bullishness, 50% network)
  • At delta = 0.85: More weight to network (15% bullishness, 85% network)
  • At delta = 1.0: Only the network structure matters (0% bullishness, 100% network)
We use a default value of 0.85, which means that 85% of a company’s score comes from network admiration (how much other companies admire it) and 15% comes from insider bullishness (how confident its employees are). A lower damping factor (around 0.6) would emphasize insider confidence more heavily, while a higher value (around 0.9) would give more weight to the network structure.

Mathematical Intuition

Our algorithm can be understood as finding the equilibrium in a flow of “reputation” through the network of companies, where reputation comes both from internal confidence and external validation.
  1. Each company has some inherent reputation from its insiders (bullishness)
  2. Companies also receive reputation from others who admire them
  3. The importance of an admirer’s opinion is proportional to its own reputation
  4. The equilibrium distribution of this reputation flow determines the final scores
This approach ensures that companies highly regarded by other well-respected companies receive appropriately higher scores, creating a robust ranking system resistant to manipulation.

Example Computation

  • Simple Example
  • Iteration Process
  • Implementation Pseudocode
Three-Company Example
For a simple example with three companies:
  1. Initial values: S1(0)=S2(0)=S3(0)=1/3S_1^{(0)} = S_2^{(0)} = S_3^{(0)} = 1/3
  2. Bullishness scores: B1=90,B2=80,B3=70B_1 = 90, B_2 = 80, B_3 = 70
  3. Admiration weights:
    • w12=0.7,w13=0.3w_{12} = 0.7, w_{13} = 0.3 (Company 1 admires Companies 2 and 3)
    • w21=0.6,w23=0.4w_{21} = 0.6, w_{23} = 0.4 (Company 2 admires Companies 1 and 3)
    • w31=0.5,w32=0.5w_{31} = 0.5, w_{32} = 0.5 (Company 3 admires Companies 1 and 2)
After convergence with δ=0.85\delta = 0.85, we might get: S1=0.38,S2=0.34,S3=0.28S_1 = 0.38, S_2 = 0.34, S_3 = 0.28These values become the target portfolio weights for the village.