sedol adalah sebuah singkatan untuk stock exchange daily official list atau daftar pengkodifikasian indentitas dari sebuah sekuritas yang digunakan di inggris raya pada lembaga kliring.
penomoran ini diberikan oleh london stock exchange atas permintaan penerbit sekuritas dan ketentuan sedol ini berlaku sebagai national securities identifying number / nsin bagi keseluruhan penerbitan sekuritas di inggris raya dan juga merupakan bagian dari international securities identification number disingkat isin sebagaimana dengan ketentuan kodifikasi penomoran internasional yang berlaku secara global.
sedol pada periode sebelum 26 januari 2004 awalnya terdiri atas tujuh buah karater angka yang dibagi kedalam 2 bagian pengertian yaitu enam angka awal dan satu angka akhir sebagai digit pengkontrolan. pemakaian sedol untuk asia dan afrika dimulai dengan angka 6, sedangkan untuk inggris raya dimulai dengan angka 0 atau 3 dan untuk amerika serikat dimulai dengan angka 2.
kemudian pada periode sesudah 26 januari 2004, sedol berubah menjaadi campuran karakter huruf dengan angka, seperti dimulai dengan b000009.
dalam ketentuan sedol yang baru huruf hidup tidak dipergunakan lagi pada posisi capuran huruf dan angka.
angka pengontrolan pada sedol pembuatan penjumlahan keseluruhan tujuh karakter tersebut dengan angka 10.
pada angka pengontrolan adalah hasil perhitungan dari penjumlahan enam karakter pendahulunya. pada huruf melekat nilai 9 kemudian ditambahkan dengan nilai urutan huruf, sebagaimana pada b = 11 dan z = 35. walaupun huruf hidup tidak dipergunakan lagi pada sedol akan tetapi pada penghitungan tidak menghilangkan bobot penjumlahan (contoh: h = 17 dan j = 19), guna mempermudahkan perhitungan berikut rangkaian faktor penjumlahannya:
ketujuh 1 (digit pengontrolan)
nilai perkalian karakter pada bobotnya sedangan digit pengontrolan diperoleh dari hasil penjumlahannya dengan nilai 10, dimana dapat disebut keseluruhan enam karakter dikalikan sebagai berikut (10 - (jumlah dari modul 10) modul 10 sebagai penomoran sekuritas di inggris raya, sedol tetap berinduk pada isin dengan penambahan awalan 00 di depan kemudian diberlakukan ketentuan isin pada digit pengontrolannya.
bae systems: 0263494
the checksum can be calculated by multiplying the first six digits by their weightings:
(01, 23, 61, 37, 43, 99) = (0, 6, 6, 21, 12, 81)
then summing up the results:
0 + 6 + 6 + 21 + 12 + 81 = 126
the check digit is then calculated by:
(10 - (126 modulo 10)) modulo 10 = (10 - 6) modulo 10 = 4
function getsedolcheckdigit(const basesedol: string): integer;
weights: array[1..6] of integer = ( 1, 3, 1, 7, 3, 9 );
i, d: integer;
if length(basesedol) <> 6 then
'sedols without a check-digit must six characters long');
result := 0;
for i := 1 to 6 do begin
case basesedol[i] of
'0'..'9': d := ord(basesedol[i]) - ord('0');
'a'..'z': d := ord(basesedol[i]) - ord('a') + 10;
'sedols must have only digits and uppercase letters');
inc(result, d * weights[i]);
result := (10 - (result mod 10)) mod 10;
(other formulations as possible; some twice as fast):
'0123456789abcdefghijklmnopqrstuvwxyz' nb. sedol numerals
acs =: (10 | 1 3 1 7 3 9 +/@:* -)&.(sn i. |:) nb. checksum
use posix qw(strtol);
my @weights = (1, 3, 1, 7, 3, 9);
my ($sedol) = @_;
die "invalid sedol format: `$sedol'\n"
if $sedol !~ /^[0-9a-z]{6,7}$/;
my @chars = split //, $sedol;
my $sum = 0;
for my $i ( 0 .. $#weights )
my $char = $chars[$i];
my $value = (strtol $char, 36)[0];;
$sum += $value * $weights[$i];
return (10 - ($sum % 10)) % 10;
sedolweight = [1,3,1,7,3,9,1]
return len(sedol) == 7 and \
sedol.isalnum() and \
all(ch not in 'aeiou' for ch in sedol) and \
sum(int(ch, 36) * sedolweight[n]
for n,ch in enumerate(sedol)
) % 10 == 0
tmp = sum(int(ch,36) * sedolweight[n]
for n,ch in enumerate(sedol[:6])
return str( (10 - (tmp % 10)) % 10)
sedol = '0263494'
print sedol, checksum(sedol)
in visual basic
public function getsedolcheckdigit(str as string) as variant
' calculates the final digit of a six digit sedol code using the algo described on wikipedia
if len(str) <> 6 then
getsedolcheckdigit = "six chars only please"
dim mult(6) as integer
mult(1) = 1: mult(2) = 3: mult(3) = 1: mult(4) = 7: mult(5) = 3: mult(6) = 9
' didn't use array() to avoid option base problems
dim i, total as integer
dim s as string
total = 0
for i = 1 to 6
s = mid(str, i, 1)
total = total + iif(isnumeric(s), val(s), asc(s) - 55) * mult(i)
getsedolcheckdigit = (10 - (total mod 10)) mod 10
function issedolvalid(const sedol: string): boolean;
function hasonlyvalidchars: boolean;
validchars = ['0'..'9', 'a'..'z'];
for ch in sedol do begin
if not (ch in validchars) then begin
result := false;
result := true;
result := (length(sedol) = 7)
and (getsedolcheckdigit(copy(sedol, 1, 6)) = ord(sedol[7]) - ord('0'));
international securities identifying number
sedol validation code in c
london stock exchange
sedol master file technical spec. word document (see section 7)